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

Latest commit

 

History

History
4303 lines (3884 loc) · 238 KB

File metadata and controls

4303 lines (3884 loc) · 238 KB
id title
28E18460-E52F-4945-AF49-4AFA62F0DBB5
tvOS 9.8.0 to 9.10.0

API diff

mscorlib.dll

System.dll

System.Core.dll

System.Data.dll

System.ServiceModel.dll

System.Transactions.dll

Xamarin.TVOS.dll

MonoTouch.NUnitLite.dll

System.Net.Http.dll


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

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

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

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

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

</script>

mscorlib.dll

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

Namespace Microsoft.Win32

Type Changed: Microsoft.Win32.RegistryKey

Added properties:

	public SafeHandles.SafeRegistryHandle Handle { get; }
	public string Name { get; }
	public int SubKeyCount { get; }
	public int ValueCount { get; }
	public RegistryView View { get; }

Removed method:

	public static object GetValue (string keyName, string valueName, object defaultValue);

Added methods:

	public RegistryKey CreateSubKey (string subkey, bool writable);
	public RegistryKey CreateSubKey (string subkey, bool writable, RegistryOptions options);
	public void DeleteSubKey (string subkey);
	public void DeleteSubKey (string subkey, bool throwOnMissingSubKey);
	public void DeleteSubKeyTree (string subkey);
	public void DeleteSubKeyTree (string subkey, bool throwOnMissingSubKey);
	public void DeleteValue (string name);
	public void DeleteValue (string name, bool throwOnMissingValue);
	public void Flush ();
	public static RegistryKey FromHandle (SafeHandles.SafeRegistryHandle handle);
	public static RegistryKey FromHandle (SafeHandles.SafeRegistryHandle handle, RegistryView view);
	public string[] GetSubKeyNames ();
	public object GetValue (string name);
	public object GetValue (string name, object defaultValue, RegistryValueOptions options);
	public RegistryValueKind GetValueKind (string name);
	public string[] GetValueNames ();
	public static RegistryKey OpenBaseKey (RegistryHive hKey, RegistryView view);
	public RegistryKey OpenSubKey (string name);
	public RegistryKey OpenSubKey (string name, System.Security.AccessControl.RegistryRights rights);

Namespace Microsoft.Win32.SafeHandles

Type Changed: Microsoft.Win32.SafeHandles.SafeAccessTokenHandle

Removed constructor:

	public SafeAccessTokenHandle ();

Added constructor:

	public SafeAccessTokenHandle (IntPtr handle);

Added property:

	public static SafeAccessTokenHandle InvalidHandle { get; }

Namespace System

Type Changed: System.AppContext

Added properties:

	public static string BaseDirectory { get; }
	public static string TargetFrameworkName { get; }

Added methods:

	public static object GetData (string name);
	public static void SetSwitch (string switchName, bool isEnabled);
	public static bool TryGetSwitch (string switchName, out bool isEnabled);

Type Changed: System.Console

Added properties:

	public static ConsoleColor BackgroundColor { get; set; }
	public static int BufferHeight { get; set; }
	public static int BufferWidth { get; set; }
	public static bool CapsLock { get; }
	public static int CursorLeft { get; set; }
	public static int CursorSize { get; set; }
	public static int CursorTop { get; set; }
	public static bool CursorVisible { get; set; }
	public static ConsoleColor ForegroundColor { get; set; }
	public static bool IsErrorRedirected { get; }
	public static bool IsInputRedirected { get; }
	public static bool IsOutputRedirected { get; }
	public static bool KeyAvailable { get; }
	public static int LargestWindowHeight { get; set; }
	public static int LargestWindowWidth { get; set; }
	public static bool NumberLock { get; }
	public static string Title { get; set; }
	public static bool TreatControlCAsInput { get; set; }
	public static int WindowHeight { get; set; }
	public static int WindowLeft { get; set; }
	public static int WindowTop { get; set; }
	public static int WindowWidth { get; set; }

Added event:

	public event ConsoleCancelEventHandler CancelKeyPress;

Added methods:

	public static void Beep ();
	public static void Beep (int frequency, int duration);
	public static void Clear ();
	public static void MoveBufferArea (int sourceLeft, int sourceTop, int sourceWidth, int sourceHeight, int targetLeft, int targetTop);
	public static void MoveBufferArea (int sourceLeft, int sourceTop, int sourceWidth, int sourceHeight, int targetLeft, int targetTop, char sourceChar, ConsoleColor sourceForeColor, ConsoleColor sourceBackColor);
	public static ConsoleKeyInfo ReadKey ();
	public static ConsoleKeyInfo ReadKey (bool intercept);
	public static void ResetColor ();
	public static void SetBufferSize (int width, int height);
	public static void SetCursorPosition (int left, int top);
	public static void SetWindowPosition (int left, int top);
	public static void SetWindowSize (int width, int height);

Type Changed: System.Environment

Added methods:

	public static string GetEnvironmentVariable (string variable, EnvironmentVariableTarget target);
	public static Collections.IDictionary GetEnvironmentVariables (EnvironmentVariableTarget target);
	public static void SetEnvironmentVariable (string variable, string value, EnvironmentVariableTarget target);

Namespace System.Diagnostics.Tracing

Type Changed: System.Diagnostics.Tracing.EventAttribute

Added properties:

	public EventActivityOptions ActivityOptions { get; set; }
	public EventChannel Channel { get; set; }
	public string Message { get; set; }
	public EventOpcode Opcode { get; set; }
	public EventTags Tags { get; set; }
	public EventTask Task { get; set; }
	public byte Version { get; set; }

Type Changed: System.Diagnostics.Tracing.EventSource

Added event:

	public event System.EventHandler<EventCommandEventArgs> EventCommandExecuted;

Added methods:

	public static string GenerateManifest (System.Type eventSourceType, string assemblyPathToIncludeInManifest);
	public static string GenerateManifest (System.Type eventSourceType, string assemblyPathToIncludeInManifest, EventManifestOptions flags);
	public static System.Guid GetGuid (System.Type eventSourceType);
	public static string GetName (System.Type eventSourceType);
	public static System.Collections.Generic.IEnumerable<EventSource> GetSources ();
	public static void SendCommand (EventSource eventSource, EventCommand command, System.Collections.Generic.IDictionary<System.String,System.String> commandArguments);
	public static void SetCurrentThreadActivityId (System.Guid activityId);
	public static void SetCurrentThreadActivityId (System.Guid activityId, out System.Guid oldActivityThatWillContinue);
	public void Write (string eventName, EventSourceOptions options);
	protected void WriteEventCore (int eventId, int eventDataCount, EventSource.EventData* data);
	protected void WriteEventWithRelatedActivityId (int eventId, System.Guid relatedActivityId, object[] args);
	protected void WriteEventWithRelatedActivityIdCore (int eventId, System.Guid* relatedActivityId, int eventDataCount, EventSource.EventData* data);
	protected override void ~EventSource ();

Namespace System.IO

Type Changed: System.IO.DirectoryInfo

Added interface:

	System.Runtime.Serialization.ISerializable

Type Changed: System.IO.File

Added method:

	public static FileStream Create (string path, int bufferSize, FileOptions options);

Type Changed: System.IO.FileInfo

Added interface:

	System.Runtime.Serialization.ISerializable

Added methods:

	public FileInfo Replace (string destinationFileName, string destinationBackupFileName);
	public FileInfo Replace (string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);

Type Changed: System.IO.FileSystemInfo

Added interface:

	System.Runtime.Serialization.ISerializable

Added method:

	public virtual void GetObjectData (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);

Namespace System.Runtime.CompilerServices

