Skip to content
This repository has been archived by the owner on Jun 6, 2019. It is now read-only.

Latest commit

 

History

History
3532 lines (3314 loc) · 224 KB

File metadata and controls

3532 lines (3314 loc) · 224 KB
id title
B5835256-0EAF-4C8F-96C3-DFA5492E9127
From 9.8.0 to 9.8.2

API diff

(Classic) mscorlib.dll

(Classic) System.dll

(Classic) System.Core.dll

(Classic) System.Numerics.dll

(Classic) System.Data.dll

(Classic) System.ServiceModel.dll

(Classic) System.IO.Compression.dll

(Classic) monotouch.dll

(Unified) Xamarin.iOS.dll


<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

mscorlib.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace Microsoft.Win32

New Type Microsoft.Win32.Registry

public static class Registry {
	// fields
	public static RegistryKey ClassesRoot;
	public static RegistryKey CurrentConfig;
	public static RegistryKey CurrentUser;
<span class='added added-field ' data-is-non-breaking="">[Obsolete ("Use PerformanceData instead")]
public static RegistryKey DynData;</span>
<span class='added added-field ' data-is-non-breaking="">public static RegistryKey LocalMachine;</span>
<span class='added added-field ' data-is-non-breaking="">public static RegistryKey PerformanceData;</span>
<span class='added added-field ' data-is-non-breaking="">public static RegistryKey Users;</span>
// methods
<span class='added added-method ' data-is-non-breaking="">public static object GetValue (string keyName, string valueName, object defaultValue);</span>
<span class='added added-method ' data-is-non-breaking="">public static void SetValue (string keyName, string valueName, object value);</span>
<span class='added added-method ' data-is-non-breaking="">public static void SetValue (string keyName, string valueName, object value, RegistryValueKind valueKind);</span>

}

New Type Microsoft.Win32.RegistryHive

[Serializable]
public enum RegistryHive {
	ClassesRoot = -2147483648,
	CurrentConfig = -2147483643,
	CurrentUser = -2147483647,
	DynData = -2147483642,
	LocalMachine = -2147483646,
	PerformanceData = -2147483644,
	Users = -2147483645,
}

New Type Microsoft.Win32.RegistryKey

public sealed class RegistryKey : System.IDisposable {
	// methods
	public RegistryKey CreateSubKey (string subkey);
	public virtual void Dispose ();
	public object GetValue (string name, object defaultValue);
	public static object GetValue (string keyName, string valueName, object defaultValue);
	public RegistryKey OpenSubKey (string name, bool writable);
	public void SetValue (string name, object value);
	public void SetValue (string name, object value, RegistryValueKind valueKind);
}

New Type Microsoft.Win32.RegistryValueKind

[Serializable]
public enum RegistryValueKind {
	Binary = 3,
	DWord = 4,
	ExpandString = 2,
	MultiString = 7,
	None = -1,
	QWord = 11,
	String = 1,
	Unknown = 0,
}

New Type Microsoft.Win32.RegistryValueOptions

[Serializable]
[Flags]
public enum RegistryValueOptions {
	DoNotExpandEnvironmentNames = 1,
	None = 0,
}

Namespace Microsoft.Win32.SafeHandles

New Type Microsoft.Win32.SafeHandles.SafeAccessTokenHandle

public sealed class SafeAccessTokenHandle : System.Runtime.InteropServices.SafeHandle, System.IDisposable {
	// constructors
	public SafeAccessTokenHandle ();
	// properties
	public override bool IsInvalid { get; }
	// methods
	protected override bool ReleaseHandle ();
}

Namespace System.Diagnostics.Tracing

New Type System.Diagnostics.Tracing.EventDataAttribute

public class EventDataAttribute : System.Attribute {
	// constructors
	public EventDataAttribute ();
	// properties
	public string Name { get; set; }
}

New Type System.Diagnostics.Tracing.EventFieldAttribute

public class EventFieldAttribute : System.Attribute {
	// constructors
	public EventFieldAttribute ();
	// properties
	public EventFieldFormat Format { get; set; }
	public EventFieldTags Tags { get; set; }
}

New Type System.Diagnostics.Tracing.EventFieldFormat

[Serializable]
public enum EventFieldFormat {
	Boolean = 3,
	Default = 0,
	HResult = 15,
	Hexadecimal = 4,
	Json = 12,
	String = 2,
	Xml = 11,
}

New Type System.Diagnostics.Tracing.EventFieldTags

[Serializable]
[Flags]
public enum EventFieldTags {
	None = 0,
}

New Type System.Diagnostics.Tracing.EventIgnoreAttribute

public class EventIgnoreAttribute : System.Attribute {
	// constructors
	public EventIgnoreAttribute ();
}

New Type System.Diagnostics.Tracing.EventListener

public abstract class EventListener : System.IDisposable {
	// constructors
	protected EventListener ();
	// methods
	public void DisableEvents (EventSource eventSource);
	public virtual void Dispose ();
	public void EnableEvents (EventSource eventSource, EventLevel level);
	public void EnableEvents (EventSource eventSource, EventLevel level, EventKeywords matchAnyKeyword);
	public void EnableEvents (EventSource eventSource, EventLevel level, EventKeywords matchAnyKeyword, System.Collections.Generic.IDictionary<System.String,System.String> arguments);
	public static int EventSourceIndex (EventSource eventSource);
	protected virtual void OnEventSourceCreated (EventSource eventSource);
	protected virtual void OnEventWritten (EventWrittenEventArgs eventData);
}

New Type System.Diagnostics.Tracing.EventManifestOptions

[Serializable]
[Flags]
public enum EventManifestOptions {
	AllCultures = 2,
	AllowEventSourceOverride = 8,
	None = 0,
	OnlyIfNeededForRegistration = 4,
	Strict = 1,
}

New Type System.Diagnostics.Tracing.EventSourceException

public class EventSourceException : System.Exception, System.Runtime.Serialization.ISerializable {
	// constructors
	public EventSourceException ();
	public EventSourceException (string message);
	public EventSourceException (string message, System.Exception innerException);
}

New Type System.Diagnostics.Tracing.EventWrittenEventArgs

public class EventWrittenEventArgs : System.EventArgs {
	// properties
	public System.Guid ActivityId { get; }
	public EventChannel Channel { get; }
	public int EventId { get; }
	public string EventName { get; }
	public EventSource EventSource { get; }
	public EventKeywords Keywords { get; }
	public EventLevel Level { get; }
	public string Message { get; }
	public EventOpcode Opcode { get; }
	public System.Collections.ObjectModel.ReadOnlyCollection<object> Payload { get; }
	public System.Collections.ObjectModel.ReadOnlyCollection<string> PayloadNames { get; }
	public System.Guid RelatedActivityId { get; }
	public EventTags Tags { get; }
	public EventTask Task { get; }
	public byte Version { get; }
}

Namespace System.Globalization

Type Changed: System.Globalization.CultureInfo

Modified properties:

public CultureInfo CurrentCulture { get; set; }
public CultureInfo CurrentUICulture { get; set; }

Namespace System.Reflection

Type Changed: System.Reflection.AssemblyName

Modified properties:

public string CultureName { get; set; }

Namespace System.Reflection.Emit

New Type System.Reflection.Emit.FlowControl

[Serializable]
public enum FlowControl {
	Branch = 0,
	Break = 1,
	Call = 2,
	Cond_Branch = 3,
	Meta = 4,
	Next = 5,
<span class='added added-field ' data-is-non-breaking="">[Obsolete ("This API has been deprecated.")]
Phi = 6,</span>
<span class='added added-field ' data-is-non-breaking="">Return = 7,</span>
<span class='added added-field ' data-is-non-breaking="">Throw = 8,</span>

}

New Type System.Reflection.Emit.OpCode

public struct OpCode {
	// properties
	public FlowControl FlowControl { get; }
	public string Name { get; }
	public OpCodeType OpCodeType { get; }
	public OperandType OperandType { get; }
	public int Size { get; }
	public StackBehaviour StackBehaviourPop { get; }
	public StackBehaviour StackBehaviourPush { get; }
	public short Value { get; }
	// methods
	public override bool Equals (object obj);
	public bool Equals (OpCode obj);
	public override int GetHashCode ();
	public override string ToString ();
	public static bool op_Equality (OpCode a, OpCode b);
	public static bool op_Inequality (OpCode a, OpCode b);
}

New Type System.Reflection.Emit.OpCodeType

[Serializable]
public enum OpCodeType {
<span class='added added-field ' data-is-non-breaking="">[Obsolete ("This API has been deprecated.")]
Annotation = 0,</span>
<span class='added added-field ' data-is-non-breaking="">Macro = 1,</span>
<span class='added added-field ' data-is-non-breaking="">Nternal = 2,</span>
<span class='added added-field ' data-is-non-breaking="">Objmodel = 3,</span>
<span class='added added-field ' data-is-non-breaking="">Prefix = 4,</span>
<span class='added added-field ' data-is-non-breaking="">Primitive = 5,</span>

}

New Type System.Reflection.Emit.OpCodes

