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

Latest commit

 

History

History
3558 lines (3109 loc) · 183 KB

File metadata and controls

3558 lines (3109 loc) · 183 KB
id title
3EDDAEFE-2312-4C85-93EB-0C938E3C4D94
iOS 10.3.1 to 10.4.0

API diff

mscorlib.dll

System.dll

System.Core.dll

System.Data.dll

System.Runtime.Serialization.dll

System.Xml.dll

System.Transactions.dll

Mono.Security.dll

MonoTouch.NUnitLite.dll

System.Net.Http.dll

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 Mono

Type Changed: Mono.Runtime

Added methods:

	public static void InstallSignalHandlers ();
	public static void RemoveSignalHandlers ();

Namespace System

Type Changed: System.AppDomain

Added event:

	public event ResolveEventHandler ReflectionOnlyAssemblyResolve;

Added method:

	[Obsolete ("Use AppDomainSetup.DynamicBase")]
	public void SetDynamicBase (string path);

Type Changed: System.ContextBoundObject

Modified base type: System.Object System.MarshalByRefObject

Type Changed: System.Environment

Added property:

	public static string SystemDirectory { get; }

Type Changed: System.GC

Added methods:

	public static void Collect (int generation, GCCollectionMode mode, bool blocking, bool compacting);
	public static void EndNoGCRegion ();
	public static bool TryStartNoGCRegion (long totalSize);
	public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
	public static bool TryStartNoGCRegion (long totalSize, long lohSize);
	public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);

Namespace System.Diagnostics.Tracing

Type Changed: System.Diagnostics.Tracing.EventSourceException

Added constructor:

	protected EventSourceException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);

New Type System.Diagnostics.Tracing.EventCounter

public class EventCounter {
	// constructors
	public EventCounter (string name, EventSource eventSource);
	// methods
	public void WriteMetric (float value);
}

Namespace System.Globalization

Type Changed: System.Globalization.CompareInfo

Added property:

	public SortVersion Version { get; }

Type Changed: System.Globalization.CultureInfo

Added properties:

	public CultureTypes CultureTypes { get; }
	public string IetfLanguageTag { get; }
	public virtual int KeyboardLayoutId { get; }

Added method:

	public CultureInfo GetConsoleFallbackUICulture ();

Namespace System.IO

Type Changed: System.IO.File

Added methods:

	public static FileStream Create (string path, int bufferSize, FileOptions options, System.Security.AccessControl.FileSecurity fileSecurity);
	public static System.Security.AccessControl.FileSecurity GetAccessControl (string path);
	public static System.Security.AccessControl.FileSecurity GetAccessControl (string path, System.Security.AccessControl.AccessControlSections includeSections);
	public static void SetAccessControl (string path, System.Security.AccessControl.FileSecurity fileSecurity);

Type Changed: System.IO.FileInfo

Added methods:

	public System.Security.AccessControl.FileSecurity GetAccessControl ();
	public System.Security.AccessControl.FileSecurity GetAccessControl (System.Security.AccessControl.AccessControlSections includeSections);
	public void SetAccessControl (System.Security.AccessControl.FileSecurity fileSecurity);

Type Changed: System.IO.FileStream

Added constructors:

	public FileStream (string path, FileMode mode, System.Security.AccessControl.FileSystemRights rights, FileShare share, int bufferSize, FileOptions options);
	public FileStream (string path, FileMode mode, System.Security.AccessControl.FileSystemRights rights, FileShare share, int bufferSize, FileOptions options, System.Security.AccessControl.FileSecurity fileSecurity);

Added methods:

	public System.Security.AccessControl.FileSecurity GetAccessControl ();
	public void SetAccessControl (System.Security.AccessControl.FileSecurity fileSecurity);

Type Changed: System.IO.FileSystemInfo

Modified base type: System.Object System.MarshalByRefObject

Type Changed: System.IO.Stream

Modified base type: System.Object System.MarshalByRefObject

Type Changed: System.IO.TextReader

Modified base type: System.Object System.MarshalByRefObject

Type Changed: System.IO.TextWriter

Modified base type: System.Object System.MarshalByRefObject

Namespace System.Reflection

Type Changed: System.Reflection.Assembly

Added interface:

	System.Runtime.Serialization.ISerializable

Added property:

	public virtual System.Security.SecurityRuleSet SecurityRuleSet { get; }

Type Changed: System.Reflection.TargetException

Modified base type: System.Exception System.ApplicationException

Type Changed: System.Reflection.TargetInvocationException

Modified base type: System.Exception System.ApplicationException

Type Changed: System.Reflection.TargetParameterCountException

Modified base type: System.Exception System.ApplicationException

Namespace System.Reflection.Emit

New Type System.Reflection.Emit.AssemblyBuilder

public class AssemblyBuilder : System.Reflection.Assembly, System.Reflection.ICustomAttributeProvider, System.Runtime.Serialization.ISerializable {
	// constructors
	public AssemblyBuilder ();
	// methods
	public static AssemblyBuilder DefineDynamicAssembly (System.Reflection.AssemblyName name, AssemblyBuilderAccess access);
	public static AssemblyBuilder DefineDynamicAssembly (System.Reflection.AssemblyName name, AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable<CustomAttributeBuilder> assemblyAttributes);
	public ModuleBuilder DefineDynamicModule (string name);
	public ModuleBuilder GetDynamicModule (string name);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
}

New Type System.Reflection.Emit.AssemblyBuilderAccess

[Serializable]
[Flags]
public enum AssemblyBuilderAccess {
	ReflectionOnly = 6,
	Run = 1,
	RunAndCollect = 9,
	RunAndSave = 3,
	Save = 2,
}

New Type System.Reflection.Emit.ConstructorBuilder

public abstract class ConstructorBuilder : System.Reflection.ConstructorInfo, System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._MemberInfo, System.Runtime.InteropServices._MethodBase {
	// constructors
	protected ConstructorBuilder ();
	// properties
	public override System.Reflection.MethodAttributes Attributes { get; }
	public override System.Type DeclaringType { get; }
	public bool InitLocals { get; set; }
	public override string Name { get; }
	// methods
	public ParameterBuilder DefineParameter (int iSequence, System.Reflection.ParameterAttributes attributes, string strParamName);
	public ILGenerator GetILGenerator ();
	public ILGenerator GetILGenerator (int streamSize);
	public override System.Reflection.ParameterInfo[] GetParameters ();
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetImplementationFlags (System.Reflection.MethodImplAttributes attributes);
}

New Type System.Reflection.Emit.CustomAttributeBuilder

public class CustomAttributeBuilder {
	// constructors
	public CustomAttributeBuilder (System.Reflection.ConstructorInfo con, object[] constructorArgs);
	public CustomAttributeBuilder (System.Reflection.ConstructorInfo con, object[] constructorArgs, System.Reflection.FieldInfo[] namedFields, object[] fieldValues);
	public CustomAttributeBuilder (System.Reflection.ConstructorInfo con, object[] constructorArgs, System.Reflection.PropertyInfo[] namedProperties, object[] propertyValues);
	public CustomAttributeBuilder (System.Reflection.ConstructorInfo con, object[] constructorArgs, System.Reflection.PropertyInfo[] namedProperties, object[] propertyValues, System.Reflection.FieldInfo[] namedFields, object[] fieldValues);
}

New Type System.Reflection.Emit.EnumBuilder

public abstract class EnumBuilder : System.Reflection.TypeInfo, System.Reflection.ICustomAttributeProvider, System.Reflection.IReflect, System.Reflection.IReflectableType, System.Runtime.InteropServices._MemberInfo, System.Runtime.InteropServices._Type {
	// constructors
	protected EnumBuilder ();
	// properties
	public override System.Reflection.Assembly Assembly { get; }
	public override string AssemblyQualifiedName { get; }
	public override System.Type BaseType { get; }
	public override string FullName { get; }
	public override System.Guid GUID { get; }
	public override System.Reflection.Module Module { get; }
	public override string Name { get; }
	public override string Namespace { get; }
	public FieldBuilder UnderlyingField { get; }
	// methods
	public System.Reflection.TypeInfo CreateTypeInfo ();
	public FieldBuilder DefineLiteral (string literalName, object literalValue);
	public override System.Type GetElementType ();
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
}

New Type System.Reflection.Emit.EventBuilder