Type Changed: System.Runtime.CompilerServices.ConditionalWeakTable`2

Added method:

	protected override void ~ConditionalWeakTable ();

Namespace System.Runtime.InteropServices

Type Changed: System.Runtime.InteropServices.ExternalException

Added method:

	public override string ToString ();

Type Changed: System.Runtime.InteropServices.Marshal

Added methods:

	public static bool AreComObjectsAvailableForCleanup ();
	public static TWrapper CreateWrapperOfType<T, TWrapper> (T o);
	public static object CreateWrapperOfType (object o, System.Type t);
	public static int FinalReleaseComObject (object o);
	public static IntPtr GetComInterfaceForObject<T, TInterface> (T o);
	public static IntPtr GetComInterfaceForObject (object o, System.Type T);
	public static IntPtr GetComInterfaceForObject (object o, System.Type T, CustomQueryInterfaceMode mode);
	public static int GetExceptionCode ();
	public static int GetHRForException (System.Exception e);
	public static int GetHRForLastWin32Error ();
	public static IntPtr GetIUnknownForObject (object o);
	public static void GetNativeVariantForObject (object obj, IntPtr pDstNativeVariant);
	public static void GetNativeVariantForObject<T> (T obj, IntPtr pDstNativeVariant);
	public static object GetObjectForIUnknown (IntPtr pUnk);
	public static T GetObjectForNativeVariant<T> (IntPtr pSrcNativeVariant);
	public static object GetObjectForNativeVariant (IntPtr pSrcNativeVariant);
	public static T[] GetObjectsForNativeVariants<T> (IntPtr aSrcNativeVariant, int cVars);
	public static object[] GetObjectsForNativeVariants (IntPtr aSrcNativeVariant, int cVars);
	public static int GetStartComSlot (System.Type t);
	public static System.Type GetTypeFromCLSID (System.Guid clsid);
	public static string GetTypeInfoName (ComTypes.ITypeInfo typeInfo);
	public static object GetUniqueObjectForIUnknown (IntPtr unknown);
	public static bool IsComObject (object o);
	public static int ReleaseComObject (object o);

New Type System.Runtime.InteropServices.ComImportAttribute

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

New Type System.Runtime.InteropServices.DispatchWrapper

[Serializable]
public sealed class DispatchWrapper {
	// constructors
	public DispatchWrapper (object obj);
	// properties
	public object WrappedObject { get; }
}

New Type System.Runtime.InteropServices.ErrorWrapper

[Serializable]
public sealed class ErrorWrapper {
	// constructors
	public ErrorWrapper (System.Exception e);
	public ErrorWrapper (int errorCode);
	public ErrorWrapper (object errorCode);
	// properties
	public int ErrorCode { get; }
}

Namespace System.Security

Type Changed: System.Security.CodeAccessPermission

Modified methods:

public virtual final void Assert ()
public virtual final void Demand ()
public virtual final void Deny ()
public virtual final void PermitOnly ()

Namespace System.Security.AccessControl

Type Changed: System.Security.AccessControl.AuthorizationRuleCollection

Added constructor:

	public AuthorizationRuleCollection ();

Added method:

	public void AddRule (AuthorizationRule rule);

Type Changed: System.Security.AccessControl.CommonSecurityDescriptor

Added methods:

	public void AddDiscretionaryAcl (byte revision, int trusted);
	public void AddSystemAcl (byte revision, int trusted);

Type Changed: System.Security.AccessControl.DiscretionaryAcl

Added methods:

	public void AddAccess (AccessControlType accessType, System.Security.Principal.SecurityIdentifier sid, ObjectAccessRule rule);
	public bool RemoveAccess (AccessControlType accessType, System.Security.Principal.SecurityIdentifier sid, ObjectAccessRule rule);
	public void RemoveAccessSpecific (AccessControlType accessType, System.Security.Principal.SecurityIdentifier sid, ObjectAccessRule rule);
	public void SetAccess (AccessControlType accessType, System.Security.Principal.SecurityIdentifier sid, ObjectAccessRule rule);

Type Changed: System.Security.AccessControl.ObjectSecurity

Added constructors:

	protected ObjectSecurity ();
	protected ObjectSecurity (CommonSecurityDescriptor securityDescriptor);

Type Changed: System.Security.AccessControl.SystemAcl

Added methods:

	public void AddAudit (System.Security.Principal.SecurityIdentifier sid, ObjectAuditRule rule);
	public bool RemoveAudit (System.Security.Principal.SecurityIdentifier sid, ObjectAuditRule rule);
	public void RemoveAuditSpecific (System.Security.Principal.SecurityIdentifier sid, ObjectAuditRule rule);
	public void SetAudit (System.Security.Principal.SecurityIdentifier sid, ObjectAuditRule rule);

Namespace System.Security.Principal

Type Changed: System.Security.Principal.WindowsIdentity

Added methods:

	public static void RunImpersonated (Microsoft.Win32.SafeHandles.SafeAccessTokenHandle safeAccessTokenHandle, System.Action action);
	public static T RunImpersonated<T> (Microsoft.Win32.SafeHandles.SafeAccessTokenHandle safeAccessTokenHandle, System.Func<T> func);

Namespace System.Threading

Type Changed: System.Threading.EventWaitHandle

Added method:

	protected override void Dispose (bool explicitDisposing);

<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 Mono.Security.Interface

Type Changed: Mono.Security.Interface.MonoTlsProviderFactory

Removed field:

	public static MonoTlsProviderFactoryDelegate _PrivateFactoryDelegate;

Removed Type Mono.Security.Interface.MonoTlsProviderFactoryDelegate

Namespace System

Type Changed: System.Uri

Added property:

	public string IdnHost { get; }

Added methods:

	[Obsolete ("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
	protected virtual void Canonicalize ();
<span class='added added-method ' data-is-non-breaking="">[Obsolete ("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
protected virtual void CheckSecurity ();</span>

Type Changed: System.UriParser

Modified methods:

protected protected virtual string GetComponents (Uri uri, UriComponents components, UriFormat format)
protected protected virtual void InitializeAndValidate (Uri uri, out UriFormatException parsingError)
protected protected virtual bool IsBaseOf (Uri baseUri, Uri relativeUri)
protected protected virtual bool IsWellFormedOriginalString (Uri uri)
protected protected virtual UriParser OnNewUri ()
protected protected virtual string Resolve (Uri baseUri, Uri relativeUri, out UriFormatException parsingError)

New Type System.GopherStyleUriParser

public class GopherStyleUriParser : System.UriParser {
	// constructors
	public GopherStyleUriParser ();
}

New Type System.LdapStyleUriParser

public class LdapStyleUriParser : System.UriParser {
	// constructors
	public LdapStyleUriParser ();
}

Namespace System.Diagnostics

Type Changed: System.Diagnostics.Process

Added property:

	public Microsoft.Win32.SafeHandles.SafeProcessHandle SafeHandle { get; }

Removed method:

	protected override void ~Process ();

Type Changed: System.Diagnostics.ProcessModuleCollection

Added property:

	public ProcessModule Item { get; }

Added methods:

	public bool Contains (ProcessModule module);
	public void CopyTo (ProcessModule[] array, int index);
	public int IndexOf (ProcessModule module);

Type Changed: System.Diagnostics.ProcessModuleCollectionBase

Added method:

	public System.Collections.IEnumerator GetEnumerator ();

Type Changed: System.Diagnostics.ProcessStartInfo

Modified constructors:

public ProcessStartInfo (string filename fileName)
public ProcessStartInfo (string filename fileName, string arguments)

Added properties:

	public System.Collections.Generic.IDictionary<System.String,System.String> Environment { get; }
	public string PasswordInClearText { get; set; }

Type Changed: System.Diagnostics.ProcessThreadCollection

Added property:

	public ProcessThread Item { get; }

Added methods:

	public int Add (ProcessThread thread);
	public bool Contains (ProcessThread thread);
	public void CopyTo (ProcessThread[] array, int index);
	public int IndexOf (ProcessThread thread);
	public void Insert (int index, ProcessThread thread);
	public void Remove (ProcessThread thread);

Type Changed: System.Diagnostics.ProcessThreadCollectionBase

Added method:

	public System.Collections.IEnumerator GetEnumerator ();

Namespace System.IO

Type Changed: System.IO.FileSystemWatcher

Added interface:

	System.IDisposable

Added methods:

	public virtual void Dispose ();
	protected virtual void Dispose (bool disposing);

Namespace System.IO.Compression

Type Changed: System.IO.Compression.DeflateStream

Modified constructors:

public DeflateStream (System.IO.Stream compressedStream stream, CompressionMode mode)
public DeflateStream (System.IO.Stream compressedStream stream, CompressionMode mode, bool leaveOpen)

Modified methods:

public override int Read (byte[] dest array, int dest_offset offset, int count)
public override void Write (byte[] src array, int src_offset offset, int count)

Type Changed: System.IO.Compression.GZipStream

Modified methods:

public override int Read (byte[] dest array, int dest_offset offset, int count)
public override void Write (byte[] src array, int src_offset offset, int count)

Namespace System.Net

Type Changed: System.Net.FileWebResponse

Added property:

	public override bool SupportsHeaders { get; }

Removed methods:

	protected override void Dispose (bool disposing);
	protected override void ~FileWebResponse ();

Type Changed: System.Net.FtpWebResponse

Added property:

	public override bool SupportsHeaders { get; }

Type Changed: System.Net.HttpWebResponse

Added property:

	public override bool SupportsHeaders { get; }

Type Changed: System.Net.IPAddress

Added property:

	public bool IsIPv4MappedToIPv6 { get; }

Type Changed: System.Net.TransportContext

Added method:

	public virtual System.Collections.Generic.IEnumerable<System.Security.Authentication.ExtendedProtection.TokenBinding> GetTlsTokenBindings ();

Namespace System.Net.NetworkInformation

Type Changed: System.Net.NetworkInformation.GatewayIPAddressInformationCollection

Modified constructors:

protected protected GatewayIPAddressInformationCollection ()

Type Changed: System.Net.NetworkInformation.IPGlobalProperties

Added methods:

	public virtual System.IAsyncResult BeginGetUnicastAddresses (System.AsyncCallback callback, object state);
	public virtual UnicastIPAddressInformationCollection EndGetUnicastAddresses (System.IAsyncResult asyncResult);
	public virtual UnicastIPAddressInformationCollection GetUnicastAddresses ();
	public virtual System.Threading.Tasks.Task<UnicastIPAddressInformationCollection> GetUnicastAddressesAsync ();

Type Changed: System.Net.NetworkInformation.IPv6InterfaceProperties

Added method:

	public virtual long GetScopeId (ScopeLevel scopeLevel);

Type Changed: System.Net.NetworkInformation.NetworkInformationException

Modified base type: System.Exception System.ComponentModel.Win32Exception

Added constructor:

	protected NetworkInformationException (System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext);

Modified properties:

public override int ErrorCode { get; }

Type Changed: System.Net.NetworkInformation.NetworkInterface

Modified properties:

public abstract virtual string Description { get; }
public abstract virtual string Id { get; }
public abstract virtual bool IsReceiveOnly { get; }
public abstract virtual string Name { get; }
public abstract virtual NetworkInterfaceType NetworkInterfaceType { get; }
public abstract virtual OperationalStatus OperationalStatus { get; }
public abstract virtual long Speed { get; }
public abstract virtual bool SupportsMulticast { get; }

Added property:

	public static int IPv6LoopbackInterfaceIndex { get; }

Removed method:

	public static System.Net.IPAddress GetNetMask (System.Net.IPAddress address);

Modified methods:

public abstract virtual IPInterfaceProperties GetIPProperties ()
public abstract virtual IPv4InterfaceStatistics GetIPv4Statistics ()
public abstract virtual PhysicalAddress GetPhysicalAddress ()
public abstract virtual bool Supports (NetworkInterfaceComponent networkInterfaceComponent)

Added method:

	public virtual IPInterfaceStatistics GetIPStatistics ();

Type Changed: System.Net.NetworkInformation.NetworkInterfaceType

Added values:

	Wman = 237,
	Wwanpp = 243,
	Wwanpp2 = 244,

New Type System.Net.NetworkInformation.NetworkInformationPermission

[Serializable]
public sealed class NetworkInformationPermission : System.Security.CodeAccessPermission, System.Security.IPermission, System.Security.ISecurityEncodable, System.Security.IStackWalk, System.Security.Permissions.IUnrestrictedPermission {
	// constructors
	public NetworkInformationPermission (NetworkInformationAccess access);
	public NetworkInformationPermission (System.Security.Permissions.PermissionState state);
	// properties
	public NetworkInformationAccess Access { get; }
	// methods
	public void AddPermission (NetworkInformationAccess access);
	public override System.Security.IPermission Copy ();
	public override void FromXml (System.Security.SecurityElement securityElement);
	public override System.Security.IPermission Intersect (System.Security.IPermission target);
	public override bool IsSubsetOf (System.Security.IPermission target);
	public virtual bool IsUnrestricted ();
	public override System.Security.SecurityElement ToXml ();
	public override System.Security.IPermission Union (System.Security.IPermission target);
}

New Type System.Net.NetworkInformation.NetworkInformationPermissionAttribute

[Serializable]
public sealed class NetworkInformationPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute {
	// constructors
	public NetworkInformationPermissionAttribute (System.Security.Permissions.SecurityAction action);
	// properties
	public string Access { get; set; }
	// methods
	public override System.Security.IPermission CreatePermission ();
}

Namespace System.Net.Security

Type Changed: System.Net.Security.NegotiateStream

Added methods:

	public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync ();
	public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync (System.Net.NetworkCredential credential, string targetName);
	public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ChannelBinding binding, string targetName);
	public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync (System.Net.NetworkCredential credential, string targetName, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel allowedImpersonationLevel);
	public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ChannelBinding binding, string targetName, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel allowedImpersonationLevel);
	public virtual System.Threading.Tasks.Task AuthenticateAsServerAsync ();
	public virtual System.Threading.Tasks.Task AuthenticateAsServerAsync (System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy policy);
	public virtual System.Threading.Tasks.Task AuthenticateAsServerAsync (System.Net.NetworkCredential credential, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel requiredImpersonationLevel);
	public virtual System.Threading.Tasks.Task AuthenticateAsServerAsync (System.Net.NetworkCredential credential, System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy policy, ProtectionLevel requiredProtectionLevel, System.Security.Principal.TokenImpersonationLevel requiredImpersonationLevel);

Type Changed: System.Net.Security.SslStream

Added constructor:

	public SslStream (System.IO.Stream innerStream, bool leaveInnerStreamOpen, RemoteCertificateValidationCallback userCertificateValidationCallback, LocalCertificateSelectionCallback userCertificateSelectionCallback, EncryptionPolicy encryptionPolicy);

Namespace System.Net.Sockets

Type Changed: System.Net.Sockets.Socket

Modified methods:

public void Bind (System.Net.EndPoint local_end localEP)
public byte[] GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, int length optionLength)
public int IOControl (int ioctl_code ioControlCode, byte[] in_value optionInValue, byte[] out_value optionOutValue)
public bool Poll (int time_us microSeconds, SelectMode mode)
public int Receive (byte[] buffer, SocketFlags flags socketFlags)
public int Receive (byte[] buffer, int size, SocketFlags flags socketFlags)
public int Receive (byte[] buffer, int offset, int size, SocketFlags flags socketFlags)
public int Receive (byte[] buffer, int offset, int size, SocketFlags flags socketFlags, out SocketError error errorCode)
public int ReceiveFrom (byte[] buffer, SocketFlags flags socketFlags, ref System.Net.EndPoint remoteEP)
public int ReceiveFrom (byte[] buffer, int size, SocketFlags flags socketFlags, ref System.Net.EndPoint remoteEP)
public int ReceiveFrom (byte[] buffer, int offset, int size, SocketFlags flags socketFlags, ref System.Net.EndPoint remoteEP)
public int Send (byte[] buffer, SocketFlags flags socketFlags)
public int Send (byte[] buffer, int size, SocketFlags flags socketFlags)
public int Send (byte[] buffer, int offset, int size, SocketFlags flags socketFlags)
public int Send (byte[] buffer, int offset, int size, SocketFlags flags socketFlags, out SocketError error errorCode)
public int SendTo (byte[] buffer, System.Net.EndPoint remote_end remoteEP)
public int SendTo (byte[] buffer, SocketFlags flags socketFlags, System.Net.EndPoint remote_end remoteEP)
public int SendTo (byte[] buffer, int size, SocketFlags flags socketFlags, System.Net.EndPoint remote_end remoteEP)
public int SendTo (byte[] buffer, int offset, int size, SocketFlags flags socketFlags, System.Net.EndPoint remote_end remoteEP)

Added methods:

	public static void CancelConnectAsync (SocketAsyncEventArgs e);
	public static bool ConnectAsync (SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e);

Type Changed: System.Net.Sockets.SocketAsyncEventArgs

Added properties:

	public IPPacketInformation ReceiveMessageFromPacketInfo { get; }
	public SendPacketsElement[] SendPacketsElements { get; set; }

Type Changed: System.Net.Sockets.TcpClient

Added method:

	public virtual void Dispose ();

Type Changed: System.Net.Sockets.UdpClient

Added method:

	public virtual void Dispose ();

Namespace System.Security.AccessControl

Type Changed: System.Security.AccessControl.SemaphoreAccessRule

Modified constructors:

public SemaphoreAccessRule (System.Security.Principal.IdentityReference identity, SemaphoreRights semaphoreRights eventRights, AccessControlType type)
public SemaphoreAccessRule (string identity, SemaphoreRights semaphoreRights eventRights, AccessControlType type)

Type Changed: System.Security.AccessControl.SemaphoreAuditRule

Modified constructors:

public SemaphoreAuditRule (System.Security.Principal.IdentityReference identity, SemaphoreRights semaphoreRights eventRights, AuditFlags flags)

Namespace System.Security.Authentication.ExtendedProtection

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

Added method:

	public bool Contains (string searchServiceName);

New Type System.Security.Authentication.ExtendedProtection.TokenBinding

public class TokenBinding {
	// properties
	public TokenBindingType BindingType { get; }
	// methods
	public byte[] GetRawTokenBindingId ();
}

New Type System.Security.Authentication.ExtendedProtection.TokenBindingType

[Serializable]
public enum TokenBindingType {
	Provided = 0,
	Referred = 1,
}

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.Oid

Added methods:

	public static Oid FromFriendlyName (string friendlyName, OidGroup group);
	public static Oid FromOidValue (string oidValue, OidGroup group);

Namespace System.Security.Cryptography.X509Certificates

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

Added property:

	public Microsoft.Win32.SafeHandles.SafeX509ChainHandle SafeHandle { get; }

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

Added values:

	ExplicitDistrust = 67108864,
	HasNotSupportedCriticalExtension = 134217728,
	HasWeakSignature = 1048576,

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

Modified methods:

public override void CopyFrom (System.Security.Cryptography.AsnEncodedData encodedData asnEncodedData)

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

Added interface:

	System.IDisposable

Added method:

	public virtual void Dispose ();

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

Modified methods:

public override void CopyFrom (System.Security.Cryptography.AsnEncodedData encodedData asnEncodedData)

Namespace System.Text.RegularExpressions

Type Changed: System.Text.RegularExpressions.Regex

Added properties:

	protected System.Collections.IDictionary CapNames { get; set; }
	protected System.Collections.IDictionary Caps { get; set; }

<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 System.IO.MemoryMappedFiles

Type Changed: System.IO.MemoryMappedFiles.MemoryMappedFile

Added methods:

	public static MemoryMappedFile CreateFromFile (System.IO.FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen);
	public static MemoryMappedFile CreateNew (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability);
	public static MemoryMappedFile CreateOrOpen (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability);

Namespace System.IO.Pipes

Type Changed: System.IO.Pipes.NamedPipeClientStream

Added methods:

	public System.Threading.Tasks.Task ConnectAsync ();
	public System.Threading.Tasks.Task ConnectAsync (int timeout);
	public System.Threading.Tasks.Task ConnectAsync (System.Threading.CancellationToken cancellationToken);
	public System.Threading.Tasks.Task ConnectAsync (int timeout, System.Threading.CancellationToken cancellationToken);
	protected override void ~NamedPipeClientStream ();

Type Changed: System.IO.Pipes.NamedPipeServerStream

Added methods:

	public System.Threading.Tasks.Task WaitForConnectionAsync ();
	public System.Threading.Tasks.Task WaitForConnectionAsync (System.Threading.CancellationToken cancellationToken);

Type Changed: System.IO.Pipes.PipeStream

Added method:

	public void WaitForPipeDrain ();

New Type System.IO.Pipes.PipeAccessRights

[Serializable]
[Flags]
public enum PipeAccessRights {
	AccessSystemSecurity = 16777216,
	ChangePermissions = 262144,
	CreateNewInstance = 4,
	Delete = 65536,
	FullControl = 2032031,
	Read = 131209,
	ReadAttributes = 128,
	ReadData = 1,
	ReadExtendedAttributes = 8,
	ReadPermissions = 131072,
	ReadWrite = 131483,
	Synchronize = 1048576,
	TakeOwnership = 524288,
	Write = 274,
	WriteAttributes = 256,
	WriteData = 2,
	WriteExtendedAttributes = 16,
}

New Type System.IO.Pipes.PipeAccessRule

public sealed class PipeAccessRule : System.Security.AccessControl.AccessRule {
	// constructors
	public PipeAccessRule (System.Security.Principal.IdentityReference identity, PipeAccessRights rights, System.Security.AccessControl.AccessControlType type);
	public PipeAccessRule (string identity, PipeAccessRights rights, System.Security.AccessControl.AccessControlType type);
	// properties
	public PipeAccessRights PipeAccessRights { get; }
}

New Type System.IO.Pipes.PipeAuditRule

public sealed class PipeAuditRule : System.Security.AccessControl.AuditRule {
	// constructors
	public PipeAuditRule (System.Security.Principal.IdentityReference identity, PipeAccessRights rights, System.Security.AccessControl.AuditFlags flags);
	public PipeAuditRule (string identity, PipeAccessRights rights, System.Security.AccessControl.AuditFlags flags);
	// properties
	public PipeAccessRights PipeAccessRights { get; }
}

New Type System.IO.Pipes.PipeSecurity

public class PipeSecurity : System.Security.AccessControl.NativeObjectSecurity {
	// constructors
	public PipeSecurity ();
	// properties
	public override System.Type AccessRightType { get; }
	public override System.Type AccessRuleType { get; }
	public override System.Type AuditRuleType { get; }
	// methods
	public override System.Security.AccessControl.AccessRule AccessRuleFactory (System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, System.Security.AccessControl.InheritanceFlags inheritanceFlags, System.Security.AccessControl.PropagationFlags propagationFlags, System.Security.AccessControl.AccessControlType type);
	public void AddAccessRule (PipeAccessRule rule);
	public void AddAuditRule (PipeAuditRule rule);
	public override System.Security.AccessControl.AuditRule AuditRuleFactory (System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, System.Security.AccessControl.InheritanceFlags inheritanceFlags, System.Security.AccessControl.PropagationFlags propagationFlags, System.Security.AccessControl.AuditFlags flags);
	protected void Persist (System.Runtime.InteropServices.SafeHandle handle);
	protected void Persist (string name);
	public bool RemoveAccessRule (PipeAccessRule rule);
	public void RemoveAccessRuleSpecific (PipeAccessRule rule);
	public bool RemoveAuditRule (PipeAuditRule rule);
	public void RemoveAuditRuleAll (PipeAuditRule rule);
	public void RemoveAuditRuleSpecific (PipeAuditRule rule);
	public void ResetAccessRule (PipeAccessRule rule);
	public void SetAccessRule (PipeAccessRule rule);
	public void SetAuditRule (PipeAuditRule rule);
}

New Type System.IO.Pipes.PipeStreamImpersonationWorker

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

Namespace System.Linq

Type Changed: System.Linq.Enumerable

Added methods:

	public static System.Collections.Generic.IEnumerable<TSource> Append<TSource> (System.Collections.Generic.IEnumerable<TSource> source, TSource element);
	public static System.Collections.Generic.IEnumerable<TSource> Prepend<TSource> (System.Collections.Generic.IEnumerable<TSource> source, TSource element);

Namespace System.Linq.Expressions

Type Changed: System.Linq.Expressions.Expression`1