public class OpCodes {
	// fields
	public static OpCode Add;
	public static OpCode Add_Ovf;
	public static OpCode Add_Ovf_Un;
	public static OpCode And;
	public static OpCode Arglist;
	public static OpCode Beq;
	public static OpCode Beq_S;
	public static OpCode Bge;
	public static OpCode Bge_S;
	public static OpCode Bge_Un;
	public static OpCode Bge_Un_S;
	public static OpCode Bgt;
	public static OpCode Bgt_S;
	public static OpCode Bgt_Un;
	public static OpCode Bgt_Un_S;
	public static OpCode Ble;
	public static OpCode Ble_S;
	public static OpCode Ble_Un;
	public static OpCode Ble_Un_S;
	public static OpCode Blt;
	public static OpCode Blt_S;
	public static OpCode Blt_Un;
	public static OpCode Blt_Un_S;
	public static OpCode Bne_Un;
	public static OpCode Bne_Un_S;
	public static OpCode Box;
	public static OpCode Br;
	public static OpCode Br_S;
	public static OpCode Break;
	public static OpCode Brfalse;
	public static OpCode Brfalse_S;
	public static OpCode Brtrue;
	public static OpCode Brtrue_S;
	public static OpCode Call;
	public static OpCode Calli;
	public static OpCode Callvirt;
	public static OpCode Castclass;
	public static OpCode Ceq;
	public static OpCode Cgt;
	public static OpCode Cgt_Un;
	public static OpCode Ckfinite;
	public static OpCode Clt;
	public static OpCode Clt_Un;
	public static OpCode Constrained;
	public static OpCode Conv_I;
	public static OpCode Conv_I1;
	public static OpCode Conv_I2;
	public static OpCode Conv_I4;
	public static OpCode Conv_I8;
	public static OpCode Conv_Ovf_I;
	public static OpCode Conv_Ovf_I1;
	public static OpCode Conv_Ovf_I1_Un;
	public static OpCode Conv_Ovf_I2;
	public static OpCode Conv_Ovf_I2_Un;
	public static OpCode Conv_Ovf_I4;
	public static OpCode Conv_Ovf_I4_Un;
	public static OpCode Conv_Ovf_I8;
	public static OpCode Conv_Ovf_I8_Un;
	public static OpCode Conv_Ovf_I_Un;
	public static OpCode Conv_Ovf_U;
	public static OpCode Conv_Ovf_U1;
	public static OpCode Conv_Ovf_U1_Un;
	public static OpCode Conv_Ovf_U2;
	public static OpCode Conv_Ovf_U2_Un;
	public static OpCode Conv_Ovf_U4;
	public static OpCode Conv_Ovf_U4_Un;
	public static OpCode Conv_Ovf_U8;
	public static OpCode Conv_Ovf_U8_Un;
	public static OpCode Conv_Ovf_U_Un;
	public static OpCode Conv_R4;
	public static OpCode Conv_R8;
	public static OpCode Conv_R_Un;
	public static OpCode Conv_U;
	public static OpCode Conv_U1;
	public static OpCode Conv_U2;
	public static OpCode Conv_U4;
	public static OpCode Conv_U8;
	public static OpCode Cpblk;
	public static OpCode Cpobj;
	public static OpCode Div;
	public static OpCode Div_Un;
	public static OpCode Dup;
	public static OpCode Endfilter;
	public static OpCode Endfinally;
	public static OpCode Initblk;
	public static OpCode Initobj;
	public static OpCode Isinst;
	public static OpCode Jmp;
	public static OpCode Ldarg;
	public static OpCode Ldarg_0;
	public static OpCode Ldarg_1;
	public static OpCode Ldarg_2;
	public static OpCode Ldarg_3;
	public static OpCode Ldarg_S;
	public static OpCode Ldarga;
	public static OpCode Ldarga_S;
	public static OpCode Ldc_I4;
	public static OpCode Ldc_I4_0;
	public static OpCode Ldc_I4_1;
	public static OpCode Ldc_I4_2;
	public static OpCode Ldc_I4_3;
	public static OpCode Ldc_I4_4;
	public static OpCode Ldc_I4_5;
	public static OpCode Ldc_I4_6;
	public static OpCode Ldc_I4_7;
	public static OpCode Ldc_I4_8;
	public static OpCode Ldc_I4_M1;
	public static OpCode Ldc_I4_S;
	public static OpCode Ldc_I8;
	public static OpCode Ldc_R4;
	public static OpCode Ldc_R8;
	public static OpCode Ldelem;
	public static OpCode Ldelem_I;
	public static OpCode Ldelem_I1;
	public static OpCode Ldelem_I2;
	public static OpCode Ldelem_I4;
	public static OpCode Ldelem_I8;
	public static OpCode Ldelem_R4;
	public static OpCode Ldelem_R8;
	public static OpCode Ldelem_Ref;
	public static OpCode Ldelem_U1;
	public static OpCode Ldelem_U2;
	public static OpCode Ldelem_U4;
	public static OpCode Ldelema;
	public static OpCode Ldfld;
	public static OpCode Ldflda;
	public static OpCode Ldftn;
	public static OpCode Ldind_I;
	public static OpCode Ldind_I1;
	public static OpCode Ldind_I2;
	public static OpCode Ldind_I4;
	public static OpCode Ldind_I8;
	public static OpCode Ldind_R4;
	public static OpCode Ldind_R8;
	public static OpCode Ldind_Ref;
	public static OpCode Ldind_U1;
	public static OpCode Ldind_U2;
	public static OpCode Ldind_U4;
	public static OpCode Ldlen;
	public static OpCode Ldloc;
	public static OpCode Ldloc_0;
	public static OpCode Ldloc_1;
	public static OpCode Ldloc_2;
	public static OpCode Ldloc_3;
	public static OpCode Ldloc_S;
	public static OpCode Ldloca;
	public static OpCode Ldloca_S;
	public static OpCode Ldnull;
	public static OpCode Ldobj;
	public static OpCode Ldsfld;
	public static OpCode Ldsflda;
	public static OpCode Ldstr;
	public static OpCode Ldtoken;
	public static OpCode Ldvirtftn;
	public static OpCode Leave;
	public static OpCode Leave_S;
	public static OpCode Localloc;
	public static OpCode Mkrefany;
	public static OpCode Mul;
	public static OpCode Mul_Ovf;
	public static OpCode Mul_Ovf_Un;
	public static OpCode Neg;
	public static OpCode Newarr;
	public static OpCode Newobj;
	public static OpCode Nop;
	public static OpCode Not;
	public static OpCode Or;
	public static OpCode Pop;
	public static OpCode Prefix1;
	public static OpCode Prefix2;
	public static OpCode Prefix3;
	public static OpCode Prefix4;
	public static OpCode Prefix5;
	public static OpCode Prefix6;
	public static OpCode Prefix7;
	public static OpCode Prefixref;
	public static OpCode Readonly;
	public static OpCode Refanytype;
	public static OpCode Refanyval;
	public static OpCode Rem;
	public static OpCode Rem_Un;
	public static OpCode Ret;
	public static OpCode Rethrow;
	public static OpCode Shl;
	public static OpCode Shr;
	public static OpCode Shr_Un;
	public static OpCode Sizeof;
	public static OpCode Starg;
	public static OpCode Starg_S;
	public static OpCode Stelem;
	public static OpCode Stelem_I;
	public static OpCode Stelem_I1;
	public static OpCode Stelem_I2;
	public static OpCode Stelem_I4;
	public static OpCode Stelem_I8;
	public static OpCode Stelem_R4;
	public static OpCode Stelem_R8;
	public static OpCode Stelem_Ref;
	public static OpCode Stfld;
	public static OpCode Stind_I;
	public static OpCode Stind_I1;
	public static OpCode Stind_I2;
	public static OpCode Stind_I4;
	public static OpCode Stind_I8;
	public static OpCode Stind_R4;
	public static OpCode Stind_R8;
	public static OpCode Stind_Ref;
	public static OpCode Stloc;
	public static OpCode Stloc_0;
	public static OpCode Stloc_1;
	public static OpCode Stloc_2;
	public static OpCode Stloc_3;
	public static OpCode Stloc_S;
	public static OpCode Stobj;
	public static OpCode Stsfld;
	public static OpCode Sub;
	public static OpCode Sub_Ovf;
	public static OpCode Sub_Ovf_Un;
	public static OpCode Switch;
	public static OpCode Tailcall;
	public static OpCode Throw;
	public static OpCode Unaligned;
	public static OpCode Unbox;
	public static OpCode Unbox_Any;
	public static OpCode Volatile;
	public static OpCode Xor;
	// methods
	public static bool TakesSingleByteArgument (OpCode inst);
}

New Type System.Reflection.Emit.OperandType

[Serializable]
public enum OperandType {
	InlineBrTarget = 0,
	InlineField = 1,
	InlineI = 2,
	InlineI8 = 3,
	InlineMethod = 4,
	InlineNone = 5,
<span class='added added-field ' data-is-non-breaking="">[Obsolete ("This API has been deprecated.")]
InlinePhi = 6,</span>
<span class='added added-field ' data-is-non-breaking="">InlineR = 7,</span>
<span class='added added-field ' data-is-non-breaking="">InlineSig = 9,</span>
<span class='added added-field ' data-is-non-breaking="">InlineString = 10,</span>
<span class='added added-field ' data-is-non-breaking="">InlineSwitch = 11,</span>
<span class='added added-field ' data-is-non-breaking="">InlineTok = 12,</span>
<span class='added added-field ' data-is-non-breaking="">InlineType = 13,</span>
<span class='added added-field ' data-is-non-breaking="">InlineVar = 14,</span>
<span class='added added-field ' data-is-non-breaking="">ShortInlineBrTarget = 15,</span>
<span class='added added-field ' data-is-non-breaking="">ShortInlineI = 16,</span>
<span class='added added-field ' data-is-non-breaking="">ShortInlineR = 17,</span>
<span class='added added-field ' data-is-non-breaking="">ShortInlineVar = 18,</span>

}

New Type System.Reflection.Emit.PackingSize

[Serializable]
public enum PackingSize {
	Size1 = 1,
	Size128 = 128,
	Size16 = 16,
	Size2 = 2,
	Size32 = 32,
	Size4 = 4,
	Size64 = 64,
	Size8 = 8,
	Unspecified = 0,
}

New Type System.Reflection.Emit.StackBehaviour

[Serializable]
public enum StackBehaviour {
	Pop0 = 0,
	Pop1 = 1,
	Pop1_pop1 = 2,
	Popi = 3,
	Popi_pop1 = 4,
	Popi_popi = 5,
	Popi_popi8 = 6,
	Popi_popi_popi = 7,
	Popi_popr4 = 8,
	Popi_popr8 = 9,
	Popref = 10,
	Popref_pop1 = 11,
	Popref_popi = 12,
	Popref_popi_pop1 = 28,
	Popref_popi_popi = 13,
	Popref_popi_popi8 = 14,
	Popref_popi_popr4 = 15,
	Popref_popi_popr8 = 16,
	Popref_popi_popref = 17,
	Push0 = 18,
	Push1 = 19,
	Push1_push1 = 20,
	Pushi = 21,
	Pushi8 = 22,
	Pushr4 = 23,
	Pushr8 = 24,
	Pushref = 25,
	Varpop = 26,
	Varpush = 27,
}

Namespace System.Runtime.InteropServices

New Type System.Runtime.InteropServices.ComAwareEventInfo

public class ComAwareEventInfo : System.Reflection.EventInfo, System.Reflection.ICustomAttributeProvider, _MemberInfo {
	// constructors
	public ComAwareEventInfo (System.Type type, string eventName);
	// properties
	public override System.Reflection.EventAttributes Attributes { get; }
	public override System.Type DeclaringType { get; }
	public override string Name { get; }
	public override System.Type ReflectedType { get; }
	// methods
	public override void AddEventHandler (object target, System.Delegate handler);
	public override System.Reflection.MethodInfo GetAddMethod (bool nonPublic);
	public override object[] GetCustomAttributes (bool inherit);
	public override object[] GetCustomAttributes (System.Type attributeType, bool inherit);
	public override System.Reflection.MethodInfo GetRaiseMethod (bool nonPublic);
	public override System.Reflection.MethodInfo GetRemoveMethod (bool nonPublic);
	public override bool IsDefined (System.Type attributeType, bool inherit);
	public override void RemoveEventHandler (object target, System.Delegate handler);
}

New Type System.Runtime.InteropServices.ComEventsHelper

public static class ComEventsHelper {
	// methods
	public static void Combine (object rcw, System.Guid iid, int dispid, System.Delegate d);
	public static System.Delegate Remove (object rcw, System.Guid iid, int dispid, System.Delegate d);
}

New Type System.Runtime.InteropServices.CustomQueryInterfaceMode

[Serializable]
public enum CustomQueryInterfaceMode {
	Allow = 1,
	Ignore = 0,
}

New Type System.Runtime.InteropServices.CustomQueryInterfaceResult

[Serializable]
public enum CustomQueryInterfaceResult {
	Failed = 2,
	Handled = 0,
	NotHandled = 1,
}

New Type System.Runtime.InteropServices.ICustomQueryInterface

public interface ICustomQueryInterface {
	// methods
	public virtual CustomQueryInterfaceResult GetInterface (ref System.Guid iid, out IntPtr ppv);
}

Namespace System.Security.Principal

Type Changed: System.Security.Principal.WindowsIdentity

Added property:

	public Microsoft.Win32.SafeHandles.SafeAccessTokenHandle AccessToken { get; }

New Namespace System.Reflection.Metadata

New Type System.Reflection.Metadata.AssemblyExtensions

public static class AssemblyExtensions {
	// methods
	public static bool TryGetRawMetadata (System.Reflection.Assembly assembly, out byte* blob, out int length);
}

New Namespace System.Runtime.Loader

New Type System.Runtime.Loader.AssemblyLoadContext