public class EventBuilder {
	// constructors
	public EventBuilder ();
	// methods
	public void AddOtherMethod (MethodBuilder mdBuilder);
	public void SetAddOnMethod (MethodBuilder mdBuilder);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetRaiseMethod (MethodBuilder mdBuilder);
	public void SetRemoveOnMethod (MethodBuilder mdBuilder);
}

New Type System.Reflection.Emit.FieldBuilder

public abstract class FieldBuilder : System.Reflection.FieldInfo, System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._MemberInfo {
	// constructors
	protected FieldBuilder ();
	// properties
	public override System.Reflection.FieldAttributes Attributes { get; }
	public override System.Type DeclaringType { get; }
	public override System.Type FieldType { get; }
	public override string Name { get; }
	// methods
	public override object GetValue (object obj);
	public void SetConstant (object defaultValue);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetOffset (int iOffset);
}

New Type System.Reflection.Emit.GenericTypeParameterBuilder

public abstract class GenericTypeParameterBuilder : System.Reflection.TypeInfo, System.Reflection.ICustomAttributeProvider, System.Reflection.IReflect, System.Reflection.IReflectableType, System.Runtime.InteropServices._MemberInfo, System.Runtime.InteropServices._Type {
	// constructors
	protected GenericTypeParameterBuilder ();
	// properties
	public override System.Reflection.Assembly Assembly { get; }
	public override string AssemblyQualifiedName { get; }
	public override System.Type BaseType { get; }
	public override string FullName { get; }
	public override System.Guid GUID { get; }
	public override System.Reflection.Module Module { get; }
	public override string Name { get; }
	public override string Namespace { get; }
	// methods
	public override System.Type GetElementType ();
	public void SetBaseTypeConstraint (System.Type baseTypeConstraint);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetGenericParameterAttributes (System.Reflection.GenericParameterAttributes genericParameterAttributes);
	public void SetInterfaceConstraints (System.Type[] interfaceConstraints);
}

New Type System.Reflection.Emit.ILGenerator

public class ILGenerator {
	// properties
	public int ILOffset { get; }
	// methods
	public virtual void BeginCatchBlock (System.Type exceptionType);
	public virtual void BeginExceptFilterBlock ();
	public virtual Label BeginExceptionBlock ();
	public virtual void BeginFaultBlock ();
	public virtual void BeginFinallyBlock ();
	public virtual void BeginScope ();
	public virtual LocalBuilder DeclareLocal (System.Type localType);
	public virtual LocalBuilder DeclareLocal (System.Type localType, bool pinned);
	public virtual Label DefineLabel ();
	public virtual void Emit (OpCode opcode);
	public virtual void Emit (OpCode opcode, byte arg);
	public virtual void Emit (OpCode opcode, double arg);
	public virtual void Emit (OpCode opcode, short arg);
	public virtual void Emit (OpCode opcode, int arg);
	public virtual void Emit (OpCode opcode, long arg);
	public virtual void Emit (OpCode opcode, System.Reflection.ConstructorInfo con);
	public virtual void Emit (OpCode opcode, Label label);
	public virtual void Emit (OpCode opcode, Label[] labels);
	public virtual void Emit (OpCode opcode, LocalBuilder local);
	public virtual void Emit (OpCode opcode, SignatureHelper signature);
	public virtual void Emit (OpCode opcode, System.Reflection.FieldInfo field);
	public virtual void Emit (OpCode opcode, System.Reflection.MethodInfo meth);
	public void Emit (OpCode opcode, sbyte arg);
	public virtual void Emit (OpCode opcode, float arg);
	public virtual void Emit (OpCode opcode, string str);
	public virtual void Emit (OpCode opcode, System.Type cls);
	public virtual void EmitCall (OpCode opcode, System.Reflection.MethodInfo methodInfo, System.Type[] optionalParameterTypes);
	public virtual void EmitCalli (OpCode opcode, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes, System.Type[] optionalParameterTypes);
	public virtual void EmitWriteLine (LocalBuilder localBuilder);
	public virtual void EmitWriteLine (System.Reflection.FieldInfo fld);
	public virtual void EmitWriteLine (string value);
	public virtual void EndExceptionBlock ();
	public virtual void EndScope ();
	public virtual void MarkLabel (Label loc);
	public virtual void ThrowException (System.Type excType);
	public virtual void UsingNamespace (string usingNamespace);
}

New Type System.Reflection.Emit.Label

[Serializable]
public struct Label {
	// methods
	public override bool Equals (object obj);
	public bool Equals (Label obj);
	public override int GetHashCode ();
	public static bool op_Equality (Label a, Label b);
	public static bool op_Inequality (Label a, Label b);
}

New Type System.Reflection.Emit.LocalBuilder

public sealed class LocalBuilder : System.Reflection.LocalVariableInfo {
	// properties
	public override bool IsPinned { get; }
	public override int LocalIndex { get; }
	public override System.Type LocalType { get; }
	// methods
	public void SetLocalSymInfo (string name);
	public void SetLocalSymInfo (string name, int startOffset, int endOffset);
}

New Type System.Reflection.Emit.MethodBuilder

public abstract class MethodBuilder : System.Reflection.MethodInfo, System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._MemberInfo, System.Runtime.InteropServices._MethodBase {
	// constructors
	protected MethodBuilder ();
	// properties
	public override System.Reflection.MethodAttributes Attributes { get; }
	public override System.Type DeclaringType { get; }
	public bool InitLocals { get; set; }
	public override string Name { get; }
	// methods
	public GenericTypeParameterBuilder[] DefineGenericParameters (string[] names);
	public ParameterBuilder DefineParameter (int position, System.Reflection.ParameterAttributes attributes, string strParamName);
	public ILGenerator GetILGenerator ();
	public ILGenerator GetILGenerator (int size);
	public override System.Reflection.ParameterInfo[] GetParameters ();
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetImplementationFlags (System.Reflection.MethodImplAttributes attributes);
	public void SetParameters (System.Type[] parameterTypes);
	public void SetReturnType (System.Type returnType);
	public void SetSignature (System.Type returnType, System.Type[] returnTypeRequiredCustomModifiers, System.Type[] returnTypeOptionalCustomModifiers, System.Type[] parameterTypes, System.Type[][] parameterTypeRequiredCustomModifiers, System.Type[][] parameterTypeOptionalCustomModifiers);
}

New Type System.Reflection.Emit.ModuleBuilder

public abstract class ModuleBuilder : System.Reflection.Module, System.Reflection.ICustomAttributeProvider, System.Runtime.Serialization.ISerializable {
	// constructors
	protected ModuleBuilder ();
	// methods
	public void CreateGlobalFunctions ();
	public EnumBuilder DefineEnum (string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType);
	public MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Type returnType, System.Type[] parameterTypes);
	public MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes);
	public MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] requiredReturnTypeCustomModifiers, System.Type[] optionalReturnTypeCustomModifiers, System.Type[] parameterTypes, System.Type[][] requiredParameterTypeCustomModifiers, System.Type[][] optionalParameterTypeCustomModifiers);
	public FieldBuilder DefineInitializedData (string name, byte[] data, System.Reflection.FieldAttributes attributes);
	public TypeBuilder DefineType (string name);
	public TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr);
	public TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, System.Type parent);
	public TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, System.Type parent, int typesize);
	public TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, System.Type parent, PackingSize packsize);
	public TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, System.Type parent, System.Type[] interfaces);
	public TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, System.Type parent, PackingSize packingSize, int typesize);
	public FieldBuilder DefineUninitializedData (string name, int size, System.Reflection.FieldAttributes attributes);
	public System.Reflection.MethodInfo GetArrayMethod (System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
}

New Type System.Reflection.Emit.ParameterBuilder

public class ParameterBuilder {
	// properties
	public int Attributes { get; }
	public bool IsIn { get; }
	public bool IsOptional { get; }
	public bool IsOut { get; }
	public string Name { get; }
	public int Position { get; }
	// methods
	public virtual void SetConstant (object defaultValue);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
}

New Type System.Reflection.Emit.PropertyBuilder