Added method:

	public TDelegate Compile (bool preferInterpretation);

Type Changed: System.Linq.Expressions.LambdaExpression

Added method:

	public System.Delegate Compile (bool preferInterpretation);

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.CngAlgorithm

Added properties:

	public static CngAlgorithm ECDiffieHellman { get; }
	public static CngAlgorithm ECDsa { get; }

Type Changed: System.Security.Cryptography.CngKey

Added properties:

	public CngAlgorithm Algorithm { get; }
	public CngAlgorithmGroup AlgorithmGroup { get; }
	public CngExportPolicies ExportPolicy { get; }
	public Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle Handle { get; }
	public bool IsEphemeral { get; }
	public bool IsMachineKey { get; }
	public string KeyName { get; }
	public int KeySize { get; }
	public CngKeyUsages KeyUsage { get; }
	public IntPtr ParentWindowHandle { get; set; }
	public CngProvider Provider { get; }
	public Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle ProviderHandle { get; }
	public CngUIPolicy UIPolicy { get; }
	public string UniqueName { get; }

Added methods:

	public static CngKey Create (CngAlgorithm algorithm);
	public static CngKey Create (CngAlgorithm algorithm, string keyName);
	public static CngKey Create (CngAlgorithm algorithm, string keyName, CngKeyCreationParameters creationParameters);
	public void Delete ();
	public static bool Exists (string keyName);
	public static bool Exists (string keyName, CngProvider provider);
	public static bool Exists (string keyName, CngProvider provider, CngKeyOpenOptions options);
	public byte[] Export (CngKeyBlobFormat format);
	public CngProperty GetProperty (string name, CngPropertyOptions options);
	public bool HasProperty (string name, CngPropertyOptions options);
	public static CngKey Import (byte[] keyBlob, CngKeyBlobFormat format);
	public static CngKey Import (byte[] keyBlob, CngKeyBlobFormat format, CngProvider provider);
	public static CngKey Open (string keyName);
	public static CngKey Open (Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle keyHandle, CngKeyHandleOpenOptions keyHandleOpenOptions);
	public static CngKey Open (string keyName, CngProvider provider);
	public static CngKey Open (string keyName, CngProvider provider, CngKeyOpenOptions openOptions);
	public void SetProperty (CngProperty property);

Type Changed: System.Security.Cryptography.CngKeyBlobFormat

Added properties:

	public static CngKeyBlobFormat EccFullPrivateBlob { get; }
	public static CngKeyBlobFormat EccFullPublicBlob { get; }

Type Changed: System.Security.Cryptography.ECDsa

Added methods:

	public static ECDsa Create (ECCurve curve);
	public static ECDsa Create (ECParameters parameters);
	public virtual ECParameters ExportExplicitParameters (bool includePrivateParameters);
	public virtual ECParameters ExportParameters (bool includePrivateParameters);
	public virtual void GenerateKey (ECCurve curve);
	public virtual void ImportParameters (ECParameters parameters);

Type Changed: System.Security.Cryptography.ECDsaCng

Added constructors:

	public ECDsaCng (int keySize);
	public ECDsaCng (CngKey key);
	public ECDsaCng (ECCurve curve);

Added property:

	public CngKey Key { get; }