public abstract class AssemblyLoadContext {
	// constructors
	protected AssemblyLoadContext ();
	// properties
	public static AssemblyLoadContext Default { get; }
	// events
	public event System.Func<AssemblyLoadContext,System.Reflection.AssemblyName,System.Reflection.Assembly> Resolving;
	public event System.Action<AssemblyLoadContext> Unloading;
	// methods
	public static System.Reflection.AssemblyName GetAssemblyName (string assemblyPath);
	public static AssemblyLoadContext GetLoadContext (System.Reflection.Assembly assembly);
	protected virtual System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyName);
	public System.Reflection.Assembly LoadFromAssemblyName (System.Reflection.AssemblyName assemblyName);
	public System.Reflection.Assembly LoadFromAssemblyPath (string assemblyPath);
	public System.Reflection.Assembly LoadFromNativeImagePath (string nativeImagePath, string assemblyPath);
	public System.Reflection.Assembly LoadFromStream (System.IO.Stream assembly);
	public System.Reflection.Assembly LoadFromStream (System.IO.Stream assembly, System.IO.Stream assemblySymbols);
	protected virtual IntPtr LoadUnmanagedDll (string unmanagedDllName);
	protected IntPtr LoadUnmanagedDllFromPath (string unmanagedDllPath);
	public void SetProfileOptimizationRoot (string directoryPath);
	public void StartProfileOptimization (string profile);
}

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.IO

New Type System.IO.ErrorEventArgs

public class ErrorEventArgs : System.EventArgs {
	// constructors
	public ErrorEventArgs (System.Exception exception);
	// methods
	public virtual System.Exception GetException ();
}

New Type System.IO.ErrorEventHandler