public abstract class PropertyBuilder : System.Reflection.PropertyInfo, System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._MemberInfo {
	// constructors
	protected PropertyBuilder ();
	// properties
	public override System.Reflection.PropertyAttributes Attributes { get; }
	public override bool CanRead { get; }
	public override bool CanWrite { get; }
	public override System.Type DeclaringType { get; }
	public override string Name { get; }
	public override System.Type PropertyType { get; }
	// methods
	public void AddOtherMethod (MethodBuilder mdBuilder);
	public override System.Reflection.ParameterInfo[] GetIndexParameters ();
	public void SetConstant (object defaultValue);
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetGetMethod (MethodBuilder mdBuilder);
	public void SetSetMethod (MethodBuilder mdBuilder);
}

New Type System.Reflection.Emit.SignatureHelper

public class SignatureHelper {
	// methods
	public void AddArgument (System.Type clsArgument);
	public void AddArgument (System.Type argument, bool pinned);
	public void AddArgument (System.Type argument, System.Type[] requiredCustomModifiers, System.Type[] optionalCustomModifiers);
	public void AddArguments (System.Type[] arguments, System.Type[][] requiredCustomModifiers, System.Type[][] optionalCustomModifiers);
	public void AddSentinel ();
	public static SignatureHelper GetFieldSigHelper (System.Reflection.Module mod);
	public static SignatureHelper GetLocalVarSigHelper ();
	public static SignatureHelper GetLocalVarSigHelper (System.Reflection.Module mod);
	public static SignatureHelper GetMethodSigHelper (System.Reflection.CallingConventions callingConvention, System.Type returnType);
	public static SignatureHelper GetMethodSigHelper (System.Reflection.Module mod, System.Reflection.CallingConventions callingConvention, System.Type returnType);
	public static SignatureHelper GetMethodSigHelper (System.Reflection.Module mod, System.Type returnType, System.Type[] parameterTypes);
	public static SignatureHelper GetPropertySigHelper (System.Reflection.Module mod, System.Type returnType, System.Type[] parameterTypes);
	public static SignatureHelper GetPropertySigHelper (System.Reflection.Module mod, System.Type returnType, System.Type[] requiredReturnTypeCustomModifiers, System.Type[] optionalReturnTypeCustomModifiers, System.Type[] parameterTypes, System.Type[][] requiredParameterTypeCustomModifiers, System.Type[][] optionalParameterTypeCustomModifiers);
	public static SignatureHelper GetPropertySigHelper (System.Reflection.Module mod, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] requiredReturnTypeCustomModifiers, System.Type[] optionalReturnTypeCustomModifiers, System.Type[] parameterTypes, System.Type[][] requiredParameterTypeCustomModifiers, System.Type[][] optionalParameterTypeCustomModifiers);
	public byte[] GetSignature ();
}

New Type System.Reflection.Emit.TypeBuilder

public abstract class TypeBuilder : System.Reflection.TypeInfo, System.Reflection.ICustomAttributeProvider, System.Reflection.IReflect, System.Reflection.IReflectableType, System.Runtime.InteropServices._MemberInfo, System.Runtime.InteropServices._Type {
	// constructors
	protected TypeBuilder ();
	// fields
	public static const int UnspecifiedTypeSize;
	// properties
	public override System.Reflection.Assembly Assembly { get; }
	public override string AssemblyQualifiedName { get; }
	public override System.Type BaseType { get; }
	public override string FullName { get; }
	public override System.Guid GUID { get; }
	public override System.Reflection.Module Module { get; }
	public override string Name { get; }
	public override string Namespace { get; }
	public PackingSize PackingSize { get; }
	public int Size { get; }
	// methods
	public void AddInterfaceImplementation (System.Type interfaceType);
	public System.Reflection.TypeInfo CreateTypeInfo ();
	public ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[] parameterTypes);
	public ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[] parameterTypes, System.Type[][] requiredCustomModifiers, System.Type[][] optionalCustomModifiers);
	public ConstructorBuilder DefineDefaultConstructor (System.Reflection.MethodAttributes attributes);
	public EventBuilder DefineEvent (string name, System.Reflection.EventAttributes attributes, System.Type eventtype);
	public FieldBuilder DefineField (string fieldName, System.Type type, System.Reflection.FieldAttributes attributes);
	public FieldBuilder DefineField (string fieldName, System.Type type, System.Type[] requiredCustomModifiers, System.Type[] optionalCustomModifiers, System.Reflection.FieldAttributes attributes);
	public GenericTypeParameterBuilder[] DefineGenericParameters (string[] names);
	public FieldBuilder DefineInitializedData (string name, byte[] data, System.Reflection.FieldAttributes attributes);
	public MethodBuilder DefineMethod (string name, System.Reflection.MethodAttributes attributes);
	public MethodBuilder DefineMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention);
	public MethodBuilder DefineMethod (string name, System.Reflection.MethodAttributes attributes, System.Type returnType, System.Type[] parameterTypes);
	public MethodBuilder DefineMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes);
	public MethodBuilder DefineMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] returnTypeRequiredCustomModifiers, System.Type[] returnTypeOptionalCustomModifiers, System.Type[] parameterTypes, System.Type[][] parameterTypeRequiredCustomModifiers, System.Type[][] parameterTypeOptionalCustomModifiers);
	public void DefineMethodOverride (System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration);
	public TypeBuilder DefineNestedType (string name);
	public TypeBuilder DefineNestedType (string name, System.Reflection.TypeAttributes attr);
	public TypeBuilder DefineNestedType (string name, System.Reflection.TypeAttributes attr, System.Type parent);
	public TypeBuilder DefineNestedType (string name, System.Reflection.TypeAttributes attr, System.Type parent, int typeSize);
	public TypeBuilder DefineNestedType (string name, System.Reflection.TypeAttributes attr, System.Type parent, PackingSize packSize);
	public TypeBuilder DefineNestedType (string name, System.Reflection.TypeAttributes attr, System.Type parent, System.Type[] interfaces);
	public TypeBuilder DefineNestedType (string name, System.Reflection.TypeAttributes attr, System.Type parent, PackingSize packSize, int typeSize);
	public PropertyBuilder DefineProperty (string name, System.Reflection.PropertyAttributes attributes, System.Type returnType, System.Type[] parameterTypes);
	public PropertyBuilder DefineProperty (string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes);
	public PropertyBuilder DefineProperty (string name, System.Reflection.PropertyAttributes attributes, System.Type returnType, System.Type[] returnTypeRequiredCustomModifiers, System.Type[] returnTypeOptionalCustomModifiers, System.Type[] parameterTypes, System.Type[][] parameterTypeRequiredCustomModifiers, System.Type[][] parameterTypeOptionalCustomModifiers);
	public PropertyBuilder DefineProperty (string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] returnTypeRequiredCustomModifiers, System.Type[] returnTypeOptionalCustomModifiers, System.Type[] parameterTypes, System.Type[][] parameterTypeRequiredCustomModifiers, System.Type[][] parameterTypeOptionalCustomModifiers);
	public ConstructorBuilder DefineTypeInitializer ();
	public FieldBuilder DefineUninitializedData (string name, int size, System.Reflection.FieldAttributes attributes);
	public static System.Reflection.ConstructorInfo GetConstructor (System.Type type, System.Reflection.ConstructorInfo constructor);
	public override System.Type GetElementType ();
	public static System.Reflection.FieldInfo GetField (System.Type type, System.Reflection.FieldInfo field);
	public static System.Reflection.MethodInfo GetMethod (System.Type type, System.Reflection.MethodInfo method);
	public bool IsCreated ();
	public void SetCustomAttribute (CustomAttributeBuilder customBuilder);
	public void SetCustomAttribute (System.Reflection.ConstructorInfo con, byte[] binaryAttribute);
	public void SetParent (System.Type parent);
}

Namespace System.Runtime

Type Changed: System.Runtime.GCLatencyMode

Added value:

	NoGCRegion = 4,

Namespace System.Runtime.CompilerServices

New Type System.Runtime.CompilerServices.IDispatchConstantAttribute

[Serializable]
public sealed class IDispatchConstantAttribute : System.Runtime.CompilerServices.CustomConstantAttribute {
	// constructors
	public IDispatchConstantAttribute ();
	// properties
	public override object Value { get; }
}

Namespace System.Runtime.InteropServices

Type Changed: System.Runtime.InteropServices.Marshal

Added methods:

	public static IntPtr BufferToBSTR (System.Array ptr, int slen);
	public static void CleanupUnusedObjectsInCurrentContext ();