Type Changed: System.Security.Cryptography.RSACng

Added constructors:

	public RSACng (int keySize);
	public RSACng (CngKey key);

Added property:

	public CngKey Key { get; }

New Type System.Security.Cryptography.ECCurve

public struct ECCurve {
	// fields
	public byte[] A;
	public byte[] B;
	public byte[] Cofactor;
	public ECCurve.ECCurveType CurveType;
	public ECPoint G;
	public HashAlgorithmName? Hash;
	public byte[] Order;
	public byte[] Polynomial;
	public byte[] Prime;
	public byte[] Seed;
	// properties
	public bool IsCharacteristic2 { get; }
	public bool IsExplicit { get; }
	public bool IsNamed { get; }
	public bool IsPrime { get; }
	public Oid Oid { get; }
	// methods
	public static ECCurve CreateFromFriendlyName (string oidFriendlyName);
	public static ECCurve CreateFromOid (Oid curveOid);
	public static ECCurve CreateFromValue (string oidValue);
	public void Validate ();
// inner types
[Serializable]
public enum ECCurveType {
	<span class='added added-field ' data-is-non-breaking="">public static const ECCurve.ECCurveType Characteristic2;</span>
	<span class='added added-field ' data-is-non-breaking="">public static const ECCurve.ECCurveType Implicit;</span>
	<span class='added added-field ' data-is-non-breaking="">public static const ECCurve.ECCurveType Named;</span>
	<span class='added added-field ' data-is-non-breaking="">public static const ECCurve.ECCurveType PrimeMontgomery;</span>
	<span class='added added-field ' data-is-non-breaking="">public static const ECCurve.ECCurveType PrimeShortWeierstrass;</span>
	<span class='added added-field ' data-is-non-breaking="">public static const ECCurve.ECCurveType PrimeTwistedEdwards;</span>
}
public static class NamedCurves {
	// properties
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP160r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP160t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP192r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP192t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP224r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP224t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP256r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP256t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP320r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP320t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP384r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP384t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP512r1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve brainpoolP512t1 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve nistP256 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve nistP384 { get; }</span>
	<span class='added added-property ' data-is-non-breaking="">public static ECCurve nistP521 { get; }</span>
}

}

New Type System.Security.Cryptography.ECParameters

public struct ECParameters {
	// fields
	public ECCurve Curve;
	public byte[] D;
	public ECPoint Q;
	// methods
	public void Validate ();
}

New Type System.Security.Cryptography.ECPoint

public struct ECPoint {
	// fields
	public byte[] X;
	public byte[] Y;
}

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

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

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

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

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

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

</script>

System.Data.dll

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

Namespace Microsoft.SqlServer.Server

Type Changed: Microsoft.SqlServer.Server.SqlDataRecord

Removed constructor:

	public SqlDataRecord ();

Added constructor:

	public SqlDataRecord (SqlMetaData[] metaData);

Modified properties:

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

Modified methods:

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

Added methods:

	public virtual System.DateTimeOffset GetDateTimeOffset (int ordinal);
	public virtual System.Data.SqlTypes.SqlBinary GetSqlBinary (int ordinal);
	public virtual System.Data.SqlTypes.SqlBoolean GetSqlBoolean (int ordinal);
	public virtual System.Data.SqlTypes.SqlByte GetSqlByte (int ordinal);
	public virtual System.Data.SqlTypes.SqlBytes GetSqlBytes (int ordinal);
	public virtual System.Data.SqlTypes.SqlChars GetSqlChars (int ordinal);
	public virtual System.Data.SqlTypes.SqlDateTime GetSqlDateTime (int ordinal);
	public virtual System.Data.SqlTypes.SqlDecimal GetSqlDecimal (int ordinal);
	public virtual System.Data.SqlTypes.SqlDouble GetSqlDouble (int ordinal);
	public virtual System.Type GetSqlFieldType (int ordinal);
	public virtual System.Data.SqlTypes.SqlGuid GetSqlGuid (int ordinal);
	public virtual System.Data.SqlTypes.SqlInt16 GetSqlInt16 (int ordinal);
	public virtual System.Data.SqlTypes.SqlInt32 GetSqlInt32 (int ordinal);
	public virtual System.Data.SqlTypes.SqlInt64 GetSqlInt64 (int ordinal);
	public virtual SqlMetaData GetSqlMetaData (int ordinal);
	public virtual System.Data.SqlTypes.SqlMoney GetSqlMoney (int ordinal);
	public virtual System.Data.SqlTypes.SqlSingle GetSqlSingle (int ordinal);
	public virtual System.Data.SqlTypes.SqlString GetSqlString (int ordinal);
	public virtual object GetSqlValue (int ordinal);
	public virtual int GetSqlValues (object[] values);
	public virtual System.Data.SqlTypes.SqlXml GetSqlXml (int ordinal);
	public virtual System.TimeSpan GetTimeSpan (int ordinal);
	public virtual void SetBoolean (int ordinal, bool value);
	public virtual void SetByte (int ordinal, byte value);
	public virtual void SetBytes (int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length);
	public virtual void SetChar (int ordinal, char value);
	public virtual void SetChars (int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length);
	public virtual void SetDBNull (int ordinal);
	public virtual void SetDateTime (int ordinal, System.DateTime value);
	public virtual void SetDateTimeOffset (int ordinal, System.DateTimeOffset value);
	public virtual void SetDecimal (int ordinal, System.Decimal value);
	public virtual void SetDouble (int ordinal, double value);
	public virtual void SetFloat (int ordinal, float value);
	public virtual void SetGuid (int ordinal, System.Guid value);
	public virtual void SetInt16 (int ordinal, short value);
	public virtual void SetInt32 (int ordinal, int value);
	public virtual void SetInt64 (int ordinal, long value);
	public virtual void SetSqlBinary (int ordinal, System.Data.SqlTypes.SqlBinary value);
	public virtual void SetSqlBoolean (int ordinal, System.Data.SqlTypes.SqlBoolean value);
	public virtual void SetSqlByte (int ordinal, System.Data.SqlTypes.SqlByte value);
	public virtual void SetSqlBytes (int ordinal, System.Data.SqlTypes.SqlBytes value);
	public virtual void SetSqlChars (int ordinal, System.Data.SqlTypes.SqlChars value);
	public virtual void SetSqlDateTime (int ordinal, System.Data.SqlTypes.SqlDateTime value);
	public virtual void SetSqlDecimal (int ordinal, System.Data.SqlTypes.SqlDecimal value);
	public virtual void SetSqlDouble (int ordinal, System.Data.SqlTypes.SqlDouble value);
	public virtual void SetSqlGuid (int ordinal, System.Data.SqlTypes.SqlGuid value);
	public virtual void SetSqlInt16 (int ordinal, System.Data.SqlTypes.SqlInt16 value);
	public virtual void SetSqlInt32 (int ordinal, System.Data.SqlTypes.SqlInt32 value);
	public virtual void SetSqlInt64 (int ordinal, System.Data.SqlTypes.SqlInt64 value);
	public virtual void SetSqlMoney (int ordinal, System.Data.SqlTypes.SqlMoney value);
	public virtual void SetSqlSingle (int ordinal, System.Data.SqlTypes.SqlSingle value);
	public virtual void SetSqlString (int ordinal, System.Data.SqlTypes.SqlString value);
	public virtual void SetSqlXml (int ordinal, System.Data.SqlTypes.SqlXml value);
	public virtual void SetString (int ordinal, string value);
	public virtual void SetTimeSpan (int ordinal, System.TimeSpan value);
	public virtual void SetValue (int ordinal, object value);
	public virtual int SetValues (object[] values);

Type Changed: Microsoft.SqlServer.Server.SqlMetaData

Added constructors:

	public SqlMetaData (string name, System.Data.SqlDbType dbType, bool useServerDefault, bool isUniqueKey, System.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal);
	public SqlMetaData (string name, System.Data.SqlDbType dbType, long maxLength, bool useServerDefault, bool isUniqueKey, System.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal);
	public SqlMetaData (string name, System.Data.SqlDbType dbType, byte precision, byte scale, bool useServerDefault, bool isUniqueKey, System.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal);
	public SqlMetaData (string name, System.Data.SqlDbType dbType, long maxLength, long locale, System.Data.SqlTypes.SqlCompareOptions compareOptions, bool useServerDefault, bool isUniqueKey, System.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal);
	public SqlMetaData (string name, System.Data.SqlDbType dbType, string database, string owningSchema, string objectName, bool useServerDefault, bool isUniqueKey, System.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal);
	public SqlMetaData (string name, System.Data.SqlDbType dbType, long maxLength, byte precision, byte scale, long localeId, System.Data.SqlTypes.SqlCompareOptions compareOptions, System.Type userDefinedType, bool useServerDefault, bool isUniqueKey, System.Data.SqlClient.SortOrder columnSortOrder, int sortOrdinal);

Added properties:

	public bool IsUniqueKey { get; }
	public System.Data.SqlClient.SortOrder SortOrder { get; }
	public int SortOrdinal { get; }
	public bool UseServerDefault { get; }

Added methods:

	public System.Data.SqlTypes.SqlXml Adjust (System.Data.SqlTypes.SqlXml value);
	public System.DateTimeOffset Adjust (System.DateTimeOffset value);
	public System.TimeSpan Adjust (System.TimeSpan value);

Namespace System.Data.SqlClient

Type Changed: System.Data.SqlClient.SqlBulkCopy

Added property:

	public bool EnableStreaming { get; set; }

Added methods:

	public void WriteToServer (System.Data.Common.DbDataReader reader);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.Common.DbDataReader reader);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.Common.DbDataReader reader, System.Threading.CancellationToken cancellationToken);

Type Changed: System.Data.SqlClient.SqlCommand

Added methods:

	public System.Threading.Tasks.Task<SqlDataReader> ExecuteReaderAsync ();
	public System.Threading.Tasks.Task<SqlDataReader> ExecuteReaderAsync (System.Data.CommandBehavior behavior);
	public System.Threading.Tasks.Task<SqlDataReader> ExecuteReaderAsync (System.Threading.CancellationToken cancellationToken);
	public System.Threading.Tasks.Task<SqlDataReader> ExecuteReaderAsync (System.Data.CommandBehavior behavior, System.Threading.CancellationToken cancellationToken);
	public System.Threading.Tasks.Task<System.Xml.XmlReader> ExecuteXmlReaderAsync ();
	public System.Threading.Tasks.Task<System.Xml.XmlReader> ExecuteXmlReaderAsync (System.Threading.CancellationToken cancellationToken);

Type Changed: System.Data.SqlClient.SqlConnection

Added property:

	public System.Guid ClientConnectionId { get; }

Added methods:

	public void ResetStatistics ();
	public System.Collections.IDictionary RetrieveStatistics ();

Type Changed: System.Data.SqlClient.SqlDataReader

Added methods:

	public override System.Threading.Tasks.Task<T> GetFieldValueAsync<T> (int i, System.Threading.CancellationToken cancellationToken);
	public override System.IO.Stream GetStream (int i);
	public override System.IO.TextReader GetTextReader (int i);
	public override System.Threading.Tasks.Task<bool> IsDBNullAsync (int i, System.Threading.CancellationToken cancellationToken);

Type Changed: System.Data.SqlClient.SqlException

Added property:

	public System.Guid ClientConnectionId { get; }

Type Changed: System.Data.SqlClient.SqlParameter

Added property:

	public string TypeName { get; set; }

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

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

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

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

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

</script>

System.ServiceModel.dll

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

Namespace System.ServiceModel

Type Changed: System.ServiceModel.ActionNotSupportedException

Modified constructors:

public ActionNotSupportedException (string msg message)
public ActionNotSupportedException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.ChannelFactory

Modified methods:

protected virtual void ApplyConfiguration (string endpointConfig configurationName)
protected void InitializeEndpoint (Channels.Binding binding, EndpointAddress remoteAddress address)
protected void InitializeEndpoint (string endpointConfigurationName configurationName, EndpointAddress remoteAddress)

Type Changed: System.ServiceModel.ChannelFactory`1

Modified constructors:

protected ChannelFactory`1 (System.Type type channelType)

Type Changed: System.ServiceModel.CommunicationException

Modified constructors:

public CommunicationException (string msg message)
public CommunicationException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.CommunicationObjectAbortedException

Modified constructors:

public CommunicationObjectAbortedException (string msg message)
public CommunicationObjectAbortedException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.CommunicationObjectFaultedException

Modified constructors:

public CommunicationObjectFaultedException (string msg message)
public CommunicationObjectFaultedException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.DnsEndpointIdentity

Modified constructors:

public DnsEndpointIdentity (string dns dnsName)

Type Changed: System.ServiceModel.DuplexClientBase`1

Modified constructors:

protected DuplexClientBase`1 (object instance callbackInstance)
protected DuplexClientBase`1 (InstanceContext instance callbackInstance)
protected DuplexClientBase`1 (object instance callbackInstance, Description.ServiceEndpoint endpoint)
protected DuplexClientBase`1 (object instance callbackInstance, string configurationName endpointConfigurationName)
protected DuplexClientBase`1 (InstanceContext instance callbackInstance, Description.ServiceEndpoint endpoint)
protected DuplexClientBase`1 (InstanceContext instance callbackInstance, string configurationName endpointConfigurationName)
protected DuplexClientBase`1 (object instance callbackInstance, Channels.Binding binding, EndpointAddress address remoteAddress)
protected DuplexClientBase`1 (object instance callbackInstance, string bindingConfigurationName, EndpointAddress address remoteAddress)
protected DuplexClientBase`1 (object instance callbackInstance, string endpointConfigurationName, string remoteAddress)
protected DuplexClientBase`1 (InstanceContext instance callbackInstance, Channels.Binding binding, EndpointAddress address remoteAddress)
protected DuplexClientBase`1 (InstanceContext instance callbackInstance, string configurationName endpointConfigurationName, EndpointAddress address)
protected DuplexClientBase`1 (InstanceContext instance callbackInstance, string endpointConfigurationName, string remoteAddress)

Type Changed: System.ServiceModel.EndpointAddress

Modified constructors:

public EndpointAddress (System.Uri uri, Channels.AddressHeader[] headers addressHeaders)
public EndpointAddress (System.Uri uri, EndpointIdentity identity, Channels.AddressHeader[] headers addressHeaders)

Type Changed: System.ServiceModel.EndpointAddressBuilder

Added property:

	public EndpointIdentity Identity { get; set; }

Type Changed: System.ServiceModel.EndpointNotFoundException

Modified constructors:

public EndpointNotFoundException (string msg message)
public EndpointNotFoundException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.FaultCode

Modified constructors:

public FaultCode (string name, FaultCode subcode subCode)
public FaultCode (string name, string ns, FaultCode subcode subCode)

Modified methods:

public FaultCode CreateReceiverFaultCode (FaultCode subcode subCode)
public FaultCode CreateSenderFaultCode (FaultCode subcode subCode)

Type Changed: System.ServiceModel.FaultException

Modified methods:

public FaultException CreateFault (Channels.MessageFault fault messageFault, System.Type[] details faultDetailTypes)

Type Changed: System.ServiceModel.InstanceContext

Modified base type: System.Object System.ServiceModel.Channels.CommunicationObject

Modified constructors:

public InstanceContext (object dummy implementation)

Added interfaces:

	ICommunicationObject
	System.ServiceModel.IExtensibleObject<InstanceContext>

Added properties:

	protected override System.TimeSpan DefaultCloseTimeout { get; }
	protected override System.TimeSpan DefaultOpenTimeout { get; }
	public System.Threading.SynchronizationContext SynchronizationContext { get; set; }

Added methods:

	public object GetServiceInstance (Channels.Message message);
	protected override void OnAbort ();
	protected override System.IAsyncResult OnBeginClose (System.TimeSpan timeout, System.AsyncCallback callback, object state);
	protected override System.IAsyncResult OnBeginOpen (System.TimeSpan timeout, System.AsyncCallback callback, object state);
	protected override void OnClose (System.TimeSpan timeout);
	protected override void OnClosed ();
	protected override void OnEndClose (System.IAsyncResult result);
	protected override void OnEndOpen (System.IAsyncResult result);
	protected override void OnFaulted ();
	protected override void OnOpen (System.TimeSpan timeout);
	protected override void OnOpened ();
	protected override void OnOpening ();

Type Changed: System.ServiceModel.InvalidMessageContractException

Modified constructors:

public InvalidMessageContractException (string msg message)
public InvalidMessageContractException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.MessageHeaderException

Modified constructors:

public MessageHeaderException (string msg message)
public MessageHeaderException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.MessageHeader`1

Modified constructors:

public MessageHeader`1 (T content, bool must_understand mustUnderstand, string actor, bool relay)

Type Changed: System.ServiceModel.MessageSecurityOverTcp

Added constructor:

	public MessageSecurityOverTcp ();

Type Changed: System.ServiceModel.ProtocolException

Modified constructors:

public ProtocolException (string msg message)
public ProtocolException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.QuotaExceededException

Modified constructors:

public QuotaExceededException (string msg message)
public QuotaExceededException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.ServerTooBusyException

Modified constructors:

public ServerTooBusyException (string msg message)
public ServerTooBusyException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.ServiceActivationException

Modified constructors:

public ServiceActivationException (string msg message)
public ServiceActivationException (string msg message, System.Exception inner innerException)

Type Changed: System.ServiceModel.SpnEndpointIdentity

Modified constructors:

public SpnEndpointIdentity (string spn spnName)

Type Changed: System.ServiceModel.TcpTransportSecurity

Added property:

	public System.Security.Authentication.SslProtocols SslProtocols { get; set; }

Type Changed: System.ServiceModel.UpnEndpointIdentity

Modified constructors:

public UpnEndpointIdentity (string upn upnName)

Namespace System.ServiceModel.Channels

Type Changed: System.ServiceModel.Channels.AddressHeader

Modified methods:

public AddressHeader CreateAddressHeader (object value, System.Runtime.Serialization.XmlObjectSerializer formatter serializer)
public AddressHeader CreateAddressHeader (string name, string ns, object value, System.Runtime.Serialization.XmlObjectSerializer formatter serializer)
public T GetValue<T> (System.Runtime.Serialization.XmlObjectSerializer formatter serializer)

Type Changed: System.ServiceModel.Channels.AddressHeaderCollection

Modified constructors:

public AddressHeaderCollection (System.Collections.Generic.IEnumerable<AddressHeader> headers addressHeaders)

Type Changed: System.ServiceModel.Channels.BindingContext

Modified constructors:

public BindingContext (CustomBinding binding, BindingParameterCollection parms parameters)

Type Changed: System.ServiceModel.Channels.BindingElement

Modified constructors:

protected BindingElement (BindingElement other elementToBeCloned)

Type Changed: System.ServiceModel.Channels.BindingElementCollection

Modified constructors:

public BindingElementCollection (System.Collections.Generic.IEnumerable<BindingElement> bindings elements)
public BindingElementCollection (BindingElement[] bindings elements)

Type Changed: System.ServiceModel.Channels.ChannelBase

Modified constructors:

protected ChannelBase (ChannelManagerBase manager channelManager)

Type Changed: System.ServiceModel.Channels.ChannelFactoryBase`1

Modified methods:

public virtual final TChannel CreateChannel (System.ServiceModel.EndpointAddress remoteAddress address)
public virtual final TChannel CreateChannel (System.ServiceModel.EndpointAddress remoteAddress address, System.Uri via)
protected abstract TChannel OnCreateChannel (System.ServiceModel.EndpointAddress remoteAddress address, System.Uri via)

Type Changed: System.ServiceModel.Channels.CustomBinding

Modified constructors:

public CustomBinding (System.Collections.Generic.IEnumerable<BindingElement> bindingElements bindingElementsInTopDownChannelStackOrder)
public CustomBinding (BindingElement[] binding bindingElementsInTopDownChannelStackOrder)
public CustomBinding (string name, string ns, BindingElement[] binding bindingElementsInTopDownChannelStackOrder)

Type Changed: System.ServiceModel.Channels.FaultConverter

Modified methods:

protected abstract bool OnTryCreateException (Message message, MessageFault fault, out System.Exception error exception)
protected abstract bool OnTryCreateFaultMessage (System.Exception error exception, out Message message)
public bool TryCreateException (Message message, MessageFault fault, out System.Exception error exception)
public bool TryCreateFaultMessage (System.Exception error exception, out Message message)

Type Changed: System.ServiceModel.Channels.HttpTransportBindingElement

Modified constructors:

protected HttpTransportBindingElement (HttpTransportBindingElement other elementToBeCloned)

Type Changed: System.ServiceModel.Channels.HttpsTransportBindingElement

Modified constructors:

protected HttpsTransportBindingElement (HttpsTransportBindingElement other elementToBeCloned)

Type Changed: System.ServiceModel.Channels.Message

Modified methods:

public Message CreateMessage (MessageVersion version, string action, object body, System.Runtime.Serialization.XmlObjectSerializer xmlFormatter serializer)
public T GetBody<T> (System.Runtime.Serialization.XmlObjectSerializer xmlFormatter serializer)

Type Changed: System.ServiceModel.Channels.MessageEncodingBindingElement

Modified constructors:

public MessageEncodingBindingElement (MessageEncodingBindingElement source elementToBeCloned)

Modified methods:

public override T GetProperty<T> (BindingContext ctx context)

Type Changed: System.ServiceModel.Channels.MessageFault

Modified methods:

public T GetDetail<T> (System.Runtime.Serialization.XmlObjectSerializer formatter serializer)

Type Changed: System.ServiceModel.Channels.MessageHeader

Modified methods:

public MessageHeader CreateHeader (string name, string ns, object value, bool must_understand mustUnderstand)
public MessageHeader CreateHeader (string name, string ns, object value, System.Runtime.Serialization.XmlObjectSerializer formatter serializer)
public MessageHeader CreateHeader (string name, string ns, object value, bool must_understand mustUnderstand, string actor)
public MessageHeader CreateHeader (string name, string ns, object value, System.Runtime.Serialization.XmlObjectSerializer formatter serializer, bool must_understand mustUnderstand)
public MessageHeader CreateHeader (string name, string ns, object value, bool must_understand mustUnderstand, string actor, bool relay)
public MessageHeader CreateHeader (string name, string ns, object value, System.Runtime.Serialization.XmlObjectSerializer formatter serializer, bool must_understand mustUnderstand, string actor)
public MessageHeader CreateHeader (string name, string ns, object value, System.Runtime.Serialization.XmlObjectSerializer formatter serializer, bool must_understand mustUnderstand, string actor, bool relay)
public virtual bool IsMessageVersionSupported (MessageVersion version messageVersion)
protected abstract void OnWriteHeaderContents (System.Xml.XmlDictionaryWriter writer, MessageVersion version messageVersion)
protected virtual void OnWriteStartHeader (System.Xml.XmlDictionaryWriter writer, MessageVersion version messageVersion)
public void WriteHeader (System.Xml.XmlDictionaryWriter writer, MessageVersion version messageVersion)
public void WriteHeader (System.Xml.XmlWriter writer, MessageVersion version messageVersion)
protected void WriteHeaderAttributes (System.Xml.XmlDictionaryWriter writer, MessageVersion version messageVersion)
public void WriteHeaderContents (System.Xml.XmlDictionaryWriter writer, MessageVersion version messageVersion)
public void WriteStartHeader (System.Xml.XmlDictionaryWriter writer, MessageVersion version messageVersion)