public sealed delegate ErrorEventHandler : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public ErrorEventHandler (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (object sender, ErrorEventArgs e, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (System.IAsyncResult result);
	public virtual void Invoke (object sender, ErrorEventArgs e);
}

New Type System.IO.FileSystemEventArgs

public class FileSystemEventArgs : System.EventArgs {
	// constructors
	public FileSystemEventArgs (WatcherChangeTypes changeType, string directory, string name);
	// properties
	public WatcherChangeTypes ChangeType { get; }
	public string FullPath { get; }
	public string Name { get; }
}

New Type System.IO.FileSystemEventHandler

public sealed delegate FileSystemEventHandler : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public FileSystemEventHandler (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (object sender, FileSystemEventArgs e, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (System.IAsyncResult result);
	public virtual void Invoke (object sender, FileSystemEventArgs e);
}

New Type System.IO.FileSystemWatcher

public class FileSystemWatcher {
	// constructors
	public FileSystemWatcher ();
	public FileSystemWatcher (string path);
	public FileSystemWatcher (string path, string filter);
	// properties
	public bool EnableRaisingEvents { get; set; }
	public string Filter { get; set; }
	public bool IncludeSubdirectories { get; set; }
	public int InternalBufferSize { get; set; }
	public NotifyFilters NotifyFilter { get; set; }
	public string Path { get; set; }
	// events
	public event FileSystemEventHandler Changed;
	public event FileSystemEventHandler Created;
	public event FileSystemEventHandler Deleted;
	public event ErrorEventHandler Error;
	public event RenamedEventHandler Renamed;
	// methods
	protected void OnChanged (FileSystemEventArgs e);
	protected void OnCreated (FileSystemEventArgs e);
	protected void OnDeleted (FileSystemEventArgs e);
	protected void OnError (ErrorEventArgs e);
	protected void OnRenamed (RenamedEventArgs e);
	public WaitForChangedResult WaitForChanged (WatcherChangeTypes changeType);
	public WaitForChangedResult WaitForChanged (WatcherChangeTypes changeType, int timeout);
}

New Type System.IO.NotifyFilters

[Serializable]
[Flags]
public enum NotifyFilters {
	Attributes = 4,
	CreationTime = 64,
	DirectoryName = 2,
	FileName = 1,
	LastAccess = 32,
	LastWrite = 16,
	Security = 256,
	Size = 8,
}

New Type System.IO.RenamedEventArgs

public class RenamedEventArgs : System.IO.FileSystemEventArgs {
	// constructors
	public RenamedEventArgs (WatcherChangeTypes changeType, string directory, string name, string oldName);
	// properties
	public string OldFullPath { get; }
	public string OldName { get; }
}

New Type System.IO.RenamedEventHandler

public sealed delegate RenamedEventHandler : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public RenamedEventHandler (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (object sender, RenamedEventArgs e, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (System.IAsyncResult result);
	public virtual void Invoke (object sender, RenamedEventArgs e);
}

New Type System.IO.WaitForChangedResult

public struct WaitForChangedResult {
	// properties
	public WatcherChangeTypes ChangeType { get; set; }
	public string Name { get; set; }
	public string OldName { get; set; }
	public bool TimedOut { get; set; }
}

New Type System.IO.WatcherChangeTypes

[Serializable]
[Flags]
public enum WatcherChangeTypes {
	All = 15,
	Changed = 4,
	Created = 1,
	Deleted = 2,
	Renamed = 8,
}

Namespace System.Net.WebSockets

Type Changed: System.Net.WebSockets.WebSocketCloseStatus

Modified fields:

Empty = 1004 1005
MessageTooBig = 1004 1009

Namespace System.Security.Authentication.ExtendedProtection

Type Changed: System.Security.Authentication.ExtendedProtection.ChannelBindingKind

Modified fields:

Endpoint = 2 26
Unique = 1 25

New Namespace Microsoft.Win32.SafeHandles

New Type Microsoft.Win32.SafeHandles.SafeProcessHandle

public sealed class SafeProcessHandle : Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid, System.IDisposable {
	// constructors
	public SafeProcessHandle (IntPtr existingHandle, bool ownsHandle);
	// methods
	protected override bool ReleaseHandle ();
}

New Type Microsoft.Win32.SafeHandles.SafeX509ChainHandle

public sealed class SafeX509ChainHandle : System.Runtime.InteropServices.SafeHandle, System.IDisposable {
	// properties
	public override bool IsInvalid { get; }
	// methods
	protected override bool ReleaseHandle ();
}

New Namespace System.Runtime.InteropServices.ComTypes

New Type System.Runtime.InteropServices.ComTypes.ADVF

[Serializable]
[Flags]
public enum ADVF {
	ADVFCACHE_FORCEBUILTIN = 16,
	ADVFCACHE_NOHANDLER = 8,
	ADVFCACHE_ONSAVE = 32,
	ADVF_DATAONSTOP = 64,
	ADVF_NODATA = 1,
	ADVF_ONLYONCE = 4,
	ADVF_PRIMEFIRST = 2,
}

New Type System.Runtime.InteropServices.ComTypes.DATADIR

[Serializable]
public enum DATADIR {
	DATADIR_GET = 1,
	DATADIR_SET = 2,
}

New Type System.Runtime.InteropServices.ComTypes.DVASPECT

[Serializable]
[Flags]
public enum DVASPECT {
	DVASPECT_CONTENT = 1,
	DVASPECT_DOCPRINT = 8,
	DVASPECT_ICON = 4,
	DVASPECT_THUMBNAIL = 2,
}

New Type System.Runtime.InteropServices.ComTypes.FORMATETC

public struct FORMATETC {
	// fields
	public short cfFormat;
	public DVASPECT dwAspect;
	public int lindex;
	public IntPtr ptd;
	public TYMED tymed;
}

New Type System.Runtime.InteropServices.ComTypes.IAdviseSink

public interface IAdviseSink {
	// methods
	public virtual void OnClose ();
	public virtual void OnDataChange (ref FORMATETC format, ref STGMEDIUM stgmedium);
	public virtual void OnRename (IMoniker moniker);
	public virtual void OnSave ();
	public virtual void OnViewChange (int aspect, int index);
}

New Type System.Runtime.InteropServices.ComTypes.IDataObject

public interface IDataObject {
	// methods
	public virtual int DAdvise (ref FORMATETC pFormatetc, ADVF advf, IAdviseSink adviseSink, out int connection);
	public virtual void DUnadvise (int connection);
	public virtual int EnumDAdvise (out IEnumSTATDATA enumAdvise);
	public virtual IEnumFORMATETC EnumFormatEtc (DATADIR direction);
	public virtual int GetCanonicalFormatEtc (ref FORMATETC formatIn, out FORMATETC formatOut);
	public virtual void GetData (ref FORMATETC format, out STGMEDIUM medium);
	public virtual void GetDataHere (ref FORMATETC format, ref STGMEDIUM medium);
	public virtual int QueryGetData (ref FORMATETC format);
	public virtual void SetData (ref FORMATETC formatIn, ref STGMEDIUM medium, bool release);
}

New Type System.Runtime.InteropServices.ComTypes.IEnumFORMATETC

public interface IEnumFORMATETC {
	// methods
	public virtual void Clone (out IEnumFORMATETC newEnum);
	public virtual int Next (int celt, FORMATETC[] rgelt, int[] pceltFetched);
	public virtual int Reset ();
	public virtual int Skip (int celt);
}

New Type System.Runtime.InteropServices.ComTypes.IEnumSTATDATA

public interface IEnumSTATDATA {
	// methods
	public virtual void Clone (out IEnumSTATDATA newEnum);
	public virtual int Next (int celt, STATDATA[] rgelt, int[] pceltFetched);
	public virtual int Reset ();
	public virtual int Skip (int celt);
}

New Type System.Runtime.InteropServices.ComTypes.STATDATA

public struct STATDATA {
	// fields
	public IAdviseSink advSink;
	public ADVF advf;
	public int connection;
	public FORMATETC formatetc;
}

New Type System.Runtime.InteropServices.ComTypes.STGMEDIUM

public struct STGMEDIUM {
	// fields
	public object pUnkForRelease;
	public TYMED tymed;
	public IntPtr unionmember;
}

New Type System.Runtime.InteropServices.ComTypes.TYMED

[Serializable]
[Flags]
public enum TYMED {
	TYMED_ENHMF = 64,
	TYMED_FILE = 2,
	TYMED_GDI = 16,
	TYMED_HGLOBAL = 1,
	TYMED_ISTORAGE = 8,
	TYMED_ISTREAM = 4,
	TYMED_MFPICT = 32,
	TYMED_NULL = 0,
}

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.Core.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace Microsoft.Win32.SafeHandles

New Type Microsoft.Win32.SafeHandles.SafeNCryptHandle

public abstract class SafeNCryptHandle : System.Runtime.InteropServices.SafeHandle, System.IDisposable {
	// constructors
	protected SafeNCryptHandle ();
	// properties
	public override bool IsInvalid { get; }
	// methods
	protected override bool ReleaseHandle ();
	protected virtual bool ReleaseNativeHandle ();
}

New Type Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle

public sealed class SafeNCryptKeyHandle : Microsoft.Win32.SafeHandles.SafeNCryptHandle, System.IDisposable {
	// constructors
	public SafeNCryptKeyHandle ();
	// methods
	protected override bool ReleaseNativeHandle ();
}

New Type Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle

public sealed class SafeNCryptProviderHandle : Microsoft.Win32.SafeHandles.SafeNCryptHandle, System.IDisposable {
	// constructors
	public SafeNCryptProviderHandle ();
	// methods
	protected override bool ReleaseNativeHandle ();
}

New Type Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle

public sealed class SafeNCryptSecretHandle : Microsoft.Win32.SafeHandles.SafeNCryptHandle, System.IDisposable {
	// constructors
	public SafeNCryptSecretHandle ();
	// methods
	protected override bool ReleaseNativeHandle ();
}

New Type Microsoft.Win32.SafeHandles.SafePipeHandle

public sealed class SafePipeHandle : Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid, System.IDisposable {
	// constructors
	public SafePipeHandle (IntPtr preexistingHandle, bool ownsHandle);
	// methods
	protected override bool ReleaseHandle ();
}

Namespace System.Security.Cryptography

New Type System.Security.Cryptography.AesCng

public sealed class AesCng : System.Security.Cryptography.Aes, System.IDisposable {
	// constructors
	public AesCng ();
	public AesCng (string keyName);
	public AesCng (string keyName, CngProvider provider);
	public AesCng (string keyName, CngProvider provider, CngKeyOpenOptions openOptions);
	// properties
	public override byte[] Key { get; set; }
	public override int KeySize { get; set; }
	// methods
	public override ICryptoTransform CreateDecryptor ();
	public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV);
	public override ICryptoTransform CreateEncryptor ();
	public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV);
	protected override void Dispose (bool disposing);
	public override void GenerateIV ();
	public override void GenerateKey ();
}

New Type System.Security.Cryptography.CngAlgorithm

[Serializable]
public sealed class CngAlgorithm : System.IEquatable<CngAlgorithm> {
	// constructors
	public CngAlgorithm (string algorithm);
	// properties
	public string Algorithm { get; }
	public static CngAlgorithm ECDiffieHellmanP256 { get; }
	public static CngAlgorithm ECDiffieHellmanP384 { get; }
	public static CngAlgorithm ECDiffieHellmanP521 { get; }
	public static CngAlgorithm ECDsaP256 { get; }
	public static CngAlgorithm ECDsaP384 { get; }
	public static CngAlgorithm ECDsaP521 { get; }
	public static CngAlgorithm MD5 { get; }
	public static CngAlgorithm Rsa { get; }
	public static CngAlgorithm Sha1 { get; }
	public static CngAlgorithm Sha256 { get; }
	public static CngAlgorithm Sha384 { get; }
	public static CngAlgorithm Sha512 { get; }
	// methods
	public override bool Equals (object obj);
	public virtual bool Equals (CngAlgorithm other);
	public override int GetHashCode ();
	public override string ToString ();
	public static bool op_Equality (CngAlgorithm left, CngAlgorithm right);
	public static bool op_Inequality (CngAlgorithm left, CngAlgorithm right);
}

New Type System.Security.Cryptography.CngAlgorithmGroup

[Serializable]
public sealed class CngAlgorithmGroup : System.IEquatable<CngAlgorithmGroup> {
	// constructors
	public CngAlgorithmGroup (string algorithmGroup);
	// properties
	public string AlgorithmGroup { get; }
	public static CngAlgorithmGroup DiffieHellman { get; }
	public static CngAlgorithmGroup Dsa { get; }
	public static CngAlgorithmGroup ECDiffieHellman { get; }
	public static CngAlgorithmGroup ECDsa { get; }
	public static CngAlgorithmGroup Rsa { get; }
	// methods
	public override bool Equals (object obj);
	public virtual bool Equals (CngAlgorithmGroup other);
	public override int GetHashCode ();
	public override string ToString ();
	public static bool op_Equality (CngAlgorithmGroup left, CngAlgorithmGroup right);
	public static bool op_Inequality (CngAlgorithmGroup left, CngAlgorithmGroup right);
}

New Type System.Security.Cryptography.CngExportPolicies

[Serializable]
[Flags]
public enum CngExportPolicies {
	AllowArchiving = 4,
	AllowExport = 1,
	AllowPlaintextArchiving = 8,
	AllowPlaintextExport = 2,
	None = 0,
}

New Type System.Security.Cryptography.CngKey

public sealed class CngKey : System.IDisposable {
	// constructors
	public CngKey ();
	// methods
	public virtual void Dispose ();
}

New Type System.Security.Cryptography.CngKeyBlobFormat

[Serializable]
public sealed class CngKeyBlobFormat : System.IEquatable<CngKeyBlobFormat> {
	// constructors
	public CngKeyBlobFormat (string format);
	// properties
	public static CngKeyBlobFormat EccPrivateBlob { get; }
	public static CngKeyBlobFormat EccPublicBlob { get; }
	public string Format { get; }
	public static CngKeyBlobFormat GenericPrivateBlob { get; }
	public static CngKeyBlobFormat GenericPublicBlob { get; }
	public static CngKeyBlobFormat OpaqueTransportBlob { get; }
	public static CngKeyBlobFormat Pkcs8PrivateBlob { get; }
	// methods
	public override bool Equals (object obj);
	public virtual bool Equals (CngKeyBlobFormat other);
	public override int GetHashCode ();
	public override string ToString ();
	public static bool op_Equality (CngKeyBlobFormat left, CngKeyBlobFormat right);
	public static bool op_Inequality (CngKeyBlobFormat left, CngKeyBlobFormat right);
}

New Type System.Security.Cryptography.CngKeyCreationOptions

[Serializable]
[Flags]
public enum CngKeyCreationOptions {
	MachineKey = 32,
	None = 0,
	OverwriteExistingKey = 128,
}

New Type System.Security.Cryptography.CngKeyCreationParameters

public sealed class CngKeyCreationParameters {
	// constructors
	public CngKeyCreationParameters ();
	// properties
	public CngExportPolicies? ExportPolicy { get; set; }
	public CngKeyCreationOptions KeyCreationOptions { get; set; }
	public CngKeyUsages? KeyUsage { get; set; }
	public CngPropertyCollection Parameters { get; }
	public IntPtr ParentWindowHandle { get; set; }
	public CngProvider Provider { get; set; }
	public CngUIPolicy UIPolicy { get; set; }
}

New Type System.Security.Cryptography.CngKeyHandleOpenOptions

[Serializable]
[Flags]
public enum CngKeyHandleOpenOptions {
	EphemeralKey = 1,
	None = 0,
}

New Type System.Security.Cryptography.CngKeyOpenOptions

[Serializable]
[Flags]
public enum CngKeyOpenOptions {
	MachineKey = 32,
	None = 0,
	Silent = 64,
	UserKey = 0,
}

New Type System.Security.Cryptography.CngKeyUsages

[Serializable]
[Flags]
public enum CngKeyUsages {
	AllUsages = 16777215,
	Decryption = 1,
	KeyAgreement = 4,
	None = 0,
	Signing = 2,
}

New Type System.Security.Cryptography.CngProperty

public struct CngProperty, System.IEquatable<CngProperty> {
	// constructors
	public CngProperty (string name, byte[] value, CngPropertyOptions options);
	// properties
	public string Name { get; }
	public CngPropertyOptions Options { get; }
	// methods
	public override bool Equals (object obj);
	public virtual bool Equals (CngProperty other);
	public override int GetHashCode ();
	public byte[] GetValue ();
	public static bool op_Equality (CngProperty left, CngProperty right);
	public static bool op_Inequality (CngProperty left, CngProperty right);
}

New Type System.Security.Cryptography.CngPropertyCollection

public sealed class CngPropertyCollection : System.Collections.ObjectModel.Collection`1[System.Security.Cryptography.CngProperty], System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IList<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.IReadOnlyList<T>, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList {
	// constructors
	public CngPropertyCollection ();
}

New Type System.Security.Cryptography.CngPropertyOptions

[Serializable]
[Flags]
public enum CngPropertyOptions {
	CustomProperty = 1073741824,
	None = 0,
	Persist = -2147483648,
}

New Type System.Security.Cryptography.CngProvider

[Serializable]
public sealed class CngProvider : System.IEquatable<CngProvider> {
	// constructors
	public CngProvider (string provider);
	// properties
	public static CngProvider MicrosoftSmartCardKeyStorageProvider { get; }
	public static CngProvider MicrosoftSoftwareKeyStorageProvider { get; }
	public string Provider { get; }
	// methods
	public override bool Equals (object obj);
	public virtual bool Equals (CngProvider other);
	public override int GetHashCode ();
	public override string ToString ();
	public static bool op_Equality (CngProvider left, CngProvider right);
	public static bool op_Inequality (CngProvider left, CngProvider right);
}

New Type System.Security.Cryptography.CngUIPolicy

public sealed class CngUIPolicy {
	// constructors
	public CngUIPolicy (CngUIProtectionLevels protectionLevel);
	public CngUIPolicy (CngUIProtectionLevels protectionLevel, string friendlyName);
	public CngUIPolicy (CngUIProtectionLevels protectionLevel, string friendlyName, string description);
	public CngUIPolicy (CngUIProtectionLevels protectionLevel, string friendlyName, string description, string useContext);
	public CngUIPolicy (CngUIProtectionLevels protectionLevel, string friendlyName, string description, string useContext, string creationTitle);
	// properties
	public string CreationTitle { get; }
	public string Description { get; }
	public string FriendlyName { get; }
	public CngUIProtectionLevels ProtectionLevel { get; }
	public string UseContext { get; }
}

New Type System.Security.Cryptography.CngUIProtectionLevels

[Serializable]
[Flags]
public enum CngUIProtectionLevels {
	ForceHighProtection = 2,
	None = 0,
	ProtectKey = 1,
}

New Type System.Security.Cryptography.ECDsaCng

public sealed class ECDsaCng : System.Security.Cryptography.ECDsa, System.IDisposable {
	// constructors
	public ECDsaCng ();
	// methods
	public override byte[] SignHash (byte[] hash);
	public override bool VerifyHash (byte[] hash, byte[] signature);
}

New Type System.Security.Cryptography.RSACng

public sealed class RSACng : System.Security.Cryptography.RSA, System.IDisposable {
	// constructors
	public RSACng ();
	// methods
	public override RSAParameters ExportParameters (bool includePrivateParameters);
	public override void ImportParameters (RSAParameters parameters);
}

New Type System.Security.Cryptography.TripleDESCng

public sealed class TripleDESCng : System.Security.Cryptography.TripleDES, System.IDisposable {
	// constructors
	public TripleDESCng ();
	public TripleDESCng (string keyName);
	public TripleDESCng (string keyName, CngProvider provider);
	public TripleDESCng (string keyName, CngProvider provider, CngKeyOpenOptions openOptions);
	// properties
	public override byte[] Key { get; set; }
	public override int KeySize { get; set; }
	// methods
	public override ICryptoTransform CreateDecryptor ();
	public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV);
	public override ICryptoTransform CreateEncryptor ();
	public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV);
	protected override void Dispose (bool disposing);
	public override void GenerateIV ();
	public override void GenerateKey ();
}

New Namespace System.IO.Pipes

New Type System.IO.Pipes.AnonymousPipeClientStream

public sealed class AnonymousPipeClientStream : System.IO.Pipes.PipeStream, System.IDisposable {
	// constructors
	public AnonymousPipeClientStream (string pipeHandleAsString);
	public AnonymousPipeClientStream (PipeDirection direction, Microsoft.Win32.SafeHandles.SafePipeHandle safePipeHandle);
	public AnonymousPipeClientStream (PipeDirection direction, string pipeHandleAsString);
	// properties
	public override PipeTransmissionMode ReadMode { set; }
	public override PipeTransmissionMode TransmissionMode { get; }
	// methods
	protected override void ~AnonymousPipeClientStream ();
}

New Type System.IO.Pipes.AnonymousPipeServerStream

public sealed class AnonymousPipeServerStream : System.IO.Pipes.PipeStream, System.IDisposable {
	// constructors
	public AnonymousPipeServerStream ();
	public AnonymousPipeServerStream (PipeDirection direction);
	public AnonymousPipeServerStream (PipeDirection direction, System.IO.HandleInheritability inheritability);
	public AnonymousPipeServerStream (PipeDirection direction, Microsoft.Win32.SafeHandles.SafePipeHandle serverSafePipeHandle, Microsoft.Win32.SafeHandles.SafePipeHandle clientSafePipeHandle);
	public AnonymousPipeServerStream (PipeDirection direction, System.IO.HandleInheritability inheritability, int bufferSize);
	// properties
	public Microsoft.Win32.SafeHandles.SafePipeHandle ClientSafePipeHandle { get; }
	public override PipeTransmissionMode ReadMode { set; }
	public override PipeTransmissionMode TransmissionMode { get; }
	// methods
	public void DisposeLocalCopyOfClientHandle ();
	public string GetClientHandleAsString ();
	protected override void ~AnonymousPipeServerStream ();
}

New Type System.IO.Pipes.NamedPipeClientStream

public sealed class NamedPipeClientStream : System.IO.Pipes.PipeStream, System.IDisposable {
	// constructors
	public NamedPipeClientStream (string pipeName);
	public NamedPipeClientStream (string serverName, string pipeName);
	public NamedPipeClientStream (string serverName, string pipeName, PipeDirection direction);
	public NamedPipeClientStream (PipeDirection direction, bool isAsync, bool isConnected, Microsoft.Win32.SafeHandles.SafePipeHandle safePipeHandle);
	public NamedPipeClientStream (string serverName, string pipeName, PipeDirection direction, PipeOptions options);
	public NamedPipeClientStream (string serverName, string pipeName, PipeDirection direction, PipeOptions options, System.Security.Principal.TokenImpersonationLevel impersonationLevel);
	public NamedPipeClientStream (string serverName, string pipeName, PipeDirection direction, PipeOptions options, System.Security.Principal.TokenImpersonationLevel impersonationLevel, System.IO.HandleInheritability inheritability);
	// properties
	public int NumberOfServerInstances { get; }
	// methods
	public void Connect ();
	public void Connect (int timeout);
}

New Type System.IO.Pipes.NamedPipeServerStream

public sealed class NamedPipeServerStream : System.IO.Pipes.PipeStream, System.IDisposable {
	// constructors
	public NamedPipeServerStream (string pipeName);
	public NamedPipeServerStream (string pipeName, PipeDirection direction);
	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances);
	public NamedPipeServerStream (PipeDirection direction, bool isAsync, bool isConnected, Microsoft.Win32.SafeHandles.SafePipeHandle safePipeHandle);
	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances, PipeTransmissionMode transmissionMode);
	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options);
	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, int inBufferSize, int outBufferSize);
	// fields
	public static const int MaxAllowedServerInstances;
	// methods
	public void Disconnect ();
	public string GetImpersonationUserName ();
	public void WaitForConnection ();
	protected override void ~NamedPipeServerStream ();
}

New Type System.IO.Pipes.PipeDirection

[Serializable]
public enum PipeDirection {
	In = 1,
	InOut = 3,
	Out = 2,
}

New Type System.IO.Pipes.PipeOptions

[Serializable]
[Flags]
public enum PipeOptions {
	Asynchronous = 1073741824,
	None = 0,
	WriteThrough = -2147483648,
}

New Type System.IO.Pipes.PipeStream

public abstract class PipeStream : System.IO.Stream, System.IDisposable {
	// constructors
	protected PipeStream (PipeDirection direction, int bufferSize);
	protected PipeStream (PipeDirection direction, PipeTransmissionMode transmissionMode, int outBufferSize);
	// properties
	public override bool CanRead { get; }
	public override bool CanSeek { get; }
	public override bool CanWrite { get; }
	public virtual int InBufferSize { get; }
	public bool IsAsync { get; }
	protected bool IsConnected { get; set; }
	public bool IsMessageComplete { get; }
	public override long Length { get; }
	public virtual int OutBufferSize { get; }
	public override long Position { get; set; }
	public virtual PipeTransmissionMode ReadMode { get; set; }
	public Microsoft.Win32.SafeHandles.SafePipeHandle SafePipeHandle { get; }
	public virtual PipeTransmissionMode TransmissionMode { get; }
	// methods
	protected override void Dispose (bool disposing);
	public override void Flush ();
	public override int Read (byte[] buffer, int offset, int count);
	public override int ReadByte ();
	public override long Seek (long offset, System.IO.SeekOrigin origin);
	public override void SetLength (long value);
	public override void Write (byte[] buffer, int offset, int count);
	public override void WriteByte (byte value);
}

New Type System.IO.Pipes.PipeTransmissionMode

[Serializable]
public enum PipeTransmissionMode {
	Byte = 0,
	Message = 1,
}

New Namespace System.Security.Cryptography.X509Certificates

New Type System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions

public static class ECDsaCertificateExtensions {
	// methods
	public static System.Security.Cryptography.ECDsa GetECDsaPrivateKey (X509Certificate2 certificate);
	public static System.Security.Cryptography.ECDsa GetECDsaPublicKey (X509Certificate2 certificate);
}

New Type System.Security.Cryptography.X509Certificates.RSACertificateExtensions

public static class RSACertificateExtensions {
	// methods
	public static System.Security.Cryptography.RSA GetRSAPrivateKey (X509Certificate2 certificate);
	public static System.Security.Cryptography.RSA GetRSAPublicKey (X509Certificate2 certificate);
}

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.Numerics.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.Numerics

New Type System.Numerics.Matrix3x2

public struct Matrix3x2, System.IEquatable<Matrix3x2> {
	// constructors
	public Matrix3x2 (float m11, float m12, float m21, float m22, float m31, float m32);
	// fields
	public float M11;
	public float M12;
	public float M21;
	public float M22;
	public float M31;
	public float M32;
	// properties
	public static Matrix3x2 Identity { get; }
	public bool IsIdentity { get; }
	public Vector2 Translation { get; set; }
	// methods
	public static Matrix3x2 Add (Matrix3x2 value1, Matrix3x2 value2);
	public static Matrix3x2 CreateRotation (float radians);
	public static Matrix3x2 CreateRotation (float radians, Vector2 centerPoint);
	public static Matrix3x2 CreateScale (Vector2 scales);
	public static Matrix3x2 CreateScale (float scale);
	public static Matrix3x2 CreateScale (Vector2 scales, Vector2 centerPoint);
	public static Matrix3x2 CreateScale (float scale, Vector2 centerPoint);
	public static Matrix3x2 CreateScale (float xScale, float yScale);
	public static Matrix3x2 CreateScale (float xScale, float yScale, Vector2 centerPoint);
	public static Matrix3x2 CreateSkew (float radiansX, float radiansY);
	public static Matrix3x2 CreateSkew (float radiansX, float radiansY, Vector2 centerPoint);
	public static Matrix3x2 CreateTranslation (Vector2 position);
	public static Matrix3x2 CreateTranslation (float xPosition, float yPosition);
	public virtual bool Equals (Matrix3x2 other);
	public override bool Equals (object obj);
	public float GetDeterminant ();
	public override int GetHashCode ();
	public static bool Invert (Matrix3x2 matrix, out Matrix3x2 result);
	public static Matrix3x2 Lerp (Matrix3x2 matrix1, Matrix3x2 matrix2, float amount);
	public static Matrix3x2 Multiply (Matrix3x2 value1, Matrix3x2 value2);
	public static Matrix3x2 Multiply (Matrix3x2 value1, float value2);
	public static Matrix3x2 Negate (Matrix3x2 value);
	public static Matrix3x2 Subtract (Matrix3x2 value1, Matrix3x2 value2);
	public override string ToString ();
	public static Matrix3x2 op_Addition (Matrix3x2 value1, Matrix3x2 value2);
	public static bool op_Equality (Matrix3x2 value1, Matrix3x2 value2);
	public static bool op_Inequality (Matrix3x2 value1, Matrix3x2 value2);
	public static Matrix3x2 op_Multiply (Matrix3x2 value1, Matrix3x2 value2);
	public static Matrix3x2 op_Multiply (Matrix3x2 value1, float value2);
	public static Matrix3x2 op_Subtraction (Matrix3x2 value1, Matrix3x2 value2);
	public static Matrix3x2 op_UnaryNegation (Matrix3x2 value);
}

New Type System.Numerics.Matrix4x4

public struct Matrix4x4, System.IEquatable<Matrix4x4> {
	// constructors
	public Matrix4x4 (Matrix3x2 value);
	public Matrix4x4 (float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44);
	// fields
	public float M11;
	public float M12;
	public float M13;
	public float M14;
	public float M21;
	public float M22;
	public float M23;
	public float M24;
	public float M31;
	public float M32;
	public float M33;
	public float M34;
	public float M41;
	public float M42;
	public float M43;
	public float M44;
	// properties
	public static Matrix4x4 Identity { get; }
	public bool IsIdentity { get; }
	public Vector3 Translation { get; set; }
	// methods
	public static Matrix4x4 Add (Matrix4x4 value1, Matrix4x4 value2);
	public static Matrix4x4 CreateBillboard (Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3 cameraForwardVector);
	public static Matrix4x4 CreateConstrainedBillboard (Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3 cameraForwardVector, Vector3 objectForwardVector);
	public static Matrix4x4 CreateFromAxisAngle (Vector3 axis, float angle);
	public static Matrix4x4 CreateFromQuaternion (Quaternion quaternion);
	public static Matrix4x4 CreateFromYawPitchRoll (float yaw, float pitch, float roll);
	public static Matrix4x4 CreateLookAt (Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector);
	public static Matrix4x4 CreateOrthographic (float width, float height, float zNearPlane, float zFarPlane);
	public static Matrix4x4 CreateOrthographicOffCenter (float left, float right, float bottom, float top, float zNearPlane, float zFarPlane);
	public static Matrix4x4 CreatePerspective (float width, float height, float nearPlaneDistance, float farPlaneDistance);
	public static Matrix4x4 CreatePerspectiveFieldOfView (float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance);
	public static Matrix4x4 CreatePerspectiveOffCenter (float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance);
	public static Matrix4x4 CreateReflection (Plane value);
	public static Matrix4x4 CreateRotationX (float radians);
	public static Matrix4x4 CreateRotationX (float radians, Vector3 centerPoint);
	public static Matrix4x4 CreateRotationY (float radians);
	public static Matrix4x4 CreateRotationY (float radians, Vector3 centerPoint);
	public static Matrix4x4 CreateRotationZ (float radians);
	public static Matrix4x4 CreateRotationZ (float radians, Vector3 centerPoint);
	public static Matrix4x4 CreateScale (Vector3 scales);
	public static Matrix4x4 CreateScale (float scale);
	public static Matrix4x4 CreateScale (Vector3 scales, Vector3 centerPoint);
	public static Matrix4x4 CreateScale (float scale, Vector3 centerPoint);
	public static Matrix4x4 CreateScale (float xScale, float yScale, float zScale);
	public static Matrix4x4 CreateScale (float xScale, float yScale, float zScale, Vector3 centerPoint);
	public static Matrix4x4 CreateShadow (Vector3 lightDirection, Plane plane);
	public static Matrix4x4 CreateTranslation (Vector3 position);
	public static Matrix4x4 CreateTranslation (float xPosition, float yPosition, float zPosition);
	public static Matrix4x4 CreateWorld (Vector3 position, Vector3 forward, Vector3 up);
	public static bool Decompose (Matrix4x4 matrix, out Vector3 scale, out Quaternion rotation, out Vector3 translation);
	public virtual bool Equals (Matrix4x4 other);
	public override bool Equals (object obj);
	public float GetDeterminant ();
	public override int GetHashCode ();
	public static bool Invert (Matrix4x4 matrix, out Matrix4x4 result);
	public static Matrix4x4 Lerp (Matrix4x4 matrix1, Matrix4x4 matrix2, float amount);
	public static Matrix4x4 Multiply (Matrix4x4 value1, Matrix4x4 value2);
	public static Matrix4x4 Multiply (Matrix4x4 value1, float value2);
	public static Matrix4x4 Negate (Matrix4x4 value);
	public static Matrix4x4 Subtract (Matrix4x4 value1, Matrix4x4 value2);
	public override string ToString ();
	public static Matrix4x4 Transform (Matrix4x4 value, Quaternion rotation);
	public static Matrix4x4 Transpose (Matrix4x4 matrix);
	public static Matrix4x4 op_Addition (Matrix4x4 value1, Matrix4x4 value2);
	public static bool op_Equality (Matrix4x4 value1, Matrix4x4 value2);
	public static bool op_Inequality (Matrix4x4 value1, Matrix4x4 value2);
	public static Matrix4x4 op_Multiply (Matrix4x4 value1, Matrix4x4 value2);
	public static Matrix4x4 op_Multiply (Matrix4x4 value1, float value2);
	public static Matrix4x4 op_Subtraction (Matrix4x4 value1, Matrix4x4 value2);
	public static Matrix4x4 op_UnaryNegation (Matrix4x4 value);
}

New Type System.Numerics.Plane

public struct Plane, System.IEquatable<Plane> {
	// constructors
	public Plane (Vector4 value);
	public Plane (Vector3 normal, float d);
	public Plane (float x, float y, float z, float d);
	// fields
	public float D;
	public Vector3 Normal;
	// methods
	public static Plane CreateFromVertices (Vector3 point1, Vector3 point2, Vector3 point3);
	public static float Dot (Plane plane, Vector4 value);
	public static float DotCoordinate (Plane plane, Vector3 value);
	public static float DotNormal (Plane plane, Vector3 value);
	public virtual bool Equals (Plane other);
	public override bool Equals (object obj);
	public override int GetHashCode ();
	public static Plane Normalize (Plane value);
	public override string ToString ();
	public static Plane Transform (Plane plane, Matrix4x4 matrix);
	public static Plane Transform (Plane plane, Quaternion rotation);
	public static bool op_Equality (Plane value1, Plane value2);
	public static bool op_Inequality (Plane value1, Plane value2);
}

New Type System.Numerics.Quaternion

public struct Quaternion, System.IEquatable<Quaternion> {
	// constructors
	public Quaternion (Vector3 vectorPart, float scalarPart);
	public Quaternion (float x, float y, float z, float w);
	// fields
	public float W;
	public float X;
	public float Y;
	public float Z;
	// properties
	public static Quaternion Identity { get; }
	public bool IsIdentity { get; }
	// methods
	public static Quaternion Add (Quaternion value1, Quaternion value2);
	public static Quaternion Concatenate (Quaternion value1, Quaternion value2);
	public static Quaternion Conjugate (Quaternion value);
	public static Quaternion CreateFromAxisAngle (Vector3 axis, float angle);
	public static Quaternion CreateFromRotationMatrix (Matrix4x4 matrix);
	public static Quaternion CreateFromYawPitchRoll (float yaw, float pitch, float roll);
	public static Quaternion Divide (Quaternion value1, Quaternion value2);
	public static float Dot (Quaternion quaternion1, Quaternion quaternion2);
	public virtual bool Equals (Quaternion other);
	public override bool Equals (object obj);
	public override int GetHashCode ();
	public static Quaternion Inverse (Quaternion value);
	public float Length ();
	public float LengthSquared ();
	public static Quaternion Lerp (Quaternion quaternion1, Quaternion quaternion2, float amount);
	public static Quaternion Multiply (Quaternion value1, Quaternion value2);
	public static Quaternion Multiply (Quaternion value1, float value2);
	public static Quaternion Negate (Quaternion value);
	public static Quaternion Normalize (Quaternion value);
	public static Quaternion Slerp (Quaternion quaternion1, Quaternion quaternion2, float amount);
	public static Quaternion Subtract (Quaternion value1, Quaternion value2);
	public override string ToString ();
	public static Quaternion op_Addition (Quaternion value1, Quaternion value2);
	public static Quaternion op_Division (Quaternion value1, Quaternion value2);
	public static bool op_Equality (Quaternion value1, Quaternion value2);
	public static bool op_Inequality (Quaternion value1, Quaternion value2);
	public static Quaternion op_Multiply (Quaternion value1, Quaternion value2);
	public static Quaternion op_Multiply (Quaternion value1, float value2);
	public static Quaternion op_Subtraction (Quaternion value1, Quaternion value2);
	public static Quaternion op_UnaryNegation (Quaternion value);
}

New Type System.Numerics.Vector2

public struct Vector2, System.IEquatable<Vector2>, System.IFormattable {
	// constructors
	public Vector2 (float value);
	public Vector2 (float x, float y);
	// fields
	public float X;
	public float Y;
	// properties
	public static Vector2 One { get; }
	public static Vector2 UnitX { get; }
	public static Vector2 UnitY { get; }
	public static Vector2 Zero { get; }
	// methods
	public static Vector2 Abs (Vector2 value);
	public static Vector2 Add (Vector2 left, Vector2 right);
	public static Vector2 Clamp (Vector2 value1, Vector2 min, Vector2 max);
	public void CopyTo (float[] array);
	public void CopyTo (float[] array, int index);
	public static float Distance (Vector2 value1, Vector2 value2);
	public static float DistanceSquared (Vector2 value1, Vector2 value2);
	public static Vector2 Divide (Vector2 left, Vector2 right);
	public static Vector2 Divide (Vector2 left, float divisor);
	public static float Dot (Vector2 value1, Vector2 value2);
	public virtual bool Equals (Vector2 other);
	public override bool Equals (object obj);
	public override int GetHashCode ();
	public float Length ();
	public float LengthSquared ();
	public static Vector2 Lerp (Vector2 value1, Vector2 value2, float amount);
	public static Vector2 Max (Vector2 value1, Vector2 value2);
	public static Vector2 Min (Vector2 value1, Vector2 value2);
	public static Vector2 Multiply (Vector2 left, Vector2 right);
	public static Vector2 Multiply (Vector2 left, float right);
	public static Vector2 Multiply (float left, Vector2 right);
	public static Vector2 Negate (Vector2 value);
	public static Vector2 Normalize (Vector2 value);
	public static Vector2 Reflect (Vector2 vector, Vector2 normal);
	public static Vector2 SquareRoot (Vector2 value);
	public static Vector2 Subtract (Vector2 left, Vector2 right);
	public override string ToString ();
	public string ToString (string format);
	public virtual string ToString (string format, System.IFormatProvider formatProvider);
	public static Vector2 Transform (Vector2 position, Matrix3x2 matrix);
	public static Vector2 Transform (Vector2 position, Matrix4x4 matrix);
	public static Vector2 Transform (Vector2 value, Quaternion rotation);
	public static Vector2 TransformNormal (Vector2 normal, Matrix3x2 matrix);
	public static Vector2 TransformNormal (Vector2 normal, Matrix4x4 matrix);
	public static Vector2 op_Addition (Vector2 left, Vector2 right);
	public static Vector2 op_Division (Vector2 left, Vector2 right);
	public static Vector2 op_Division (Vector2 value1, float value2);
	public static bool op_Equality (Vector2 left, Vector2 right);
	public static bool op_Inequality (Vector2 left, Vector2 right);
	public static Vector2 op_Multiply (Vector2 left, Vector2 right);
	public static Vector2 op_Multiply (Vector2 left, float right);
	public static Vector2 op_Multiply (float left, Vector2 right);
	public static Vector2 op_Subtraction (Vector2 left, Vector2 right);
	public static Vector2 op_UnaryNegation (Vector2 value);
}

New Type System.Numerics.Vector3

public struct Vector3, System.IEquatable<Vector3>, System.IFormattable {
	// constructors
	public Vector3 (float value);
	public Vector3 (Vector2 value, float z);
	public Vector3 (float x, float y, float z);
	// fields
	public float X;
	public float Y;
	public float Z;
	// properties
	public static Vector3 One { get; }
	public static Vector3 UnitX { get; }
	public static Vector3 UnitY { get; }
	public static Vector3 UnitZ { get; }
	public static Vector3 Zero { get; }
	// methods
	public static Vector3 Abs (Vector3 value);
	public static Vector3 Add (Vector3 left, Vector3 right);
	public static Vector3 Clamp (Vector3 value1, Vector3 min, Vector3 max);
	public void CopyTo (float[] array);
	public void CopyTo (float[] array, int index);
	public static Vector3 Cross (Vector3 vector1, Vector3 vector2);
	public static float Distance (Vector3 value1, Vector3 value2);
	public static float DistanceSquared (Vector3 value1, Vector3 value2);
	public static Vector3 Divide (Vector3 left, Vector3 right);
	public static Vector3 Divide (Vector3 left, float divisor);
	public static float Dot (Vector3 vector1, Vector3 vector2);
	public virtual bool Equals (Vector3 other);
	public override bool Equals (object obj);
	public override int GetHashCode ();
	public float Length ();
	public float LengthSquared ();
	public static Vector3 Lerp (Vector3 value1, Vector3 value2, float amount);
	public static Vector3 Max (Vector3 value1, Vector3 value2);
	public static Vector3 Min (Vector3 value1, Vector3 value2);
	public static Vector3 Multiply (Vector3 left, Vector3 right);
	public static Vector3 Multiply (Vector3 left, float right);
	public static Vector3 Multiply (float left, Vector3 right);
	public static Vector3 Negate (Vector3 value);
	public static Vector3 Normalize (Vector3 value);
	public static Vector3 Reflect (Vector3 vector, Vector3 normal);
	public static Vector3 SquareRoot (Vector3 value);
	public static Vector3 Subtract (Vector3 left, Vector3 right);
	public override string ToString ();
	public string ToString (string format);
	public virtual string ToString (string format, System.IFormatProvider formatProvider);
	public static Vector3 Transform (Vector3 position, Matrix4x4 matrix);
	public static Vector3 Transform (Vector3 value, Quaternion rotation);
	public static Vector3 TransformNormal (Vector3 normal, Matrix4x4 matrix);
	public static Vector3 op_Addition (Vector3 left, Vector3 right);
	public static Vector3 op_Division (Vector3 left, Vector3 right);
	public static Vector3 op_Division (Vector3 value1, float value2);
	public static bool op_Equality (Vector3 left, Vector3 right);
	public static bool op_Inequality (Vector3 left, Vector3 right);
	public static Vector3 op_Multiply (Vector3 left, Vector3 right);
	public static Vector3 op_Multiply (Vector3 left, float right);
	public static Vector3 op_Multiply (float left, Vector3 right);
	public static Vector3 op_Subtraction (Vector3 left, Vector3 right);
	public static Vector3 op_UnaryNegation (Vector3 value);
}

New Type System.Numerics.Vector4

public struct Vector4, System.IEquatable<Vector4>, System.IFormattable {
	// constructors
	public Vector4 (float value);
	public Vector4 (Vector3 value, float w);
	public Vector4 (Vector2 value, float z, float w);
	public Vector4 (float x, float y, float z, float w);
	// fields
	public float W;
	public float X;
	public float Y;
	public float Z;
	// properties
	public static Vector4 One { get; }
	public static Vector4 UnitW { get; }
	public static Vector4 UnitX { get; }
	public static Vector4 UnitY { get; }
	public static Vector4 UnitZ { get; }
	public static Vector4 Zero { get; }
	// methods
	public static Vector4 Abs (Vector4 value);
	public static Vector4 Add (Vector4 left, Vector4 right);
	public static Vector4 Clamp (Vector4 value1, Vector4 min, Vector4 max);
	public void CopyTo (float[] array);
	public void CopyTo (float[] array, int index);
	public static float Distance (Vector4 value1, Vector4 value2);
	public static float DistanceSquared (Vector4 value1, Vector4 value2);
	public static Vector4 Divide (Vector4 left, Vector4 right);
	public static Vector4 Divide (Vector4 left, float divisor);
	public static float Dot (Vector4 vector1, Vector4 vector2);
	public virtual bool Equals (Vector4 other);
	public override bool Equals (object obj);
	public override int GetHashCode ();
	public float Length ();
	public float LengthSquared ();
	public static Vector4 Lerp (Vector4 value1, Vector4 value2, float amount);
	public static Vector4 Max (Vector4 value1, Vector4 value2);
	public static Vector4 Min (Vector4 value1, Vector4 value2);
	public static Vector4 Multiply (Vector4 left, Vector4 right);
	public static Vector4 Multiply (Vector4 left, float right);
	public static Vector4 Multiply (float left, Vector4 right);
	public static Vector4 Negate (Vector4 value);
	public static Vector4 Normalize (Vector4 vector);
	public static Vector4 SquareRoot (Vector4 value);
	public static Vector4 Subtract (Vector4 left, Vector4 right);
	public override string ToString ();
	public string ToString (string format);
	public virtual string ToString (string format, System.IFormatProvider formatProvider);
	public static Vector4 Transform (Vector2 position, Matrix4x4 matrix);
	public static Vector4 Transform (Vector2 value, Quaternion rotation);
	public static Vector4 Transform (Vector3 position, Matrix4x4 matrix);
	public static Vector4 Transform (Vector3 value, Quaternion rotation);
	public static Vector4 Transform (Vector4 vector, Matrix4x4 matrix);
	public static Vector4 Transform (Vector4 value, Quaternion rotation);
	public static Vector4 op_Addition (Vector4 left, Vector4 right);
	public static Vector4 op_Division (Vector4 left, Vector4 right);
	public static Vector4 op_Division (Vector4 value1, float value2);
	public static bool op_Equality (Vector4 left, Vector4 right);
	public static bool op_Inequality (Vector4 left, Vector4 right);
	public static Vector4 op_Multiply (Vector4 left, Vector4 right);
	public static Vector4 op_Multiply (Vector4 left, float right);
	public static Vector4 op_Multiply (float left, Vector4 right);
	public static Vector4 op_Subtraction (Vector4 left, Vector4 right);
	public static Vector4 op_UnaryNegation (Vector4 value);
}

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.Data.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace Microsoft.SqlServer.Server

Type Changed: Microsoft.SqlServer.Server.SqlDataRecord

Modified properties:

public virtual final object this [int index ordinal] { get; }
public virtual final object this [string index name] { get; }

Modified methods:

public virtual final bool GetBoolean (int i ordinal)
public virtual final byte GetByte (int i ordinal)
public virtual final long GetBytes (int i ordinal, long fieldOffset, byte[] buffer, int bufferoffset bufferOffset, int length)
public virtual final char GetChar (int i ordinal)
public virtual final long GetChars (int i ordinal, long fieldoffset fieldOffset, char[] buffer, int bufferoffset bufferOffset, int length)
public virtual final System.Data.IDataReader GetData (int i ordinal)
public virtual final string GetDataTypeName (int i ordinal)
public virtual final System.DateTime GetDateTime (int i ordinal)
public virtual final System.Decimal GetDecimal (int i ordinal)
public virtual final double GetDouble (int i ordinal)
public virtual final System.Type GetFieldType (int i ordinal)
public virtual final float GetFloat (int i ordinal)
public virtual final System.Guid GetGuid (int i ordinal)
public virtual final short GetInt16 (int i ordinal)
public virtual final int GetInt32 (int i ordinal)
public virtual final long GetInt64 (int i ordinal)
public virtual final string GetName (int i ordinal)
public virtual final string GetString (int i ordinal)
public virtual final object GetValue (int i ordinal)
public virtual final bool IsDBNull (int i ordinal)

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.ServiceModel.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.ServiceModel

Type Changed: System.ServiceModel.BasicHttpsBinding

Modified properties:

public BasicHttpsSecurity Security { get; set; }

Type Changed: System.ServiceModel.BasicHttpsSecurity

Modified properties:

public HttpTransportSecurity Transport { get; set; }

Type Changed: System.ServiceModel.HttpBindingBase

Modified properties:

public abstract override string Scheme { get; }

New Type System.ServiceModel.CallbackBehaviorAttribute

public sealed class CallbackBehaviorAttribute : System.Attribute, Description.IEndpointBehavior {
	// constructors
	public CallbackBehaviorAttribute ();
	// properties
	public bool AutomaticSessionShutdown { get; set; }
	public ConcurrencyMode ConcurrencyMode { get; set; }
	public bool IgnoreExtensionDataObject { get; set; }
	public bool IncludeExceptionDetailInFaults { get; set; }
	public int MaxItemsInObjectGraph { get; set; }
	public string TransactionTimeout { get; set; }
	public bool UseSynchronizationContext { get; set; }
	public bool ValidateMustUnderstand { get; set; }
}

New Type System.ServiceModel.DnsEndpointIdentity

public class DnsEndpointIdentity : System.ServiceModel.EndpointIdentity {
	// constructors
	public DnsEndpointIdentity (string dns);
}

New Type System.ServiceModel.DuplexChannelFactory`1

public class DuplexChannelFactory`1 : System.ServiceModel.ChannelFactory`1[TChannel], System.IDisposable, Channels.IChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>, ICommunicationObject {
	// constructors
	public DuplexChannelFactory`1 (object callbackInstance);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType);
	public DuplexChannelFactory`1 (object callbackInstance, Channels.Binding binding);
	public DuplexChannelFactory`1 (object callbackInstance, Description.ServiceEndpoint endpoint);
	public DuplexChannelFactory`1 (object callbackInstance, string endpointConfigurationName);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance, Channels.Binding binding);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance, Description.ServiceEndpoint endpoint);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance, string endpointConfigurationName);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType, Channels.Binding binding);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType, Description.ServiceEndpoint endpoint);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType, string endpointConfigurationName);
	public DuplexChannelFactory`1 (object callbackInstance, Channels.Binding binding, EndpointAddress remoteAddress);
	public DuplexChannelFactory`1 (object callbackInstance, Channels.Binding binding, string remoteAddress);
	public DuplexChannelFactory`1 (object callbackInstance, string endpointConfigurationName, EndpointAddress remoteAddress);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance, Channels.Binding binding, EndpointAddress remoteAddress);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance, Channels.Binding binding, string remoteAddress);
	public DuplexChannelFactory`1 (InstanceContext callbackInstance, string endpointConfigurationName, EndpointAddress remoteAddress);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType, Channels.Binding binding, EndpointAddress remoteAddress);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType, Channels.Binding binding, string remoteAddress);
	public DuplexChannelFactory`1 (System.Type callbackInstanceType, string endpointConfigurationName, EndpointAddress remoteAddress);
	// methods
	public TChannel CreateChannel (InstanceContext callbackInstance);
	public static TChannel CreateChannel (object callbackObject, string endpointConfigurationName);
	public override TChannel CreateChannel (EndpointAddress address, System.Uri via);
	public TChannel CreateChannel (InstanceContext callbackInstance, EndpointAddress address);
	public static TChannel CreateChannel (InstanceContext callbackInstance, string endpointConfigurationName);
	public static TChannel CreateChannel (object callbackObject, Channels.Binding binding, EndpointAddress endpointAddress);
	public static TChannel CreateChannel (InstanceContext callbackInstance, Channels.Binding binding, EndpointAddress endpointAddress);
	public virtual TChannel CreateChannel (InstanceContext callbackInstance, EndpointAddress address, System.Uri via);
	public static TChannel CreateChannel (object callbackObject, Channels.Binding binding, EndpointAddress endpointAddress, System.Uri via);
	public static TChannel CreateChannel (InstanceContext callbackInstance, Channels.Binding binding, EndpointAddress endpointAddress, System.Uri via);
}

New Type System.ServiceModel.DuplexClientBase`1