Type Changed: System.Runtime.InteropServices.RuntimeEnvironment

Added methods:

	public static IntPtr GetRuntimeInterfaceAsIntPtr (System.Guid clsid, System.Guid riid);
	public static object GetRuntimeInterfaceAsObject (System.Guid clsid, System.Guid riid);

Removed Type System.Runtime.InteropServices.ComAwareEventInfo

Namespace System.Runtime.Serialization.Formatters.Binary

Type Changed: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

Added interface:

	System.Runtime.Remoting.Messaging.IRemotingFormatter

Namespace System.Security

Type Changed: System.Security.SecurityCriticalAttribute

Added constructor:

	public SecurityCriticalAttribute (SecurityCriticalScope scope);

Added property:

	[Obsolete ("SecurityCriticalScope is only used for .NET 2.0 transparency compatibility.")]
	public SecurityCriticalScope Scope { get; }

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.CryptoConfig

Added methods:

	public static void AddAlgorithm (System.Type algorithm, string[] names);
	public static void AddOID (string oid, string[] names);

Type Changed: System.Security.Cryptography.DSA

Added methods:

	protected virtual byte[] HashData (System.IO.Stream data, HashAlgorithmName hashAlgorithm);
	protected virtual byte[] HashData (byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
	public byte[] SignData (byte[] data, HashAlgorithmName hashAlgorithm);
	public virtual byte[] SignData (System.IO.Stream data, HashAlgorithmName hashAlgorithm);
	public virtual byte[] SignData (byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
	public bool VerifyData (byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm);
	public virtual bool VerifyData (System.IO.Stream data, byte[] signature, HashAlgorithmName hashAlgorithm);
	public virtual bool VerifyData (byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm);

Type Changed: System.Security.Cryptography.RC2CryptoServiceProvider

Added property:

	public bool UseSalt { get; set; }

Type Changed: System.Security.Cryptography.RNGCryptoServiceProvider

Added constructors:

	public RNGCryptoServiceProvider (byte[] rgb);
	public RNGCryptoServiceProvider (CspParameters cspParams);
	public RNGCryptoServiceProvider (string str);

Type Changed: System.Security.Cryptography.RSACryptoServiceProvider

Added methods:

	public override byte[] Decrypt (byte[] data, RSAEncryptionPadding padding);
	public override byte[] Encrypt (byte[] data, RSAEncryptionPadding padding);
	protected override byte[] HashData (System.IO.Stream data, HashAlgorithmName hashAlgorithm);
	protected override byte[] HashData (byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm);
	public override byte[] SignHash (byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
	public override bool VerifyHash (byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);

Type Changed: System.Security.Cryptography.Rfc2898DeriveBytes

Added method:

	public byte[] CryptDeriveKey (string algname, string alghashname, int keySize, byte[] rgbIV);

New Type System.Security.Cryptography.IncrementalHash

public sealed class IncrementalHash : System.IDisposable {
	// properties
	public HashAlgorithmName AlgorithmName { get; }
	// methods
	public void AppendData (byte[] data);
	public void AppendData (byte[] data, int offset, int count);
	public static IncrementalHash CreateHMAC (HashAlgorithmName hashAlgorithm, byte[] key);
	public static IncrementalHash CreateHash (HashAlgorithmName hashAlgorithm);
	public virtual void Dispose ();
	public byte[] GetHashAndReset ();
}

Namespace System.Threading

Type Changed: System.Threading.EventWaitHandle

Removed method:

	protected override void Dispose (bool explicitDisposing);

Added method:

	public System.Security.AccessControl.EventWaitHandleSecurity GetAccessControl ();

Type Changed: System.Threading.Thread

Added method:

	public void DisableComObjectEagerCleanup ();

Type Changed: System.Threading.ThreadAbortException

Added property:

	public object ExceptionState { get; }

<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 Microsoft.Win32.SafeHandles

Type Changed: Microsoft.Win32.SafeHandles.SafeX509ChainHandle

Modified base type: System.Runtime.InteropServices.SafeHandle Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid

Removed property:

	public override bool IsInvalid { get; }

Namespace Mono.Security.Interface

Type Changed: Mono.Security.Interface.CertificateValidationHelper

Removed method:

	public static ICertificateValidator GetValidator (MonoTlsSettings settings, MonoTlsProvider provider);

Added method:

	public static ICertificateValidator GetValidator (MonoTlsSettings settings);

Type Changed: Mono.Security.Interface.MonoTlsConnectionInfo

Added property:

	public string PeerDomainName { get; set; }

Type Changed: Mono.Security.Interface.MonoTlsProviderFactory

Removed property:

	public static bool HasProvider { get; }

Added property:

	public static bool IsInitialized { get; }

Obsoleted methods:

[Obsolete ("Use GetProvider() instead.")] public static MonoTlsProvider GetDefaultProvider ();
[Obsolete ("Use Initialize(string provider) instead.")] public static void SetDefaultProvider (string name);

Modified methods:

public MonoTlsProvider GetProvider (string name provider)

Added methods:

	public static void Initialize ();
	public static void Initialize (string provider);
	public static bool IsProviderSupported (string provider);

Namespace System.Diagnostics

Type Changed: System.Diagnostics.ProcessModuleCollection

Modified base type: System.Diagnostics.ProcessModuleCollectionBase System.Collections.ReadOnlyCollectionBase

Removed interfaces:

	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.IList

Added property:

	[Obsolete ("This API is no longer available")]
	public int Capacity { get; set; }

Added methods:

	[Obsolete ("This API is no longer available")]
	public void Add (ProcessModule item);
<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void AddRange (System.Collections.Generic.IEnumerable&lt;ProcessModule&gt; collection);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.ObjectModel.ReadOnlyCollection&lt;ProcessModule&gt; AsReadOnly ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int BinarySearch (ProcessModule item);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int BinarySearch (ProcessModule item, System.Collections.Generic.IComparer&lt;ProcessModule&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int BinarySearch (int index, int count, ProcessModule item, System.Collections.Generic.IComparer&lt;ProcessModule&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Clear ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.Generic.List&lt;TOutput&gt; ConvertAll&lt;TOutput&gt; (System.Converter&lt;ProcessModule,TOutput&gt; converter);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void CopyTo (ProcessModule[] array);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void CopyTo (int index, ProcessModule[] array, int arrayIndex, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public bool Exists (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public ProcessModule Find (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.Generic.List&lt;ProcessModule&gt; FindAll (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindIndex (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindIndex (int startIndex, System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindIndex (int startIndex, int count, System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public ProcessModule FindLast (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindLastIndex (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindLastIndex (int startIndex, System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindLastIndex (int startIndex, int count, System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void ForEach (System.Action&lt;ProcessModule&gt; action);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.Generic.List&lt;ProcessModule&gt; GetRange (int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int IndexOf (ProcessModule item, int index);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int IndexOf (ProcessModule item, int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Insert (int index, ProcessModule item);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void InsertRange (int index, System.Collections.Generic.IEnumerable&lt;ProcessModule&gt; collection);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int LastIndexOf (ProcessModule item);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int LastIndexOf (ProcessModule item, int index);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int LastIndexOf (ProcessModule item, int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public bool Remove (ProcessModule item);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int RemoveAll (System.Predicate&lt;ProcessModule&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void RemoveAt (int index);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void RemoveRange (int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Reverse ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Reverse (int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort (System.Collections.Generic.IComparer&lt;ProcessModule&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort (System.Comparison&lt;ProcessModule&gt; comparison);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort (int index, int count, System.Collections.Generic.IComparer&lt;ProcessModule&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public ProcessModule[] ToArray ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void TrimExcess ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public bool TrueForAll (System.Predicate&lt;ProcessModule&gt; match);</span>

Type Changed: System.Diagnostics.ProcessThreadCollection

Modified base type: System.Diagnostics.ProcessThreadCollectionBase System.Collections.ReadOnlyCollectionBase

Removed interfaces:

	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.IList

Added property:

	[Obsolete ("This API is no longer available")]
	public int Capacity { get; set; }

Added methods:

	[Obsolete ("This API is no longer available")]
	public void AddRange (System.Collections.Generic.IEnumerable<ProcessThread> collection);
<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.ObjectModel.ReadOnlyCollection&lt;ProcessThread&gt; AsReadOnly ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int BinarySearch (ProcessThread item);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int BinarySearch (ProcessThread item, System.Collections.Generic.IComparer&lt;ProcessThread&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int BinarySearch (int index, int count, ProcessThread item, System.Collections.Generic.IComparer&lt;ProcessThread&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Clear ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.Generic.List&lt;TOutput&gt; ConvertAll&lt;TOutput&gt; (System.Converter&lt;ProcessThread,TOutput&gt; converter);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void CopyTo (ProcessThread[] array);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void CopyTo (int index, ProcessThread[] array, int arrayIndex, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public bool Exists (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public ProcessThread Find (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.Generic.List&lt;ProcessThread&gt; FindAll (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindIndex (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindIndex (int startIndex, System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindIndex (int startIndex, int count, System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public ProcessThread FindLast (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindLastIndex (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindLastIndex (int startIndex, System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int FindLastIndex (int startIndex, int count, System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void ForEach (System.Action&lt;ProcessThread&gt; action);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public System.Collections.Generic.List&lt;ProcessThread&gt; GetRange (int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int IndexOf (ProcessThread item, int index);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int IndexOf (ProcessThread item, int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void InsertRange (int index, System.Collections.Generic.IEnumerable&lt;ProcessThread&gt; collection);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int LastIndexOf (ProcessThread item);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int LastIndexOf (ProcessThread item, int index);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int LastIndexOf (ProcessThread item, int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public int RemoveAll (System.Predicate&lt;ProcessThread&gt; match);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void RemoveAt (int index);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void RemoveRange (int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Reverse ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Reverse (int index, int count);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort (System.Collections.Generic.IComparer&lt;ProcessThread&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort (System.Comparison&lt;ProcessThread&gt; comparison);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void Sort (int index, int count, System.Collections.Generic.IComparer&lt;ProcessThread&gt; comparer);</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public ProcessThread[] ToArray ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public void TrimExcess ();</span>

<span class='added added-method ' data-is-non-breaking="">[Obsolete ("This API is no longer available")]
public bool TrueForAll (System.Predicate&lt;ProcessThread&gt; match);</span>

Removed Type System.Diagnostics.ProcessModuleCollectionBase

Removed Type System.Diagnostics.ProcessThreadCollectionBase

Namespace System.IO

Type Changed: System.IO.FileSystemWatcher

Modified base type: System.Object System.ComponentModel.Component

Added interfaces:

	System.ComponentModel.IComponent
	System.ComponentModel.ISupportInitialize

Added properties:

	public override System.ComponentModel.ISite Site { get; set; }
	public System.ComponentModel.ISynchronizeInvoke SynchronizingObject { get; set; }

Modified methods:

protected virtual override void Dispose (bool disposing)

Added methods:

	public virtual void BeginInit ();
	public virtual void EndInit ();

New Type System.IO.IODescriptionAttribute

public class IODescriptionAttribute : System.ComponentModel.DescriptionAttribute {
	// constructors
	public IODescriptionAttribute (string description);
	// properties
	public override string Description { get; }
}

Namespace System.Net

Type Changed: System.Net.HttpListener

Added properties:

	public System.Security.Authentication.ExtendedProtection.ServiceNameCollection DefaultServiceNames { get; }
	public System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy ExtendedProtectionPolicy { get; set; }
	public HttpListener.ExtendedProtectionSelector ExtendedProtectionSelectorDelegate { get; set; }
	public HttpListenerTimeoutManager TimeoutManager { get; }

Type Changed: System.Net.HttpListenerContext

Added method:

	public System.Threading.Tasks.Task<WebSockets.HttpListenerWebSocketContext> AcceptWebSocketAsync (string subProtocol, System.TimeSpan keepAliveInterval);

Type Changed: System.Net.HttpListenerTimeoutManager

Added properties:

	public System.TimeSpan DrainEntityBody { get; set; }
	public System.TimeSpan EntityBody { get; set; }
	public System.TimeSpan HeaderWait { get; set; }
	public System.TimeSpan IdleConnection { get; set; }
	public long MinSendBytesPerSecond { get; set; }
	public System.TimeSpan RequestQueue { get; set; }

Type Changed: System.Net.HttpWebRequest

Modified properties:

public virtual bool AllowAutoRedirect { get; set; }
public virtual bool AllowWriteStreamBuffering { get; set; }

Added method:

	public System.IO.Stream GetRequestStream (TransportContext context);

Type Changed: System.Net.ServicePointManager

Added properties:

	public static Security.EncryptionPolicy EncryptionPolicy { get; }
	public static bool ReusePort { get; set; }

Type Changed: System.Net.WebProxy

Modified constructors:

public WebProxy (string address Address)
public WebProxy (System.Uri address Address)
public WebProxy (string address Address, bool bypassOnLocal BypassOnLocal)
public WebProxy (string host Host, int port Port)
public WebProxy (System.Uri address Address, bool bypassOnLocal BypassOnLocal)
public WebProxy (string address Address, bool bypassOnLocal BypassOnLocal, string[] bypassList BypassList)
public WebProxy (System.Uri address Address, bool bypassOnLocal BypassOnLocal, string[] bypassList BypassList)
public WebProxy (string address Address, bool bypassOnLocal BypassOnLocal, string[] bypassList BypassList, ICredentials credentials Credentials)
public WebProxy (System.Uri address Address, bool bypassOnLocal BypassOnLocal, string[] bypassList BypassList, ICredentials credentials Credentials)

Added method:

	public static IWebProxy CreateDefaultProxy ();

Type Changed: System.Net.WebRequest

Added property:

	[Obsolete ("This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.")]
	public virtual IWebRequestCreate CreatorInstance { get; }

Added method:

	[Obsolete ("This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.")]
	public static void RegisterPortableWebRequestCreator (IWebRequestCreate creator);

Namespace System.Net.Mail

Type Changed: System.Net.Mail.MailMessage

Added property:

	public System.Net.Mime.TransferEncoding BodyTransferEncoding { get; set; }

Type Changed: System.Net.Mail.SmtpClient

Added property:

	public SmtpDeliveryFormat DeliveryFormat { get; set; }

Namespace System.Net.Security

Type Changed: System.Net.Security.NegotiateStream

Added methods:

	public virtual void AuthenticateAsClient (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ChannelBinding binding, string targetName);
	public virtual void AuthenticateAsClient (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ChannelBinding binding, string targetName, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel allowedImpersonationLevel);
	public virtual void AuthenticateAsServer (System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy policy);
	public virtual void AuthenticateAsServer (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy policy, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel requiredImpersonationLevel);
	public virtual System.IAsyncResult BeginAuthenticateAsClient (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ChannelBinding binding, string targetName, System.AsyncCallback asyncCallback, object asyncState);
	public virtual System.IAsyncResult BeginAuthenticateAsClient (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ChannelBinding binding, string targetName, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel allowedImpersonationLevel, System.AsyncCallback asyncCallback, object asyncState);
	public virtual System.IAsyncResult BeginAuthenticateAsServer (System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy policy, System.AsyncCallback asyncCallback, object asyncState);
	public virtual System.IAsyncResult BeginAuthenticateAsServer (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy policy, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel requiredImpersonationLevel, System.AsyncCallback asyncCallback, object asyncState);

Namespace System.Net.Sockets

Type Changed: System.Net.Sockets.Socket

Added constructor:

	public Socket (SocketInformation socketInformation);

Added methods:

	public SocketInformation DuplicateAndClose (int targetProcessId);
	public void SetIPProtectionLevel (IPProtectionLevel level);

Type Changed: System.Net.Sockets.SocketAsyncEventArgs

Added property:

	public TransmitFileOptions SendPacketsFlags { get; set; }

Type Changed: System.Net.Sockets.TcpListener

Added methods:

	public void AllowNatTraversal (bool allowed);
	public static TcpListener Create (int port);

Type Changed: System.Net.Sockets.UdpClient

Added method:

	public void AllowNatTraversal (bool allowed);

New Type System.Net.Sockets.SocketReceiveFromResult

public struct SocketReceiveFromResult {
	// fields
	public int ReceivedBytes;
	public System.Net.EndPoint RemoteEndPoint;
}

New Type System.Net.Sockets.SocketReceiveMessageFromResult

public struct SocketReceiveMessageFromResult {
	// fields
	public IPPacketInformation PacketInformation;
	public int ReceivedBytes;
	public System.Net.EndPoint RemoteEndPoint;
	public SocketFlags SocketFlags;
}

New Type System.Net.Sockets.SocketTaskExtensions

public static class SocketTaskExtensions {
	// methods
	public static System.Threading.Tasks.Task<Socket> AcceptAsync (Socket socket);
	public static System.Threading.Tasks.Task<Socket> AcceptAsync (Socket socket, Socket acceptSocket);
	public static System.Threading.Tasks.Task ConnectAsync (Socket socket, System.Net.EndPoint remoteEP);
	public static System.Threading.Tasks.Task ConnectAsync (Socket socket, System.Net.IPAddress address, int port);
	public static System.Threading.Tasks.Task ConnectAsync (Socket socket, System.Net.IPAddress[] addresses, int port);
	public static System.Threading.Tasks.Task ConnectAsync (Socket socket, string host, int port);
	public static System.Threading.Tasks.Task<int> ReceiveAsync (Socket socket, System.ArraySegment<byte> buffer, SocketFlags socketFlags);
	public static System.Threading.Tasks.Task<int> ReceiveAsync (Socket socket, System.Collections.Generic.IList<System.ArraySegment<byte>> buffers, SocketFlags socketFlags);
	public static System.Threading.Tasks.Task<SocketReceiveFromResult> ReceiveFromAsync (Socket socket, System.ArraySegment<byte> buffer, SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
	public static System.Threading.Tasks.Task<SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Socket socket, System.ArraySegment<byte> buffer, SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
	public static System.Threading.Tasks.Task<int> SendAsync (Socket socket, System.ArraySegment<byte> buffer, SocketFlags socketFlags);
	public static System.Threading.Tasks.Task<int> SendAsync (Socket socket, System.Collections.Generic.IList<System.ArraySegment<byte>> buffers, SocketFlags socketFlags);
	public static System.Threading.Tasks.Task<int> SendToAsync (Socket socket, System.ArraySegment<byte> buffer, SocketFlags socketFlags, System.Net.EndPoint remoteEP);
}

Namespace System.Security.Cryptography.X509Certificates

Type Changed: System.Security.Cryptography.X509Certificates.X509Certificate2

Added constructor:

	protected X509Certificate2 (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);

Namespace System.Text.RegularExpressions

Type Changed: System.Text.RegularExpressions.Regex

Added method:

	protected bool UseOptionC ();

New Namespace System.Diagnostics.CodeAnalysis

New Type System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute

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

New Namespace System.Windows.Markup

New Type System.Windows.Markup.ValueSerializerAttribute

public sealed class ValueSerializerAttribute : System.Attribute {
	// constructors
	public ValueSerializerAttribute (string valueSerializerTypeName);
	public ValueSerializerAttribute (System.Type valueSerializerType);
	// properties
	public System.Type ValueSerializerType { get; }
	public string ValueSerializerTypeName { get; }
}

<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

Type Changed: Microsoft.Win32.SafeHandles.SafeNCryptHandle

Modified base type: System.Runtime.InteropServices.SafeHandle Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid

Namespace System.IO.Pipes

Type Changed: System.IO.Pipes.AnonymousPipeServerStream

Added constructor:

	public AnonymousPipeServerStream (PipeDirection direction, System.IO.HandleInheritability inheritability, int bufferSize, PipeSecurity pipeSecurity);

Type Changed: System.IO.Pipes.NamedPipeClientStream

Added constructor:

	public NamedPipeClientStream (string serverName, string pipeName, PipeAccessRights desiredAccessRights, PipeOptions options, System.Security.Principal.TokenImpersonationLevel impersonationLevel, System.IO.HandleInheritability inheritability);

Added method:

	protected override void CheckPipePropertyOperations ();

Type Changed: System.IO.Pipes.NamedPipeServerStream

Added constructors:

	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, int inBufferSize, int outBufferSize, PipeSecurity pipeSecurity);
	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, int inBufferSize, int outBufferSize, PipeSecurity pipeSecurity, System.IO.HandleInheritability inheritability);
	public NamedPipeServerStream (string pipeName, PipeDirection direction, int maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, int inBufferSize, int outBufferSize, PipeSecurity pipeSecurity, System.IO.HandleInheritability inheritability, PipeAccessRights additionalAccessRights);

Added methods:

	public System.IAsyncResult BeginWaitForConnection (System.AsyncCallback callback, object state);
	public void EndWaitForConnection (System.IAsyncResult asyncResult);
	public void RunAsClient (PipeStreamImpersonationWorker impersonationWorker);

Type Changed: System.IO.Pipes.PipeStream

Added property:

	protected bool IsHandleExposed { get; }

Added methods:

	public override System.IAsyncResult BeginRead (byte[] buffer, int offset, int count, System.AsyncCallback callback, object state);
	public override System.IAsyncResult BeginWrite (byte[] buffer, int offset, int count, System.AsyncCallback callback, object state);
	protected virtual void CheckPipePropertyOperations ();
	protected void CheckReadOperations ();
	protected void CheckWriteOperations ();
	public override int EndRead (System.IAsyncResult asyncResult);
	public override void EndWrite (System.IAsyncResult asyncResult);
	public PipeSecurity GetAccessControl ();
	protected void InitializeHandle (Microsoft.Win32.SafeHandles.SafePipeHandle handle, bool isExposed, bool isAsync);
	public void SetAccessControl (PipeSecurity pipeSecurity);

Namespace System.Runtime.CompilerServices

Type Changed: System.Runtime.CompilerServices.DebugInfoGenerator

Added method:

	public static DebugInfoGenerator CreatePdbGenerator ();

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.ECDiffieHellmanPublicKey

Modified methods:

public abstract virtual string ToXmlString ()

Removed Type System.Security.Cryptography.IncrementalHash

New 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);
}

<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 System.Data.SqlClient

Type Changed: System.Data.SqlClient.SqlConnectionStringBuilder

Added property:

	public PoolBlockingPeriod PoolBlockingPeriod { get; set; }

New Type System.Data.SqlClient.PoolBlockingPeriod

[Serializable]
public enum PoolBlockingPeriod {
	AlwaysBlock = 1,
	Auto = 0,
	NeverBlock = 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>

System.Runtime.Serialization.dll

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

Namespace System.Runtime.Serialization

Type Changed: System.Runtime.Serialization.XmlSerializableServices

Added method:

	public static void AddDefaultSchema (System.Xml.Schema.XmlSchemaSet schemas, System.Xml.XmlQualifiedName typeQName);

New Type System.Runtime.Serialization.XsdDataContractExporter

public class XsdDataContractExporter {
	// constructors
	public XsdDataContractExporter ();
	public XsdDataContractExporter (System.Xml.Schema.XmlSchemaSet schemas);
	// properties
	public ExportOptions Options { get; set; }
	public System.Xml.Schema.XmlSchemaSet Schemas { get; }
	// methods
	public bool CanExport (System.Collections.Generic.ICollection<System.Reflection.Assembly> assemblies);
	public bool CanExport (System.Collections.Generic.ICollection<System.Type> types);
	public bool CanExport (System.Type type);
	public void Export (System.Collections.Generic.ICollection<System.Reflection.Assembly> assemblies);
	public void Export (System.Collections.Generic.ICollection<System.Type> types);
	public void Export (System.Type type);
	public System.Xml.XmlQualifiedName GetRootElementName (System.Type type);
	public System.Xml.Schema.XmlSchemaType GetSchemaType (System.Type type);
	public System.Xml.XmlQualifiedName GetSchemaTypeName (System.Type type);
}

<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.Xml.dll

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

Namespace System.Xml.Serialization

Type Changed: System.Xml.Serialization.XmlSerializationReader

Added method:

	protected IXmlSerializable ReadSerializable (IXmlSerializable serializable, bool wrappedAny);

Type Changed: System.Xml.Serialization.XmlSerializer

Added constructor:

	public XmlSerializer (System.Type type, XmlAttributeOverrides overrides, System.Type[] extraTypes, XmlRootAttribute root, string defaultNamespace, string location);

Type Changed: System.Xml.Serialization.XmlSerializerFactory

Added method:

	public XmlSerializer CreateSerializer (System.Type type, XmlAttributeOverrides overrides, System.Type[] extraTypes, XmlRootAttribute root, string defaultNamespace, string location);

Namespace System.Xml.Xsl

Type Changed: System.Xml.Xsl.XslCompiledTransform

Added methods:

	public void Load (System.Type compiledStylesheet);
	public void Load (System.Reflection.MethodInfo executeMethod, byte[] queryData, System.Type[] earlyBoundTypes);
	public void Transform (System.Xml.XPath.IXPathNavigable input, XsltArgumentList arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver documentResolver);

<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.Transactions.dll

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

Namespace System.Transactions

Type Changed: System.Transactions.Transaction

Added property:

	public System.Guid PromoterType { get; }

Added methods:

	public bool EnlistPromotableSinglePhase (IPromotableSinglePhaseNotification promotableSinglePhaseNotification, System.Guid promoterType);
	public byte[] GetPromotedToken ();
	public Enlistment PromoteAndEnlistDurable (System.Guid manager, IPromotableSinglePhaseNotification promotableNotification, ISinglePhaseNotification notification, EnlistmentOptions options);
	public void SetDistributedTransactionIdentifier (IPromotableSinglePhaseNotification promotableNotification, System.Guid distributedTransactionIdentifier);

Type Changed: System.Transactions.TransactionCompletedEventHandler

Modified methods:

public virtual System.IAsyncResult BeginInvoke (object o sender, TransactionEventArgs e, System.AsyncCallback callback, object object)
public virtual void Invoke (object o sender, TransactionEventArgs e)

Type Changed: System.Transactions.TransactionException

Modified constructors:

protected public TransactionException ()

Type Changed: System.Transactions.TransactionInDoubtException

Modified constructors:

protected public TransactionInDoubtException ()

Type Changed: System.Transactions.TransactionInterop

Added field:

	public static System.Guid PromoterTypeDtc;

Type Changed: System.Transactions.TransactionManagerCommunicationException

Modified constructors:

protected public TransactionManagerCommunicationException ()

Type Changed: System.Transactions.TransactionPromotionException

Modified constructors:

protected public TransactionPromotionException ()

Type Changed: System.Transactions.TransactionScope

Added constructors:

	public TransactionScope (Transaction transactionToUse, TransactionScopeAsyncFlowOption asyncFlowOption);
	public TransactionScope (Transaction transactionToUse, System.TimeSpan scopeTimeout, TransactionScopeAsyncFlowOption asyncFlowOption);
	public TransactionScope (TransactionScopeOption scopeOption, TransactionOptions transactionOptions, TransactionScopeAsyncFlowOption asyncFlowOption);

Type Changed: System.Transactions.TransactionStartedEventHandler

Modified methods:

public virtual System.IAsyncResult BeginInvoke (object o sender, TransactionEventArgs e, System.AsyncCallback callback, object object)
public virtual void Invoke (object o sender, TransactionEventArgs e)

<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>

Mono.Security.dll

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

Namespace Mono.Security.X509

Type Changed: Mono.Security.X509.X509StoreManager

Added properties:

	public static X509Stores NewCurrentUser { get; }
	public static X509Stores NewLocalMachine { get; }

<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.NUnitLite.dll

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

Namespace NUnitLite.Runner

Type Changed: NUnitLite.Runner.TextUI

Added field:

	public bool Failure;

<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.Net.Http.dll

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

Namespace System.Net.Http

Type Changed: System.Net.Http.NSUrlSessionHandler

Added method:

	protected override void Dispose (bool disposing);

<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 AVFoundation

Type Changed: AVFoundation.AVAssetDownloadOptions

Modified properties:

public AVMediaSelection MediaSelection { get; set; }
public Foundation.NSNumber MinimumRequiredMediaBitrate { get; set; }

Type Changed: AVFoundation.AVAssetExportSession

Added constructor:

	public AVAssetExportSession (AVAsset asset, AVAssetExportSessionPreset preset);

Type Changed: AVFoundation.AVCaptureDevice

Obsoleted methods:

[Obsolete ("Use GetDefaultDevice(AVMediaTypes)")] public static AVCaptureDevice DefaultDeviceWithMediaType (string mediaType);

Added methods:

	public static AVCaptureDevice GetDefaultDevice (AVMediaTypes mediaType);
	public static AVCaptureDevice GetDefaultDevice (Foundation.NSString mediaType);
	public bool HasMediaType (AVMediaTypes mediaType);

New Type AVFoundation.AVAssetExportSessionPreset

[Serializable]
public enum AVAssetExportSessionPreset {
	AppleM4A = 8,
	HighestQuality = 2,
	LowQuality = 0,
	MediumQuality = 1,
	Passthrough = 9,
	Preset1280x720 = 5,
	Preset1920x1080 = 6,
	Preset3840x2160 = 7,
	Preset640x480 = 3,
	Preset960x540 = 4,
}

New Type AVFoundation.AVAssetExportSessionPresetExtensions

public static class AVAssetExportSessionPresetExtensions {
	// methods
	public static Foundation.NSString GetConstant (AVAssetExportSessionPreset self);
	public static AVAssetExportSessionPreset GetValue (Foundation.NSString constant);
}

New Type AVFoundation.AVMediaTypes

[Serializable]
public enum AVMediaTypes {
	Audio = 1,
	ClosedCaption = 3,
	Metadata = 9,
	MetadataObject = 8,
	Muxed = 7,
	Subtitle = 4,
	Text = 2,
	Timecode = 5,
	TimedMetadata = 6,
	Video = 0,
}

New Type AVFoundation.AVMediaTypesExtensions

public static class AVMediaTypesExtensions {
	// methods
	public static Foundation.NSString GetConstant (AVMediaTypes self);
	public static AVMediaTypes GetValue (Foundation.NSString constant);
}

Namespace CoreAnimation

Type Changed: CoreAnimation.CAAnimation

Added property:

	public static Foundation.NSString AnimationDiscrete { get; }

Type Changed: CoreAnimation.CADisplayLink

Added method:

	public void RemoveFromRunLoop (Foundation.NSRunLoop runloop, Foundation.NSRunLoopMode mode);

Namespace CoreImage

Type Changed: CoreImage.CIImage

Added property:

	public virtual CoreGraphics.CGColorSpace ColorSpace { get; }

Namespace CoreVideo

New Type CoreVideo.CVPlanarPixelBufferInfo_YCbCrBiPlanar

public struct CVPlanarPixelBufferInfo_YCbCrBiPlanar {
	// fields
	public CVPlanarComponentInfo ComponentInfoCbCr;
	public CVPlanarComponentInfo ComponentInfoY;
}

Namespace Foundation

Type Changed: Foundation.NSFileHandle

Added methods:

	public void AcceptConnectionInBackground (NSRunLoopMode[] notifyRunLoopModes);
	public void ReadInBackground (NSRunLoopMode[] notifyRunLoopModes);
	public void ReadToEndOfFileInBackground (NSRunLoopMode[] notifyRunLoopModes);
	public void WaitForDataInBackground (NSRunLoopMode[] notifyRunLoopModes);

Type Changed: Foundation.NSMetadataItem

Added properties:

	public NSString ContentType { get; }
	public NSString[] ContentTypeTree { get; }
	public NSString UbiquitousItemContainerDisplayName { get; }
	public bool UbiquitousItemDownloadRequested { get; }
	public bool UbiquitousItemIsExternalDocument { get; }
	public NSUrl UbiquitousItemUrlInLocalContainer { get; }

Type Changed: Foundation.NSNetService

Added methods:

	public void Schedule (NSRunLoop aRunLoop, NSRunLoopMode forMode);
	public void Unschedule (NSRunLoop aRunLoop, NSRunLoopMode forMode);

Type Changed: Foundation.NSNetServiceBrowser

Added methods:

	public void Schedule (NSRunLoop aRunLoop, NSRunLoopMode forMode);
	public void Unschedule (NSRunLoop aRunLoop, NSRunLoopMode forMode);

Type Changed: Foundation.NSPort

Added methods:

	public void RemoveFromRunLoop (NSRunLoop runLoop, NSRunLoopMode runLoopMode);
	public void ScheduleInRunLoop (NSRunLoop runLoop, NSRunLoopMode runLoopMode);

Type Changed: Foundation.NSRunLoop

Modified methods:

public bool RunUntil (NSRunLoopMode mode runLoopMode, NSDate limitDate)

Added method:

	public void Perform (NSRunLoopMode[] modes, System.Action block);

Type Changed: Foundation.NSStream

Added methods:

	protected virtual NSObject GetProperty (NSString key);
	public void Schedule (NSRunLoop aRunLoop, NSRunLoopMode mode);
	protected virtual bool SetProperty (NSObject property, NSString key);
	public void Unschedule (NSRunLoop aRunLoop, NSRunLoopMode mode);

Type Changed: Foundation.NSUrlConnection

Added methods:

	public void Schedule (NSRunLoop aRunLoop, NSRunLoopMode forMode);
	public void Unschedule (NSRunLoop aRunLoop, NSRunLoopMode forMode);

New Type Foundation.NSItemDownloadingStatusExtensions

public static class NSItemDownloadingStatusExtensions {
	// methods
	public static NSString GetConstant (NSItemDownloadingStatus self);
	public static NSItemDownloadingStatus GetValue (NSString constant);
}

New Type Foundation.NSRunLoopModeExtensions

public static class NSRunLoopModeExtensions {
	// methods
	public static NSString GetConstant (NSRunLoopMode self);
	public static NSString[] GetConstants (NSRunLoopMode[] self);
	public static NSRunLoopMode GetValue (NSString constant);
}

Namespace MultipeerConnectivity

Type Changed: MultipeerConnectivity.MCSession

Added methods:

	public virtual System.Threading.Tasks.Task<Foundation.NSData> NearbyConnectionDataForPeerAsync (MCPeerID peerID);
	public virtual System.Threading.Tasks.Task SendResourceAsync (Foundation.NSUrl resourceUrl, string resourceName, MCPeerID peerID);
	public virtual System.Threading.Tasks.Task SendResourceAsync (Foundation.NSUrl resourceUrl, string resourceName, MCPeerID peerID, Foundation.NSProgress result);

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

public const string Version = "10.3.1" "10.4.0";

Type Changed: ObjCRuntime.LinkWithAttribute

Added constructor:

	public LinkWithAttribute ();

Added property:

	public DlsymOption Dlsym { get; set; }

New Type ObjCRuntime.DlsymOption

[Serializable]
public enum DlsymOption {
	Default = 0,
	Disabled = 2,
	Required = 1,
}

Namespace SceneKit

Type Changed: SceneKit.SCNRenderer

Added method:

	public static SCNRenderer FromContext (OpenGLES.EAGLContext context, Foundation.NSDictionary options);

Namespace Security

Type Changed: Security.SecRecord

Added constructors:

	public SecRecord (SecCertificate certificate);
	public SecRecord (SecIdentity identity);
	public SecRecord (SecKey key);

Added property:

	public LocalAuthentication.LAContext AuthenticationContext { get; set; }

Added methods:

	public SecCertificate GetCertificate ();
	public SecIdentity GetIdentity ();
	public SecKey GetKey ();
	public void SetCertificate (SecCertificate cert);
	public void SetIdentity (SecIdentity identity);
	public void SetKey (SecKey key);

Namespace Social

Type Changed: Social.SLComposeServiceViewController

Added methods:

	public virtual bool ShouldInteractWithTextAttachment (UIKit.UITextView textView, UIKit.NSTextAttachment textAttachment, Foundation.NSRange characterRange, UIKit.UITextItemInteraction interaction);
	public virtual bool ShouldInteractWithUrl (UIKit.UITextView textView, Foundation.NSUrl url, Foundation.NSRange characterRange, UIKit.UITextItemInteraction interaction);

Namespace UIKit

Type Changed: UIKit.UIFont

Added methods:

	public static UIFont GetPreferredFontForTextStyle (UIFontTextStyle uiFontTextStyle);
	public static UIFont GetPreferredFontForTextStyle (UIFontTextStyle uiFontTextStyle, UITraitCollection traitCollection);

Type Changed: UIKit.UIFontDescriptor

Added methods:

	public static UIFontDescriptor GetPreferredDescriptorForTextStyle (UIFontTextStyle uiFontTextStyle);
	public static UIFontDescriptor GetPreferredDescriptorForTextStyle (UIFontTextStyle uiFontTextStyle, UITraitCollection traitCollection);

Type Changed: UIKit.UITextField

Added event:

	public event System.EventHandler<UITextFieldEditingEndedEventArgs> EndedWithReason;

Type Changed: UIKit.UITextFieldDelegate

Added method:

	public virtual void EditingEnded (UITextField textField, UITextFieldDidEndEditingReason reason);

Type Changed: UIKit.UITextFieldDelegate_Extensions

Added method:

	public static void EditingEnded (IUITextFieldDelegate This, UITextField textField, UITextFieldDidEndEditingReason reason);

Type Changed: UIKit.UITextView

Added properties:

	public UITextViewDelegateShouldInteractTextDelegate AllowTextAttachmentInteraction { get; set; }
	public UITextViewDelegateShouldInteractUrlDelegate AllowUrlInteraction { get; set; }

Type Changed: UIKit.UITextViewDelegate

Added methods:

	public virtual bool ShouldInteractWithTextAttachment (UITextView textView, NSTextAttachment textAttachment, Foundation.NSRange characterRange, UITextItemInteraction interaction);
	public virtual bool ShouldInteractWithUrl (UITextView textView, Foundation.NSUrl url, Foundation.NSRange characterRange, UITextItemInteraction interaction);

Type Changed: UIKit.UITextViewDelegate_Extensions

Added methods:

	public static bool ShouldInteractWithTextAttachment (IUITextViewDelegate This, UITextView textView, NSTextAttachment textAttachment, Foundation.NSRange characterRange, UITextItemInteraction interaction);
	public static bool ShouldInteractWithUrl (IUITextViewDelegate This, UITextView textView, Foundation.NSUrl url, Foundation.NSRange characterRange, UITextItemInteraction interaction);

New Type UIKit.UIFontTextStyle

[Serializable]
public enum UIFontTextStyle {
	Body = 1,
	Callout = 9,
	Caption1 = 4,
	Caption2 = 5,
	Footnote = 3,
	Headline = 0,
	Subheadline = 2,
	Title1 = 6,
	Title2 = 7,
	Title3 = 8,
}

New Type UIKit.UIFontTextStyleExtensions

public static class UIFontTextStyleExtensions {
	// methods
	public static Foundation.NSString GetConstant (UIFontTextStyle self);
	public static UIFontTextStyle GetValue (Foundation.NSString constant);
}

New Type UIKit.UITextFieldEditingEndedEventArgs

public class UITextFieldEditingEndedEventArgs : System.EventArgs {
	// constructors
	public UITextFieldEditingEndedEventArgs (UITextFieldDidEndEditingReason reason);
	// properties
	public UITextFieldDidEndEditingReason Reason { get; set; }
}

New Type UIKit.UITextViewDelegateShouldInteractTextDelegate

public sealed delegate UITextViewDelegateShouldInteractTextDelegate : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public UITextViewDelegateShouldInteractTextDelegate (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (UITextView textView, NSTextAttachment textAttachment, Foundation.NSRange characterRange, UITextItemInteraction interaction, System.AsyncCallback callback, object object);
	public virtual bool EndInvoke (System.IAsyncResult result);
	public virtual bool Invoke (UITextView textView, NSTextAttachment textAttachment, Foundation.NSRange characterRange, UITextItemInteraction interaction);
}

New Type UIKit.UITextViewDelegateShouldInteractUrlDelegate

public sealed delegate UITextViewDelegateShouldInteractUrlDelegate : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public UITextViewDelegateShouldInteractUrlDelegate (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (UITextView textView, Foundation.NSUrl url, Foundation.NSRange characterRange, UITextItemInteraction interaction, System.AsyncCallback callback, object object);
	public virtual bool EndInvoke (System.IAsyncResult result);
	public virtual bool Invoke (UITextView textView, Foundation.NSUrl url, Foundation.NSRange characterRange, UITextItemInteraction interaction);
}

Namespace WatchKit

Type Changed: WatchKit.WKInterfaceDevice

Obsoleted properties:

[Obsolete ("Use PreferredContentSizeCategoryString instead.")] public UIKit.UIContentSizeCategory PreferredContentSizeCategory { get; }

Added property:

	public string PreferredContentSizeCategoryString { get; }