Type Changed: System.ServiceModel.Channels.MessageHeaders

Modified methods:

public void CopyHeaderFrom (Message m message, int index headerIndex)
public void CopyHeaderFrom (MessageHeaders headers collection, int index headerIndex)
public void CopyHeadersFrom (Message m message)
public void CopyHeadersFrom (MessageHeaders headers collection)
public void CopyTo (MessageHeaderInfo[] dst array, int index)
public System.Xml.XmlDictionaryReader GetReaderAtHeader (int index headerIndex)
public void Insert (int index headerIndex, MessageHeader header)
public void RemoveAt (int index headerIndex)
public void WriteHeader (int index headerIndex, System.Xml.XmlDictionaryWriter writer)
public void WriteHeader (int index headerIndex, System.Xml.XmlWriter writer)
public void WriteHeaderContents (int index headerIndex, System.Xml.XmlDictionaryWriter writer)
public void WriteHeaderContents (int index headerIndex, System.Xml.XmlWriter writer)
public void WriteStartHeader (int index headerIndex, System.Xml.XmlDictionaryWriter writer)
public void WriteStartHeader (int index headerIndex, System.Xml.XmlWriter writer)

Type Changed: System.ServiceModel.Channels.MessageVersion

Modified methods:

public MessageVersion CreateVersion (System.ServiceModel.EnvelopeVersion envelope_version envelopeVersion)
public MessageVersion CreateVersion (System.ServiceModel.EnvelopeVersion envelope_version envelopeVersion, AddressingVersion addressing_version addressingVersion)
public override bool Equals (object value obj)

Type Changed: System.ServiceModel.Channels.SecurityBindingElement

Added properties:

	public System.ServiceModel.Security.Tokens.SupportingTokenParameters EndpointSupportingTokenParameters { get; }
	public System.ServiceModel.MessageSecurityVersion MessageSecurityVersion { get; set; }
	public SecurityHeaderLayout SecurityHeaderLayout { get; set; }

Added methods:

	public static SecurityBindingElement CreateSecureConversationBindingElement (SecurityBindingElement bootstrapSecurity);
	public static SecurityBindingElement CreateSecureConversationBindingElement (SecurityBindingElement bootstrapSecurity, bool requireCancellation);
	public static SecurityBindingElement CreateSecureConversationBindingElement (SecurityBindingElement bootstrapSecurity, bool requireCancellation, System.ServiceModel.Security.ChannelProtectionRequirements bootstrapProtectionRequirements);

Type Changed: System.ServiceModel.Channels.SslStreamSecurityBindingElement

Added property:

	public System.Security.Authentication.SslProtocols SslProtocols { get; set; }

Type Changed: System.ServiceModel.Channels.TcpTransportBindingElement

Modified constructors:

protected TcpTransportBindingElement (TcpTransportBindingElement other elementToBeCloned)

Type Changed: System.ServiceModel.Channels.TransportBindingElement

Modified constructors:

protected TransportBindingElement (TransportBindingElement other elementToBeCloned)

Namespace System.ServiceModel.Description

Type Changed: System.ServiceModel.Description.ClientCredentials

Modified constructors:

protected ClientCredentials (ClientCredentials source other)

Added properties:

	public System.ServiceModel.Security.X509CertificateInitiatorClientCredential ClientCertificate { get; }
	public System.ServiceModel.Security.HttpDigestClientCredential HttpDigest { get; }
	public System.ServiceModel.Security.X509CertificateRecipientClientCredential ServiceCertificate { get; }
	public System.ServiceModel.Security.WindowsClientCredential Windows { get; }

Modified methods:

public virtual void ApplyClientBehavior (ServiceEndpoint endpoint serviceEndpoint, System.ServiceModel.Dispatcher.ClientRuntime behavior)

Type Changed: System.ServiceModel.Description.IContractBehavior

Modified methods:

public abstract void AddBindingParameters (ContractDescription description contractDescription, ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection parameters bindingParameters)
public abstract void ApplyClientBehavior (ContractDescription description contractDescription, ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime proxy clientRuntime)
public abstract void ApplyDispatchBehavior (ContractDescription description contractDescription, ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.DispatchRuntime dispatch dispatchRuntime)
public abstract void Validate (ContractDescription description contractDescription, ServiceEndpoint endpoint)

Type Changed: System.ServiceModel.Description.IEndpointBehavior

Modified methods:

public abstract void AddBindingParameters (ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection parameters bindingParameters)
public abstract void ApplyClientBehavior (ServiceEndpoint serviceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime behavior clientRuntime)
public abstract void ApplyDispatchBehavior (ServiceEndpoint serviceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher dispatcher endpointDispatcher)
public abstract void Validate (ServiceEndpoint serviceEndpoint endpoint)

Type Changed: System.ServiceModel.Description.IOperationBehavior

Modified methods:

public abstract void AddBindingParameters (OperationDescription description operationDescription, System.ServiceModel.Channels.BindingParameterCollection parameters bindingParameters)
public abstract void ApplyClientBehavior (OperationDescription description operationDescription, System.ServiceModel.Dispatcher.ClientOperation proxy clientOperation)
public abstract void ApplyDispatchBehavior (OperationDescription description operationDescription, System.ServiceModel.Dispatcher.DispatchOperation dispatch dispatchOperation)
public abstract void Validate (OperationDescription description operationDescription)

Namespace System.ServiceModel.Dispatcher

Type Changed: System.ServiceModel.Dispatcher.IClientMessageFormatter

Modified methods:

public abstract object DeserializeReply (System.ServiceModel.Channels.Message message, object[] paremeters parameters)
public abstract System.ServiceModel.Channels.Message SerializeRequest (System.ServiceModel.Channels.MessageVersion version messageVersion, object[] inputs parameters)

Type Changed: System.ServiceModel.Dispatcher.IClientMessageInspector

Modified methods:

public abstract void AfterReceiveReply (ref System.ServiceModel.Channels.Message message reply, object correlationState)
public abstract object BeforeSendRequest (ref System.ServiceModel.Channels.Message message request, System.ServiceModel.IClientChannel channel)

Namespace System.ServiceModel.Security

New Type System.ServiceModel.Security.ChannelProtectionRequirements

public class ChannelProtectionRequirements {
	// constructors
	public ChannelProtectionRequirements ();
	public ChannelProtectionRequirements (ChannelProtectionRequirements other);
	// properties
	public ScopedMessagePartSpecification IncomingEncryptionParts { get; }
	public ScopedMessagePartSpecification IncomingSignatureParts { get; }
	public bool IsReadOnly { get; }
	public ScopedMessagePartSpecification OutgoingEncryptionParts { get; }
	public ScopedMessagePartSpecification OutgoingSignatureParts { get; }
	// methods
	public void Add (ChannelProtectionRequirements protectionRequirements);
	public void Add (ChannelProtectionRequirements protectionRequirements, bool channelScopeOnly);
	public ChannelProtectionRequirements CreateInverse ();
	public void MakeReadOnly ();
}

New Type System.ServiceModel.Security.MessagePartSpecification

public class MessagePartSpecification {
	// constructors
	public MessagePartSpecification ();
	public MessagePartSpecification (bool isBodyIncluded);
	public MessagePartSpecification (System.Xml.XmlQualifiedName[] headerTypes);
	public MessagePartSpecification (bool isBodyIncluded, System.Xml.XmlQualifiedName[] headerTypes);
	// properties
	public System.Collections.Generic.ICollection<System.Xml.XmlQualifiedName> HeaderTypes { get; }
	public bool IsBodyIncluded { get; set; }
	public bool IsReadOnly { get; }
	public static MessagePartSpecification NoParts { get; }
	// methods
	public void Clear ();
	public void MakeReadOnly ();
	public void Union (MessagePartSpecification other);
}

New Type System.ServiceModel.Security.ScopedMessagePartSpecification

public class ScopedMessagePartSpecification {
	// constructors
	public ScopedMessagePartSpecification ();
	public ScopedMessagePartSpecification (ScopedMessagePartSpecification other);
	// properties
	public System.Collections.Generic.ICollection<string> Actions { get; }
	public MessagePartSpecification ChannelParts { get; }
	public bool IsReadOnly { get; }
	// methods
	public void AddParts (MessagePartSpecification parts);
	public void AddParts (MessagePartSpecification parts, string action);
	public void MakeReadOnly ();
	public bool TryGetParts (string action, out MessagePartSpecification parts);
	public bool TryGetParts (string action, bool excludeChannelScope, out MessagePartSpecification parts);
}

New Type System.ServiceModel.Security.X509CertificateInitiatorClientCredential

public sealed class X509CertificateInitiatorClientCredential {
	// properties
	public System.Security.Cryptography.X509Certificates.X509Certificate2 Certificate { get; set; }
	// methods
	public void SetCertificate (string subjectName, System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, System.Security.Cryptography.X509Certificates.StoreName storeName);
	public void SetCertificate (System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, System.Security.Cryptography.X509Certificates.StoreName storeName, System.Security.Cryptography.X509Certificates.X509FindType findType, object findValue);
}

New Type System.ServiceModel.Security.X509CertificateRecipientClientCredential

public sealed class X509CertificateRecipientClientCredential {
	// properties
	public X509ServiceCertificateAuthentication Authentication { get; }
	public System.Security.Cryptography.X509Certificates.X509Certificate2 DefaultCertificate { get; set; }
	public System.Collections.Generic.Dictionary<System.Uri,System.Security.Cryptography.X509Certificates.X509Certificate2> ScopedCertificates { get; }
	public X509ServiceCertificateAuthentication SslCertificateAuthentication { get; set; }
	// methods
	public void SetDefaultCertificate (string subjectName, System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, System.Security.Cryptography.X509Certificates.StoreName storeName);
	public void SetDefaultCertificate (System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, System.Security.Cryptography.X509Certificates.StoreName storeName, System.Security.Cryptography.X509Certificates.X509FindType findType, object findValue);
	public void SetScopedCertificate (string subjectName, System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, System.Security.Cryptography.X509Certificates.StoreName storeName, System.Uri targetService);
	public void SetScopedCertificate (System.Security.Cryptography.X509Certificates.StoreLocation storeLocation, System.Security.Cryptography.X509Certificates.StoreName storeName, System.Security.Cryptography.X509Certificates.X509FindType findType, object findValue, System.Uri targetService);
}

New Type System.ServiceModel.Security.X509ServiceCertificateAuthentication

public class X509ServiceCertificateAuthentication {
	// constructors
	public X509ServiceCertificateAuthentication ();
	// properties
	public X509CertificateValidationMode CertificateValidationMode { get; set; }
	public System.IdentityModel.Selectors.X509CertificateValidator CustomCertificateValidator { get; set; }
	public System.Security.Cryptography.X509Certificates.X509RevocationMode RevocationMode { get; set; }
	public System.Security.Cryptography.X509Certificates.StoreLocation TrustedStoreLocation { get; set; }
}

Namespace System.ServiceModel.Security.Tokens

Type Changed: System.ServiceModel.Security.Tokens.SecureConversationSecurityTokenParameters

Modified constructors:

public SecureConversationSecurityTokenParameters (System.ServiceModel.Channels.SecurityBindingElement element bootstrapSecurityBindingElement)
public SecureConversationSecurityTokenParameters (System.ServiceModel.Channels.SecurityBindingElement element bootstrapSecurityBindingElement, bool requireCancellation)

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

Added constructors:

	public TransactionScope (TransactionScopeAsyncFlowOption asyncFlow);
	public TransactionScope (TransactionScopeOption option, TransactionScopeAsyncFlowOption asyncFlow);
	public TransactionScope (TransactionScopeOption option, System.TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow);

New Type System.Transactions.TransactionScopeAsyncFlowOption