public class DuplexClientBase`1 : System.ServiceModel.ClientBase`1[TChannel], System.IDisposable, ICommunicationObject {
	// constructors
	protected DuplexClientBase`1 (object instance);
	protected DuplexClientBase`1 (InstanceContext instance);
	protected DuplexClientBase`1 (object instance, Description.ServiceEndpoint endpoint);
	protected DuplexClientBase`1 (object instance, string configurationName);
	protected DuplexClientBase`1 (InstanceContext instance, Description.ServiceEndpoint endpoint);
	protected DuplexClientBase`1 (InstanceContext instance, string configurationName);
	protected DuplexClientBase`1 (object instance, Channels.Binding binding, EndpointAddress address);
	protected DuplexClientBase`1 (object instance, string bindingConfigurationName, EndpointAddress address);
	protected DuplexClientBase`1 (object instance, string endpointConfigurationName, string remoteAddress);
	protected DuplexClientBase`1 (InstanceContext instance, Channels.Binding binding, EndpointAddress address);
	protected DuplexClientBase`1 (InstanceContext instance, string configurationName, EndpointAddress address);
	protected DuplexClientBase`1 (InstanceContext instance, string endpointConfigurationName, string remoteAddress);
	// properties
	public IDuplexContextChannel InnerDuplexChannel { get; }
	// methods
	protected override TChannel CreateChannel ();
}

New Type System.ServiceModel.IDuplexContextChannel

public interface IDuplexContextChannel : Channels.IChannel, ICommunicationObject, IContextChannel, System.ServiceModel.IExtensibleObject<IContextChannel> {
	// properties
	public virtual bool AutomaticInputSessionShutdown { get; set; }
	public virtual InstanceContext CallbackInstance { get; set; }
	// methods
	public virtual System.IAsyncResult BeginCloseOutputSession (System.TimeSpan timeout, System.AsyncCallback callback, object state);
	public virtual void CloseOutputSession (System.TimeSpan timeout);
	public virtual void EndCloseOutputSession (System.IAsyncResult result);
}

New Type System.ServiceModel.MessageSecurityOverTcp

public sealed class MessageSecurityOverTcp {
	// properties
	public MessageCredentialType ClientCredentialType { get; set; }
}

New Type System.ServiceModel.MessageSecurityVersion

public abstract class MessageSecurityVersion {
	// properties
	public virtual Security.BasicSecurityProfileVersion BasicSecurityProfileVersion { get; }
	public static MessageSecurityVersion Default { get; }
	public Security.SecureConversationVersion SecureConversationVersion { get; }
	public virtual Security.SecurityPolicyVersion SecurityPolicyVersion { get; }
	public Security.SecurityVersion SecurityVersion { get; }
	public Security.TrustVersion TrustVersion { get; }
	public static MessageSecurityVersion WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10 { get; }
	public static MessageSecurityVersion WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 { get; }
	public static MessageSecurityVersion WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12 { get; }
	public static MessageSecurityVersion WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10 { get; }
	public static MessageSecurityVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 { get; }
	public static MessageSecurityVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 { get; }
}