[Serializable]
public enum TransactionScopeAsyncFlowOption {
	Enabled = 1,
	Suppress = 0,
}

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

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

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

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

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

</script>

Xamarin.TVOS.dll

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

Namespace AudioToolbox

Type Changed: AudioToolbox.MusicSequence

Added methods:

	public MusicTrack GetTempoTrack ();
	public void SetUserCallback (MusicSequenceUserCallback callback);

New Type AudioToolbox.MusicSequenceUserCallback

public sealed delegate MusicSequenceUserCallback : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public MusicSequenceUserCallback (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (MusicTrack track, double inEventTime, MusicEventUserData inEventData, double inStartSliceBeat, double inEndSliceBeat, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (System.IAsyncResult result);
	public virtual void Invoke (MusicTrack track, double inEventTime, MusicEventUserData inEventData, double inStartSliceBeat, double inEndSliceBeat);
}

Namespace AudioUnit

Type Changed: AudioUnit.AUAudioUnit

Added property:

	public virtual AUHostTransportStateBlock TransportStateBlock { get; set; }

Type Changed: AudioUnit.AUAudioUnit_AUAudioInputOutputUnit

Added methods:

	public static AUInputHandler GetInputHandler (AUAudioUnit This);
	public static AURenderPullInputBlock GetOutputProvider (AUAudioUnit This);
	public static void SetInputHandler (AUAudioUnit This, AUInputHandler handler);
	public static void SetOutputProvider (AUAudioUnit This, AURenderPullInputBlock provider);

Type Changed: AudioUnit.AUParameter

Obsoleted methods:

[Obsolete ("Use the AUParameterObserverToken overload")] public virtual void SetValue (float value, IntPtr originator);
[Obsolete ("Use the AUParameterObserverToken overload")] public virtual void SetValue (float value, IntPtr originator, ulong hostTime);

Added methods:

	public void SetValue (float value, AUParameterObserverToken originator);
	public void SetValue (float value, AUParameterObserverToken originator, ulong hostTime);

Type Changed: AudioUnit.AUParameterNode

Modified properties:

public virtual AUImplementorStringFromValueCallback ImplementorStringFromValueCallback { get; set; }

Added properties:

	public virtual AUImplementorDisplayNameWithLengthCallback ImplementorDisplayNameWithLengthCallback { get; set; }
	public virtual AUImplementorValueFromStringCallback ImplementorValueFromStringCallback { get; set; }

Obsoleted methods:

[Obsolete ("Use the AUParameterObserverToken overload")] public virtual void RemoveParameterObserver (IntPtr token);
[Obsolete ("Use the CreateTokenByAddingParameterObserver instead")] public virtual IntPtr TokenByAddingParameterObserver (AUParameterObserver observer);

Added methods:

	public AUParameterObserverToken CreateTokenByAddingParameterObserver (AUParameterObserver observer);
	public AUParameterObserverToken CreateTokenByAddingParameterRecordingObserver (AUParameterRecordingObserver observer);
	public void RemoveParameterObserver (AUParameterObserverToken token);
<span class='added added-method ' data-is-non-breaking="">[Obsolete ("Use the CreateTokenByAddingParameterRecordingObserver instead")]
public virtual IntPtr TokenByAddingParameterRecordingObserver (AUParameterRecordingObserver observer);</span>

New Type AudioUnit.AUHostTransportStateBlock

public sealed delegate AUHostTransportStateBlock : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public AUHostTransportStateBlock (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (ref AUHostTransportStateFlags transportStateFlags, ref double currentSamplePosition, ref double cycleStartBeatPosition, ref double cycleEndBeatPosition, System.AsyncCallback callback, object object);
	public virtual bool EndInvoke (ref AUHostTransportStateFlags transportStateFlags, ref double currentSamplePosition, ref double cycleStartBeatPosition, ref double cycleEndBeatPosition, System.IAsyncResult result);
	public virtual bool Invoke (ref AUHostTransportStateFlags transportStateFlags, ref double currentSamplePosition, ref double cycleStartBeatPosition, ref double cycleEndBeatPosition);
}

New Type AudioUnit.AUImplementorDisplayNameWithLengthCallback

public sealed delegate AUImplementorDisplayNameWithLengthCallback : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public AUImplementorDisplayNameWithLengthCallback (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (AUParameterNode node, nint desiredLength, System.AsyncCallback callback, object object);
	public virtual string EndInvoke (System.IAsyncResult result);
	public virtual string Invoke (AUParameterNode node, nint desiredLength);
}

New Type AudioUnit.AUImplementorValueFromStringCallback

public sealed delegate AUImplementorValueFromStringCallback : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public AUImplementorValueFromStringCallback (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (AUParameter param, string str, System.AsyncCallback callback, object object);
	public virtual float EndInvoke (System.IAsyncResult result);
	public virtual float Invoke (AUParameter param, string str);
}

New Type AudioUnit.AUInputHandler

public sealed delegate AUInputHandler : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public AUInputHandler (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (ref AudioUnitRenderActionFlags actionFlags, ref AudioToolbox.AudioTimeStamp timestamp, uint frameCount, nint inputBusNumber, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (ref AudioUnitRenderActionFlags actionFlags, ref AudioToolbox.AudioTimeStamp timestamp, System.IAsyncResult result);
	public virtual void Invoke (ref AudioUnitRenderActionFlags actionFlags, ref AudioToolbox.AudioTimeStamp timestamp, uint frameCount, nint inputBusNumber);
}

New Type AudioUnit.AUParameterObserverToken

public struct AUParameterObserverToken {
	// fields
	public IntPtr ObserverToken;
}

New Type AudioUnit.AUParameterRecordingObserver

public sealed delegate AUParameterRecordingObserver : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public AUParameterRecordingObserver (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (nint numberOfEvents, ref AURecordedParameterEvent events, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (ref AURecordedParameterEvent events, System.IAsyncResult result);
	public virtual void Invoke (nint numberOfEvents, ref AURecordedParameterEvent events);
}

New Type AudioUnit.AURecordedParameterEvent

public struct AURecordedParameterEvent {
	// fields
	public ulong Address;
	public ulong HostTime;
	public float Value;
}

New Type AudioUnit.IAUAudioUnitFactory

public interface IAUAudioUnitFactory : Foundation.INSExtensionRequestHandling, ObjCRuntime.INativeObject, System.IDisposable {
	// methods
	public virtual AUAudioUnit CreateAudioUnit (AudioComponentDescription desc, out Foundation.NSError error);
}

Namespace CoreBluetooth

New Type CoreBluetooth.AdvertisementData

public class AdvertisementData : Foundation.DictionaryContainer {
	// constructors
	public AdvertisementData ();
	public AdvertisementData (Foundation.NSDictionary dictionary);
	// properties
	public bool? IsConnectable { get; set; }
	public string LocalName { get; set; }
	public Foundation.NSData ManufacturerData { get; set; }
	public CBUUID[] OverflowServiceUuids { get; set; }
	public Foundation.NSDictionary<CBUUID,Foundation.NSData> ServiceData { get; set; }
	public CBUUID[] ServiceUuids { get; set; }
	public CBUUID[] SolicitedServiceUuids { get; set; }
	public Foundation.NSNumber TxPowerLevel { get; set; }
}

New Type CoreBluetooth.RestoredState

public class RestoredState : Foundation.DictionaryContainer {
	// constructors
	public RestoredState ();
	public RestoredState (Foundation.NSDictionary dictionary);
	// properties
	public CBPeripheral[] Peripherals { get; set; }
	public PeripheralScanningOptions ScanOptions { get; set; }
	public CBPeripheral[] ScanServices { get; set; }
}

Namespace CoreData

Type Changed: CoreData.NSEntityDescription

Added property:

	public virtual string RenamingIdentifier { get; set; }

Type Changed: CoreData.NSManagedObject

Added property:

	public virtual uint FaultingState { get; }

Type Changed: CoreData.NSMappingModel

Added method:

	public static NSMappingModel GetInferredMappingModel (NSManagedObjectModel source, NSManagedObjectModel destination, out Foundation.NSError error);

Type Changed: CoreData.NSPropertyDescription

Added property:

	public virtual string RenamingIdentifier { get; set; }

New Type CoreData.NSExpressionDescription

public class NSExpressionDescription : CoreData.NSPropertyDescription, Foundation.INSCoding, Foundation.INSCopying, Foundation.INSObjectProtocol, ObjCRuntime.INativeObject, System.IDisposable, System.IEquatable<Foundation.NSObject> {
	// constructors
	public NSExpressionDescription ();
	public NSExpressionDescription (Foundation.NSCoder coder);
	protected NSExpressionDescription (Foundation.NSObjectFlag t);
	protected NSExpressionDescription (IntPtr handle);
	// properties
	public override IntPtr ClassHandle { get; }
	public virtual Foundation.NSExpression Expression { get; set; }
	public virtual NSAttributeType ResultType { get; set; }
}

New Type CoreData.NSFetchRequestExpression

public class NSFetchRequestExpression : Foundation.NSExpression, Foundation.INSCoding, Foundation.INSCopying, Foundation.INSObjectProtocol, Foundation.INSSecureCoding, ObjCRuntime.INativeObject, System.IDisposable, System.IEquatable<Foundation.NSObject> {
	// constructors
	public NSFetchRequestExpression (Foundation.NSCoder coder);
	protected NSFetchRequestExpression (Foundation.NSObjectFlag t);
	protected NSFetchRequestExpression (IntPtr handle);
	// properties
	public override IntPtr ClassHandle { get; }
	public virtual Foundation.NSExpression Context { get; }
	public virtual bool IsCountOnly { get; }
	public virtual Foundation.NSExpression Request { get; }
	// methods
	public static NSFetchRequestExpression FromFetch (Foundation.NSExpression fetch, Foundation.NSExpression context, bool countOnly);
}

New Type CoreData.NSSnapshotEventType

[Serializable]
public enum NSSnapshotEventType {
	MergePolicy = 64,
	Refresh = 32,
	Rollback = 16,
	UndoDeletion = 4,
	UndoInsertion = 2,
	UndoUpdate = 8,
}

Namespace CoreImage

Type Changed: CoreImage.CIDetectorOptions

Added property:

	public CIImageOrientation? ImageOrientation { get; set; }

Namespace CoreLocation

Type Changed: CoreLocation.CLLocationCoordinate2D

Added method:

	public override string ToString ();

Namespace CoreMedia

Type Changed: CoreMedia.CMBlockBuffer

Added interface:

	ICMAttachmentBearer

Added methods:

	public CMBlockBufferError AppendMemoryBlock (byte[] data, uint offsetToData, CMBlockBufferFlags flags);
	public CMBlockBufferError CopyDataBytes (uint offsetToData, uint dataLength, out byte[] destination);
	public static CMBlockBuffer FromMemoryBlock (byte[] data, uint offsetToData, CMBlockBufferFlags flags, out CMBlockBufferError error);
	public CMBlockBufferError ReplaceDataBytes (byte[] sourceBytes, uint offsetIntoDestination);

Type Changed: CoreMedia.CMSampleBuffer

Added interface:

	ICMAttachmentBearer

New Type CoreMedia.CMAttachmentBearer

public static class CMAttachmentBearer {
	// methods
	public static T GetAttachment<T> (ICMAttachmentBearer target, string key, out CMAttachmentMode attachmentModeOut);
	public static Foundation.NSDictionary GetAttachments (ICMAttachmentBearer target, CMAttachmentMode attachmentMode);
	public static void PropagateAttachments (ICMAttachmentBearer source, ICMAttachmentBearer destination);
	public static void RemoveAllAttachments (ICMAttachmentBearer target);
	public static void RemoveAttachment (ICMAttachmentBearer target, string key);
	public static void SetAttachment (ICMAttachmentBearer target, string key, ObjCRuntime.INativeObject value, CMAttachmentMode attachmentMode);
	public static void SetAttachments (ICMAttachmentBearer target, Foundation.NSDictionary theAttachments, CMAttachmentMode attachmentMode);
}

New Type CoreMedia.CMAttachmentMode

[Serializable]
public enum CMAttachmentMode {
	ShouldNotPropagate = 0,
	ShouldPropagate = 1,
}

New Type CoreMedia.ICMAttachmentBearer

public interface ICMAttachmentBearer : ObjCRuntime.INativeObject {
}

Namespace Foundation

Type Changed: Foundation.DictionaryContainer

Added method:

	protected Foundation.NSDictionary<TKey,TValue> GetNSDictionary<TKey, TValue> (NSString key);

Type Changed: Foundation.NSDictionary`2

Obsoleted methods:

[Obsolete ("TKey and TValue are inversed and won't work unless both types are identical. Use the generic overload that takes a count parameter instead")] public static Foundation.NSDictionary<TKey,TValue> FromObjectsAndKeys (TKey[] objects, TValue[] keys);

Added method:

	public static Foundation.NSDictionary<TKey,TValue> FromObjectsAndKeys (TValue[] objects, TKey[] keys, nint count);

Type Changed: Foundation.NSExpression

Added property:

	public virtual NSExpressionCallbackHandler Block { get; }

Obsoleted methods:

[Obsolete ("ValueWithObject is deprecated, please use EvaluateWith instead.")] public virtual NSExpression ExpressionValueWithObject (NSObject obj, NSMutableDictionary context);
[Obsolete ("FromFormat (string, NSExpression[]) is deprecated, please use FromFormat (string, NSObject[]) instead.")] public static NSExpression FromFormat (string format, NSExpression[] parameters);
[Obsolete ("FromFunction (NSExpressionHandler, NSExpression[]) is deprecated, please use FromFunction (NSExpressionCallbackHandler, NSExpression[]) instead.")] public static NSExpression FromFunction (NSExpressionHandler target, NSExpression[] parameters);

Modified methods:

public virtual NSExpression ExpressionValueWithObject (NSObject object1 obj, NSMutableDictionary context)

Added methods:

	public virtual NSObject EvaluateWith (NSObject obj, NSMutableDictionary context);
	public static NSExpression FromFormat (string expressionFormat);
	public static NSExpression FromFormat (string format, NSObject[] parameters);
	public static NSExpression FromFunction (NSExpressionCallbackHandler target, NSExpression[] parameters);

Type Changed: Foundation.NSMutableAttributedString

Added property:

	public virtual NSMutableString MutableString { get; }

Type Changed: Foundation.NSMutableDictionary`2

Obsoleted methods:

[Obsolete ("TKey and TValue are inversed and won't work unless both types are identical. Use the generic overload that takes a count parameter instead")] public static Foundation.NSMutableDictionary<TKey,TValue> FromObjectsAndKeys (TKey[] objects, TValue[] keys);

Added method:

	public static Foundation.NSMutableDictionary<TKey,TValue> FromObjectsAndKeys (TValue[] objects, TKey[] keys, nint count);

Type Changed: Foundation.NSObject

Obsoleted fields:

[Obsolete ("Use PlatformAssembly for easier code sharing across platforms")] public static System.Reflection.Assembly MonoTouchAssembly;

Added field:

	public static System.Reflection.Assembly PlatformAssembly;

Type Changed: Foundation.NSUrl

Added property:

	public int Port { get; }

Added methods:

	public static bool op_Equality (NSUrl x, NSUrl y);
	public static bool op_Inequality (NSUrl x, NSUrl y);

Type Changed: Foundation.NSUserDefaults

Added property:

	public static NSString DidChangeNotification { get; }

New Type Foundation.NSExpressionCallbackHandler

public sealed delegate NSExpressionCallbackHandler : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public NSExpressionCallbackHandler (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (NSObject evaluatedObject, NSExpression[] expressions, NSMutableDictionary context, System.AsyncCallback callback, object object);
	public virtual NSObject EndInvoke (System.IAsyncResult result);
	public virtual NSObject Invoke (NSObject evaluatedObject, NSExpression[] expressions, NSMutableDictionary context);
}

Namespace GameKit

Type Changed: GameKit.GKLocalPlayerListener

Added method:

	[Obsolete ("Use DidRequestMatch(GKPlayer player, GKPlayer[] recipientPlayers) instead")]
	public virtual void DidRequestMatchWithPlayers (GKPlayer player, string[] playerIDsToInvite);

Namespace MapKit

Type Changed: MapKit.MKCoordinateRegion

Added method:

	public override string ToString ();

Type Changed: MapKit.MKCoordinateSpan

Added method:

	public override string ToString ();

Type Changed: MapKit.MKMapView

Added property:

	public virtual bool ShowsScale { get; set; }

New Type MapKit.MKOverlayView

public class MKOverlayView {
	// constructors
	public MKOverlayView ();
	// methods
	public static nfloat MKRoadWidthAtZoomScale (nfloat zoomScale);
}

Namespace MediaPlayer

New Type MediaPlayer.MPErrorCodeExtensions

public static class MPErrorCodeExtensions {
	// methods
	public static Foundation.NSString GetDomain (MPErrorCode self);
}

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

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

Type Changed: ObjCRuntime.Runtime

Added events:

	public event MarshalManagedExceptionHandler MarshalManagedException;
	public event MarshalObjectiveCExceptionHandler MarshalObjectiveCException;

New Type ObjCRuntime.MarshalManagedExceptionEventArgs

public class MarshalManagedExceptionEventArgs {
	// constructors
	public MarshalManagedExceptionEventArgs ();
	// properties
	public System.Exception Exception { get; set; }
	public MarshalManagedExceptionMode ExceptionMode { get; set; }
}

New Type ObjCRuntime.MarshalManagedExceptionHandler

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

New Type ObjCRuntime.MarshalManagedExceptionMode

[Serializable]
public enum MarshalManagedExceptionMode {
	Abort = 3,
	Default = 0,
	Disable = 4,
	ThrowObjectiveCException = 2,
	UnwindNativeCode = 1,
}

New Type ObjCRuntime.MarshalObjectiveCExceptionEventArgs

public class MarshalObjectiveCExceptionEventArgs {
	// constructors
	public MarshalObjectiveCExceptionEventArgs ();
	// properties
	public Foundation.NSException Exception { get; set; }
	public MarshalObjectiveCExceptionMode ExceptionMode { get; set; }
}

New Type ObjCRuntime.MarshalObjectiveCExceptionHandler

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

New Type ObjCRuntime.MarshalObjectiveCExceptionMode

[Serializable]
public enum MarshalObjectiveCExceptionMode {
	Abort = 3,
	Default = 0,
	Disable = 4,
	ThrowManagedException = 2,
	UnwindManagedCode = 1,
}

Namespace SpriteKit

Type Changed: SpriteKit.SKVideoNode

Modified methods:

public SKVideoNode FromUrl (Foundation.NSUrl videoURL videoUrl)

Namespace UIKit

Type Changed: UIKit.UIView

Added method:

	public UIImage Capture (bool afterScreenUpdates);

<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 MonoTouch.NUnit.UI

Type Changed: MonoTouch.NUnit.UI.TouchOptions

Added property:

	public string Transport { get; set; }

Namespace NUnit.Framework

Type Changed: NUnit.Framework.Assert

Added methods:

	public static void IsInstanceOfType (System.Type expected, object actual);
	public static void IsInstanceOfType (object anObject, string message, object[] args);
	public static void IsInstanceOfType (System.Type expected, object actual, string message);
	public static void IsInstanceOfType (System.Type expected, object actual, string message, object[] args);

Namespace NUnit.Framework.Internal

Type Changed: NUnit.Framework.Internal.NUnitLiteTestAssemblyRunner

Removed constructor:

	public NUnitLiteTestAssemblyRunner (NUnit.Framework.Api.ITestAssemblyBuilder builder);

Added constructor:

	public NUnitLiteTestAssemblyRunner (NUnit.Framework.Api.ITestAssemblyBuilder builder, FinallyDelegate finallyDelegate);

Type Changed: NUnit.Framework.Internal.Test

Removed method:

	public virtual WorkItems.WorkItem CreateWorkItem (NUnit.Framework.Api.ITestFilter childFilter);

Added method:

	public virtual WorkItems.WorkItem CreateWorkItem (NUnit.Framework.Api.ITestFilter childFilter, FinallyDelegate finD);

Type Changed: NUnit.Framework.Internal.TestMethod

Removed method:

	public override WorkItems.WorkItem CreateWorkItem (NUnit.Framework.Api.ITestFilter childFilter);

Added method:

	public override WorkItems.WorkItem CreateWorkItem (NUnit.Framework.Api.ITestFilter childFilter, FinallyDelegate fd);

Type Changed: NUnit.Framework.Internal.TestResult

Added field:

	public bool ThreadCrashFail;

Type Changed: NUnit.Framework.Internal.TestSuite

Removed method:

	public override WorkItems.WorkItem CreateWorkItem (NUnit.Framework.Api.ITestFilter childFilter);

Added method:

	public override WorkItems.WorkItem CreateWorkItem (NUnit.Framework.Api.ITestFilter childFilter, FinallyDelegate finD);

New Type NUnit.Framework.Internal.FinallyDelegate

public class FinallyDelegate {
	// constructors
	public FinallyDelegate ();
	// methods
	public void Complete ();
	public void HandleUnhandledExc (System.Exception ex);
	public void Set (TestExecutionContext context, long startTicks, TestResult result);
}

Namespace NUnit.Framework.Internal.WorkItems

Type Changed: NUnit.Framework.Internal.WorkItems.CompositeWorkItem

Removed constructor:

	public CompositeWorkItem (NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Api.ITestFilter childFilter);

Added constructor:

	public CompositeWorkItem (NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Api.ITestFilter childFilter, NUnit.Framework.Internal.FinallyDelegate fd);

Type Changed: NUnit.Framework.Internal.WorkItems.SimpleWorkItem

Removed constructors:

	public SimpleWorkItem (NUnit.Framework.Internal.Commands.TestCommand command);
	public SimpleWorkItem (NUnit.Framework.Internal.TestMethod test);

Added constructors:

	public SimpleWorkItem (NUnit.Framework.Internal.Commands.TestCommand command, NUnit.Framework.Internal.FinallyDelegate fd);
	public SimpleWorkItem (NUnit.Framework.Internal.TestMethod test, NUnit.Framework.Internal.FinallyDelegate fd);

Type Changed: NUnit.Framework.Internal.WorkItems.WorkItem

Removed constructor:

	public WorkItem (NUnit.Framework.Internal.Test test);

Added constructor:

	public WorkItem (NUnit.Framework.Internal.Test test, NUnit.Framework.Internal.FinallyDelegate finallyDelegate);

Added field:

	protected NUnit.Framework.Internal.FinallyDelegate finD;

Namespace NUnitLite.Runner

Type Changed: NUnitLite.Runner.TextUI

Added method:

	public void TopLevelHandler (object sender, System.UnhandledExceptionEventArgs 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>

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

Added properties:

	public bool CheckCertificateRevocationList { get; set; }
	public System.Security.Cryptography.X509Certificates.X509CertificateCollection ClientCertificates { get; }
	public System.Net.ICredentials DefaultProxyCredentials { get; set; }
	public int MaxConnectionsPerServer { get; set; }
	public int MaxResponseHeadersLength { get; set; }
	public System.Collections.Generic.IDictionary<System.String,System.Object> Properties { get; }
	public System.Func<HttpRequestMessage,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors,System.Boolean> ServerCertificateCustomValidationCallback { get; set; }
	public System.Security.Authentication.SslProtocols SslProtocols { get; set; }