New Type System.ServiceModel.NetHttpsBinding

public class NetHttpsBinding : System.ServiceModel.HttpBindingBase, Channels.IBindingRuntimePreferences, IDefaultCommunicationTimeouts {
	// constructors
	public NetHttpsBinding ();
	public NetHttpsBinding (BasicHttpsSecurityMode securityMode);
	public NetHttpsBinding (string configurationName);
	public NetHttpsBinding (BasicHttpsSecurityMode securityMode, bool reliableSessionEnabled);
	// properties
	public NetHttpMessageEncoding MessageEncoding { get; set; }
	public OptionalReliableSession ReliableSession { get; set; }
	public override string Scheme { get; }
	public BasicHttpsSecurity Security { get; set; }
	public Channels.WebSocketTransportSettings WebSocketSettings { get; }
	// methods
	public override Channels.BindingElementCollection CreateBindingElements ();
	public bool ShouldSerializeReliableSession ();
	public bool ShouldSerializeSecurity ();
}

New Type System.ServiceModel.NetTcpBinding

public class NetTcpBinding : System.ServiceModel.Channels.Binding, Channels.IBindingRuntimePreferences, IDefaultCommunicationTimeouts {
	// constructors
	public NetTcpBinding ();
	public NetTcpBinding (SecurityMode securityMode);
	public NetTcpBinding (string configurationName);
	public NetTcpBinding (SecurityMode securityMode, bool reliableSessionEnabled);
	// properties
	public EnvelopeVersion EnvelopeVersion { get; }
	public HostNameComparisonMode HostNameComparisonMode { get; set; }
	public int ListenBacklog { get; set; }
	public long MaxBufferPoolSize { get; set; }
	public int MaxBufferSize { get; set; }
	public int MaxConnections { get; set; }
	public long MaxReceivedMessageSize { get; set; }
	public bool PortSharingEnabled { get; set; }
	public System.Xml.XmlDictionaryReaderQuotas ReaderQuotas { get; set; }
	public OptionalReliableSession ReliableSession { get; }
	public override string Scheme { get; }
	public NetTcpSecurity Security { get; set; }
	public bool TransactionFlow { get; set; }
	public TransferMode TransferMode { get; set; }
	// methods
	public override Channels.BindingElementCollection CreateBindingElements ();
}

New Type System.ServiceModel.NetTcpSecurity

public sealed class NetTcpSecurity {
	// constructors
	public NetTcpSecurity ();
	// properties
	public MessageSecurityOverTcp Message { get; set; }
	public SecurityMode Mode { get; set; }
	public TcpTransportSecurity Transport { get; set; }
}

New Type System.ServiceModel.SpnEndpointIdentity

public class SpnEndpointIdentity : System.ServiceModel.EndpointIdentity {
	// constructors
	public SpnEndpointIdentity (string spn);
	// properties
	public static System.TimeSpan SpnLookupTime { get; set; }
}

New Type System.ServiceModel.TcpTransportSecurity

public sealed class TcpTransportSecurity {
	// constructors
	public TcpTransportSecurity ();
	// properties
	public TcpClientCredentialType ClientCredentialType { get; set; }
	public System.Net.Security.ProtectionLevel ProtectionLevel { get; set; }
}

New Type System.ServiceModel.UpnEndpointIdentity

public class UpnEndpointIdentity : System.ServiceModel.EndpointIdentity {
	// constructors
	public UpnEndpointIdentity (string upn);
}

Namespace System.ServiceModel.Channels

Type Changed: System.ServiceModel.Channels.TransportBindingElement

Modified properties:

public virtual bool ManualAddressing { get; set; }

New Type System.ServiceModel.Channels.ConnectionOrientedTransportBindingElement

public abstract class ConnectionOrientedTransportBindingElement : System.ServiceModel.Channels.TransportBindingElement, System.ServiceModel.Description.IPolicyExportExtension, System.ServiceModel.Description.IWsdlExportExtension {
	// properties
	public System.TimeSpan ChannelInitializationTimeout { get; set; }
	public int ConnectionBufferSize { get; set; }
	public System.ServiceModel.HostNameComparisonMode HostNameComparisonMode { get; set; }
	public int MaxBufferSize { get; set; }
	public System.TimeSpan MaxOutputDelay { get; set; }
	public int MaxPendingAccepts { get; set; }
	public int MaxPendingConnections { get; set; }
	public System.ServiceModel.TransferMode TransferMode { get; set; }
	// methods
	public override bool CanBuildChannelFactory<TChannel> (BindingContext context);
	public override T GetProperty<T> (BindingContext context);
}

New Type System.ServiceModel.Channels.SslStreamSecurityBindingElement

public class SslStreamSecurityBindingElement : System.ServiceModel.Channels.BindingElement, ITransportTokenAssertionProvider, System.ServiceModel.Description.IPolicyExportExtension {
	// constructors
	public SslStreamSecurityBindingElement ();
	// properties
	public bool RequireClientCertificate { get; set; }
	// methods
	public override System.ServiceModel.Channels.IChannelFactory<TChannel> BuildChannelFactory<TChannel> (BindingContext context);
	public override bool CanBuildChannelFactory<TChannel> (BindingContext context);
	public override BindingElement Clone ();
	public override T GetProperty<T> (BindingContext context);
}

New Type System.ServiceModel.Channels.TcpConnectionPoolSettings

public sealed class TcpConnectionPoolSettings {
	// properties
	public string GroupName { get; set; }
	public System.TimeSpan IdleTimeout { get; set; }
	public System.TimeSpan LeaseTimeout { get; set; }
	public int MaxOutboundConnectionsPerEndpoint { get; set; }
}

New Type System.ServiceModel.Channels.TcpTransportBindingElement

public class TcpTransportBindingElement : System.ServiceModel.Channels.ConnectionOrientedTransportBindingElement, System.ServiceModel.Description.IPolicyExportExtension, System.ServiceModel.Description.IWsdlExportExtension {
	// constructors
	public TcpTransportBindingElement ();
	protected TcpTransportBindingElement (TcpTransportBindingElement other);
	// properties
	public TcpConnectionPoolSettings ConnectionPoolSettings { get; }
	public int ListenBacklog { get; set; }
	public bool PortSharingEnabled { get; set; }
	public override string Scheme { get; }
	public bool TeredoEnabled { get; set; }
	// methods
	public override System.ServiceModel.Channels.IChannelFactory<TChannel> BuildChannelFactory<TChannel> (BindingContext context);
	public override BindingElement Clone ();
	public override T GetProperty<T> (BindingContext context);
}

New Type System.ServiceModel.Channels.WindowsStreamSecurityBindingElement

public class WindowsStreamSecurityBindingElement : System.ServiceModel.Channels.BindingElement, ISecurityCapabilities, ITransportTokenAssertionProvider, System.ServiceModel.Description.IPolicyExportExtension {
	// constructors
	public WindowsStreamSecurityBindingElement ();
	public WindowsStreamSecurityBindingElement (WindowsStreamSecurityBindingElement other);
	// properties
	public System.Net.Security.ProtectionLevel ProtectionLevel { get; set; }
	// methods
	public override System.ServiceModel.Channels.IChannelFactory<TChannel> BuildChannelFactory<TChannel> (BindingContext context);
	public override bool CanBuildChannelFactory<TChannel> (BindingContext context);
	public override BindingElement Clone ();
	public override T GetProperty<T> (BindingContext context);
}

Namespace System.ServiceModel.Security

New Type System.ServiceModel.Security.BasicSecurityProfileVersion

public abstract class BasicSecurityProfileVersion {
	// properties
	public static BasicSecurityProfileVersion BasicSecurityProfile10 { get; }
}

New Type System.ServiceModel.Security.SecureConversationVersion

public abstract class SecureConversationVersion {
	// constructors
	protected SecureConversationVersion ();
	// properties
	public static SecureConversationVersion Default { get; }
	public System.Xml.XmlDictionaryString Namespace { get; }
	public System.Xml.XmlDictionaryString Prefix { get; }
	public static SecureConversationVersion WSSecureConversation13 { get; }
	public static SecureConversationVersion WSSecureConversationFeb2005 { get; }
}

New Type System.ServiceModel.Security.SecurityPolicyVersion

public abstract class SecurityPolicyVersion {
	// constructors
	protected SecurityPolicyVersion ();
	// properties
	public string Namespace { get; }
	public string Prefix { get; }
	public static SecurityPolicyVersion WSSecurityPolicy11 { get; }
	public static SecurityPolicyVersion WSSecurityPolicy12 { get; }
}

New Type System.ServiceModel.Security.SecurityVersion

public abstract class SecurityVersion {
	// constructors
	protected SecurityVersion ();
	// properties
	public static SecurityVersion WSSecurity10 { get; }
	public static SecurityVersion WSSecurity11 { get; }
}

New Type System.ServiceModel.Security.TrustVersion

public abstract class TrustVersion {
	// constructors
	protected TrustVersion ();
	// properties
	public static TrustVersion Default { get; }
	public System.Xml.XmlDictionaryString Namespace { get; }
	public System.Xml.XmlDictionaryString Prefix { get; }
	public static TrustVersion WSTrust13 { get; }
	public static TrustVersion WSTrustFeb2005 { get; }
}

Namespace System.ServiceModel.Security.Tokens

New Type System.ServiceModel.Security.Tokens.SecureConversationSecurityTokenParameters

public class SecureConversationSecurityTokenParameters : System.ServiceModel.Security.Tokens.SecurityTokenParameters {
	// constructors
	public SecureConversationSecurityTokenParameters ();
	public SecureConversationSecurityTokenParameters (System.ServiceModel.Channels.SecurityBindingElement element);
	protected SecureConversationSecurityTokenParameters (SecureConversationSecurityTokenParameters source);
	public SecureConversationSecurityTokenParameters (System.ServiceModel.Channels.SecurityBindingElement element, bool requireCancellation);
	// properties
	public System.ServiceModel.Channels.SecurityBindingElement BootstrapSecurityBindingElement { get; set; }
	protected override bool HasAsymmetricKey { get; }
	public bool RequireCancellation { get; set; }
	protected override bool SupportsClientAuthentication { get; }
	protected override bool SupportsClientWindowsIdentity { get; }
	protected override bool SupportsServerAuthentication { get; }
	// methods
	protected override SecurityTokenParameters CloneCore ();
	public override string ToString ();
}

New Type System.ServiceModel.Security.Tokens.SecurityTokenParameters

public abstract class SecurityTokenParameters {
	// constructors
	protected SecurityTokenParameters ();
	protected SecurityTokenParameters (SecurityTokenParameters other);
	// properties
	protected virtual bool HasAsymmetricKey { get; }
	public SecurityTokenInclusionMode InclusionMode { get; set; }
	public SecurityTokenReferenceStyle ReferenceStyle { get; set; }
	public bool RequireDerivedKeys { get; set; }
	protected virtual bool SupportsClientAuthentication { get; }
	protected virtual bool SupportsClientWindowsIdentity { get; }
	protected virtual bool SupportsServerAuthentication { get; }
	// methods
	public SecurityTokenParameters Clone ();
	protected virtual SecurityTokenParameters CloneCore ();
	public override string ToString ();
}

New Type System.ServiceModel.Security.Tokens.SecurityTokenReferenceStyle

[Serializable]
public enum SecurityTokenReferenceStyle {
	External = 1,
	Internal = 0,
}

New Type System.ServiceModel.Security.Tokens.SupportingTokenParameters

public class SupportingTokenParameters {
	// constructors
	public SupportingTokenParameters ();
	// properties
	public System.Collections.ObjectModel.Collection<SecurityTokenParameters> Endorsing { get; }
	public System.Collections.ObjectModel.Collection<SecurityTokenParameters> Signed { get; }
	public System.Collections.ObjectModel.Collection<SecurityTokenParameters> SignedEncrypted { get; }
	public System.Collections.ObjectModel.Collection<SecurityTokenParameters> SignedEndorsing { get; }
	// methods
	public SupportingTokenParameters Clone ();
	public void SetKeyDerivation (bool requireDerivedKeys);
	public override string ToString ();
}

New Type System.ServiceModel.Security.Tokens.UserNameSecurityTokenParameters

public class UserNameSecurityTokenParameters : System.ServiceModel.Security.Tokens.SecurityTokenParameters {
	// constructors
	public UserNameSecurityTokenParameters ();
	protected UserNameSecurityTokenParameters (UserNameSecurityTokenParameters source);
	// properties
	protected override bool HasAsymmetricKey { get; }
	protected override bool SupportsClientAuthentication { get; }
	protected override bool SupportsClientWindowsIdentity { get; }
	protected override bool SupportsServerAuthentication { get; }
	// methods
	protected override SecurityTokenParameters CloneCore ();
}

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.IO.Compression.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.IO.Compression

Type Changed: System.IO.Compression.ZipArchiveEntry

Added method:

	public override string ToString ();

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

monotouch.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace MonoTouch

Type Changed: MonoTouch.Constants

Modified fields:

public const string Version = "9.8.0" "9.8.2";

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

Xamarin.iOS.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

public const string Version = "9.8.0" "9.8.2";