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

Latest commit

 

History

History
2034 lines (1744 loc) · 105 KB

File metadata and controls

2034 lines (1744 loc) · 105 KB
id title
65342EFB-78BF-4224-B55F-D86C6F28DCFA
tvOS 10.10.0 to 10.14.0

API diff

mscorlib.dll

System.dll

System.Core.dll

System.Data.dll

System.ServiceModel.dll

System.ServiceModel.Web.dll

System.Web.Services.dll

System.Transactions.dll

Xamarin.TVOS.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 methods:

	public void Close ();
	public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck);
	public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck, RegistryOptions registryOptions);
	public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistrySecurity registrySecurity);
	public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck, RegistryOptions registryOptions, System.Security.AccessControl.RegistrySecurity registrySecurity);
	public System.Security.AccessControl.RegistrySecurity GetAccessControl ();
	public System.Security.AccessControl.RegistrySecurity GetAccessControl (System.Security.AccessControl.AccessControlSections includeSections);
	public static RegistryKey OpenRemoteBaseKey (RegistryHive hKey, string machineName);
	public static RegistryKey OpenRemoteBaseKey (RegistryHive hKey, string machineName, RegistryView view);
	public RegistryKey OpenSubKey (string name, RegistryKeyPermissionCheck permissionCheck);
	public RegistryKey OpenSubKey (string name, RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistryRights rights);
	public void SetAccessControl (System.Security.AccessControl.RegistrySecurity registrySecurity);

New Type Microsoft.Win32.RegistryKeyPermissionCheck

[Serializable]
public enum RegistryKeyPermissionCheck {
	Default = 0,
	ReadSubTree = 1,
	ReadWriteSubTree = 2,
}

Namespace System

Type Changed: System.Array

Modified properties:

public virtual final bool IsReadOnly { get; }

Added methods:

	public static void Fill<T> (T[] array, T value);
	public static void Fill<T> (T[] array, T value, int startIndex, int count);
	public static void Reverse<T> (T[] array);
	public static void Reverse<T> (T[] array, int index, int length);

Type Changed: System.Type

Added property:

	public virtual bool IsSZArray { get; }

Namespace System.Collections.Concurrent

Type Changed: System.Collections.Concurrent.ConcurrentDictionary`2

Added methods:

	public TValue AddOrUpdate<TArg> (TKey key, System.Func<TKey,TArg,TValue> addValueFactory, System.Func<TKey,TValue,TArg,TValue> updateValueFactory, TArg factoryArgument);
	public TValue GetOrAdd<TArg> (TKey key, System.Func<TKey,TArg,TValue> valueFactory, TArg factoryArgument);

Type Changed: System.Collections.Concurrent.ConcurrentQueue`1

Added method:

	public void Clear ();

Namespace System.Collections.Generic

Type Changed: System.Collections.Generic.Dictionary`2

Added constructors:

	public Dictionary`2 (System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>> collection);
	public Dictionary`2 (System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>> collection, System.Collections.Generic.IEqualityComparer<TKey> comparer);

Added methods:

	public TValue GetValueOrDefault (TKey key);
	public TValue GetValueOrDefault (TKey key, TValue defaultValue);
	public bool TryAdd (TKey key, TValue value);

Namespace System.Reflection

Type Changed: System.Reflection.TypeDelegator

Added property:

	public override bool IsSZArray { get; }

Namespace System.Reflection.Emit

New Type System.Reflection.Emit.PEFileKinds

[Serializable]
public enum PEFileKinds {
	ConsoleApplication = 2,
	Dll = 1,
	WindowApplication = 3,
}

Namespace System.Runtime.CompilerServices

Type Changed: System.Runtime.CompilerServices.RuntimeHelpers

Added method:

	public static bool IsReferenceOrContainsReferences<T> ();

Namespace System.Security.Cryptography.X509Certificates

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

Added value:

	EphemeralKeySet = 32,

Namespace System.Security.Principal

Type Changed: System.Security.Principal.WellKnownSidType

Added values:

	WinAccountReadonlyControllersSid = 75,
	WinApplicationPackageAuthoritySid = 83,
	WinBuiltinAnyPackageSid = 84,
	WinBuiltinCertSvcDComAccessGroup = 78,
	WinBuiltinCryptoOperatorsSid = 64,
	WinBuiltinDCOMUsersSid = 61,
	WinBuiltinEventLogReadersGroup = 76,
	WinBuiltinIUsersSid = 62,
	WinCacheablePrincipalsGroupSid = 72,
	WinCapabilityDocumentsLibrarySid = 91,
	WinCapabilityEnterpriseAuthenticationSid = 93,
	WinCapabilityInternetClientServerSid = 86,
	WinCapabilityInternetClientSid = 85,
	WinCapabilityMusicLibrarySid = 90,
	WinCapabilityPicturesLibrarySid = 88,
	WinCapabilityPrivateNetworkClientServerSid = 87,
	WinCapabilityRemovableStorageSid = 94,
	WinCapabilitySharedUserCertificatesSid = 92,
	WinCapabilityVideosLibrarySid = 89,
	WinConsoleLogonSid = 81,
	WinCreatorOwnerRightsSid = 71,
	WinEnterpriseReadonlyControllersSid = 74,
	WinHighLabelSid = 68,
	WinIUserSid = 63,
	WinLocalLogonSid = 80,
	WinLowLabelSid = 66,
	WinMediumLabelSid = 67,
	WinMediumPlusLabelSid = 79,
	WinNewEnterpriseReadonlyControllersSid = 77,
	WinNonCacheablePrincipalsGroupSid = 73,
	WinSystemLabelSid = 69,
	WinThisOrganizationCertificateSid = 82,
	WinUntrustedLabelSid = 65,
	WinWriteRestrictedCodeSid = 70,

Namespace System.Threading

New Type System.Threading.PreAllocatedOverlapped

public sealed class PreAllocatedOverlapped : System.IDisposable {
	// constructors
	public PreAllocatedOverlapped (IOCompletionCallback callback, object state, object pinData);
	// methods
	public virtual void Dispose ();
}

New Type System.Threading.ThreadPoolBoundHandle

public sealed class ThreadPoolBoundHandle : System.IDisposable {
	// properties
	public System.Runtime.InteropServices.SafeHandle Handle { get; }
	// methods
	public NativeOverlapped* AllocateNativeOverlapped (PreAllocatedOverlapped preAllocated);
	public NativeOverlapped* AllocateNativeOverlapped (IOCompletionCallback callback, object state, object pinData);
	public static ThreadPoolBoundHandle BindHandle (System.Runtime.InteropServices.SafeHandle handle);
	public virtual void Dispose ();
	public void FreeNativeOverlapped (NativeOverlapped* overlapped);
	public static object GetNativeOverlappedState (NativeOverlapped* overlapped);
}

Removed Namespace System.Runtime.Loader

Removed Type System.Runtime.Loader.AssemblyLoadContext


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

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

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

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

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

</script>

System.dll

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

Namespace System.Collections.Concurrent

Type Changed: System.Collections.Concurrent.ConcurrentBag`1

Added method:

	public void Clear ();

Namespace System.Collections.Generic

Type Changed: System.Collections.Generic.Queue`1

Added methods:

	public bool TryDequeue (T result);
	public bool TryPeek (T result);

Type Changed: System.Collections.Generic.SortedSet`1

Added method:

	public bool TryGetValue (T equalValue, T actualValue);

Type Changed: System.Collections.Generic.Stack`1

Added methods:

	public bool TryPeek (T result);
	public bool TryPop (T result);

Namespace System.Diagnostics

Type Changed: System.Diagnostics.Process

Modified methods:

public Process Start (string fileName, string username userName, System.Security.SecureString password, string domain)
public Process Start (string fileName, string arguments, string username userName, System.Security.SecureString password, string domain)

Namespace System.IO.Compression

Type Changed: System.IO.Compression.DeflateStream

Modified methods:

public override System.IAsyncResult BeginRead (byte[] buffer array, int offset, int count, System.AsyncCallback cback asyncCallback, object state asyncState)
public override System.IAsyncResult BeginWrite (byte[] buffer array, int offset, int count, System.AsyncCallback cback asyncCallback, object state asyncState)
public override int EndRead (System.IAsyncResult async_result asyncResult)
public override void EndWrite (System.IAsyncResult async_result asyncResult)

Namespace System.Net

Type Changed: System.Net.HttpWebRequest

Modified methods:

public System.IO.Stream EndGetRequestStream (System.IAsyncResult asyncResult, out TransportContext transportContext context)

Namespace System.Net.Mail

Type Changed: System.Net.Mail.AlternateView

Modified methods:

public AlternateView CreateAlternateViewFromString (string content, System.Text.Encoding encoding contentEncoding, string mediaType)

Type Changed: System.Net.Mail.MailAddress

Modified methods:

public override bool Equals (object obj value)

Type Changed: System.Net.Mail.SmtpClient

Modified methods:

public void Send (string from, string to recipients, string subject, string body)
public void SendAsync (string from, string to recipients, string subject, string body, object userToken)

Type Changed: System.Net.Mail.SmtpException

Modified constructors:

protected SmtpException (System.Runtime.Serialization.SerializationInfo info serializationInfo, System.Runtime.Serialization.StreamingContext context streamingContext)

Modified methods:

public override void GetObjectData (System.Runtime.Serialization.SerializationInfo info serializationInfo, System.Runtime.Serialization.StreamingContext context streamingContext)

Type Changed: System.Net.Mail.SmtpFailedRecipientException

Modified constructors:

protected SmtpFailedRecipientException (System.Runtime.Serialization.SerializationInfo serializationInfo info, System.Runtime.Serialization.StreamingContext streamingContext context)

Type Changed: System.Net.Mail.SmtpFailedRecipientsException

Modified methods:

public override void GetObjectData (System.Runtime.Serialization.SerializationInfo info serializationInfo, System.Runtime.Serialization.StreamingContext context streamingContext)

Namespace System.Net.Sockets

Type Changed: System.Net.Sockets.Socket

Modified methods:

public System.IAsyncResult BeginConnect (System.Net.EndPoint end_point remoteEP, System.AsyncCallback callback, object state)
public System.IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, System.AsyncCallback callback requestCallback, object state)
public System.IAsyncResult BeginConnect (string host, int port, System.AsyncCallback callback requestCallback, object state)
public System.IAsyncResult BeginReceiveFrom (byte[] buffer, int offset, int size, SocketFlags socket_flags socketFlags, ref System.Net.EndPoint remote_end remoteEP, System.AsyncCallback callback, object state)
public System.IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, SocketFlags socket_flags socketFlags, System.Net.EndPoint remote_end remoteEP, System.AsyncCallback callback, object state)
public Socket EndAccept (System.IAsyncResult result asyncResult)
public void EndConnect (System.IAsyncResult result asyncResult)
public int EndReceiveFrom (System.IAsyncResult result asyncResult, ref System.Net.EndPoint end_point endPoint)
public int EndSendTo (System.IAsyncResult result asyncResult)

Namespace System.Net.WebSockets

Type Changed: System.Net.WebSockets.ClientWebSocketOptions

Removed constructor:

	public ClientWebSocketOptions ();

Type Changed: System.Net.WebSockets.HttpListenerWebSocketContext

Removed constructor:

	public HttpListenerWebSocketContext ();

Type Changed: System.Net.WebSockets.WebSocketException

Added property:

	public override int ErrorCode { get; }

Added method:

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

<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.Collections.Generic

Type Changed: System.Collections.Generic.HashSet`1

Added constructors:

	public HashSet`1 (int capacity);
	public HashSet`1 (int capacity, System.Collections.Generic.IEqualityComparer<T> comparer);

Added method:

	public bool TryGetValue (T equalValue, T actualValue);

Namespace System.Linq

Type Changed: System.Linq.Queryable

Added methods:

	public static System.Linq.IQueryable<TSource> Append<TSource> (System.Linq.IQueryable<TSource> source, TSource element);
	public static System.Linq.IQueryable<TSource> Prepend<TSource> (System.Linq.IQueryable<TSource> source, TSource element);

Namespace System.Runtime.CompilerServices

Type Changed: System.Runtime.CompilerServices.RuntimeOps

Removed methods:

	[Obsolete ("do not use this method")]
	public static IRuntimeVariables MergeRuntimeVariables (IRuntimeVariables first, IRuntimeVariables second, int[] indexes);

	[Obsolete ("do not use this method")]
	public static System.Linq.Expressions.Expression Quote (System.Linq.Expressions.Expression expression, object hoistedLocals, object[] locals);

Namespace System.Security.Cryptography.X509Certificates

New Type System.Security.Cryptography.X509Certificates.TrustStatus

[Serializable]
public enum TrustStatus {
	KnownIdentity = 2,
	Trusted = 3,
	UnknownIdentity = 1,
	Untrusted = 0,
}

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

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

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

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

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

</script>

System.Data.dll

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

Namespace System.Data.Common

New Type System.Data.Common.DbDataReaderExtensions

public static class DbDataReaderExtensions {
	// methods
	public static bool CanGetColumnSchema (DbDataReader reader);
	public static System.Collections.ObjectModel.ReadOnlyCollection<DbColumn> GetColumnSchema (DbDataReader reader);
}

Namespace System.Data.SqlClient

Type Changed: System.Data.SqlClient.SqlBulkCopy

Added methods:

	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.DataRow[] rows);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.DataTable table);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.IDataReader reader);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.DataRow[] rows, System.Threading.CancellationToken cancellationToken);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.DataTable table, System.Data.DataRowState rowState);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.DataTable table, System.Threading.CancellationToken cancellationToken);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.IDataReader reader, System.Threading.CancellationToken cancellationToken);
	public System.Threading.Tasks.Task WriteToServerAsync (System.Data.DataTable table, System.Data.DataRowState rowState, System.Threading.CancellationToken cancellationToken);

Type Changed: System.Data.SqlClient.SqlConnection

Modified constructors:

public SqlConnection (string connectionString, SqlCredential cred credential)

Type Changed: System.Data.SqlClient.SqlCredential

Modified constructors:

public SqlCredential (string user userId, System.Security.SecureString password)

<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.Collections.Generic

Type Changed: System.Collections.Generic.KeyedByTypeCollection`1

Modified methods:

protected override void InsertItem (int index, TItem kind item)
protected override void SetItem (int index, TItem kind item)

Type Changed: System.Collections.Generic.SynchronizedKeyedCollection`2

Modified constructors:

protected SynchronizedKeyedCollection`2 (object syncRoot, System.Collections.Generic.IEqualityComparer<K> comparer, int capacity dictionaryCreationThreshold)

Type Changed: System.Collections.Generic.SynchronizedReadOnlyCollection`1

Modified constructors:

public SynchronizedReadOnlyCollection`1 (object sync_root syncRoot)
public SynchronizedReadOnlyCollection`1 (object sync_root syncRoot, System.Collections.Generic.IEnumerable<T> list)
public SynchronizedReadOnlyCollection`1 (object sync_root syncRoot, T[] list)

Namespace System.ServiceModel

Type Changed: System.ServiceModel.ChannelFactory

Modified methods:

protected void InitializeEndpoint (string configurationName, EndpointAddress remoteAddress address)

Type Changed: System.ServiceModel.ChannelFactory`1

Modified methods:

public TChannel CreateChannel (Channels.Binding binding, EndpointAddress address endpointAddress)
public TChannel CreateChannel (Channels.Binding binding, EndpointAddress address endpointAddress, System.Uri via)

Type Changed: System.ServiceModel.ClientBase`1

Modified constructors:

protected ClientBase`1 (InstanceContext instance callbackInstance)
protected ClientBase`1 (InstanceContext instance callbackInstance, Description.ServiceEndpoint endpoint)
protected ClientBase`1 (InstanceContext instance callbackInstance, string endpointConfigurationName)
protected ClientBase`1 (InstanceContext instance callbackInstance, Channels.Binding binding, EndpointAddress remoteAddress)
protected ClientBase`1 (InstanceContext instance callbackInstance, string endpointConfigurationName, EndpointAddress remoteAddress)
protected ClientBase`1 (InstanceContext instance callbackInstance, string endpointConfigurationName, string remoteAddress)

Type Changed: System.ServiceModel.DuplexChannelFactory`1

Modified constructors:

public DuplexChannelFactory`1 (object callbackInstance callbackObject)
public DuplexChannelFactory`1 (object callbackInstance callbackObject, Channels.Binding binding)
public DuplexChannelFactory`1 (object callbackInstance callbackObject, Description.ServiceEndpoint endpoint)
public DuplexChannelFactory`1 (object callbackInstance callbackObject, string endpointConfigurationName)
public DuplexChannelFactory`1 (object callbackInstance callbackObject, Channels.Binding binding, EndpointAddress remoteAddress)
public DuplexChannelFactory`1 (object callbackInstance callbackObject, Channels.Binding binding, string remoteAddress)
public DuplexChannelFactory`1 (object callbackInstance callbackObject, string endpointConfigurationName, EndpointAddress remoteAddress)

Type Changed: System.ServiceModel.DuplexClientBase`1

Modified constructors:

protected DuplexClientBase`1 (object callbackInstance, string bindingConfigurationName endpointConfigurationName, EndpointAddress remoteAddress)
protected DuplexClientBase`1 (InstanceContext callbackInstance, string endpointConfigurationName, EndpointAddress address remoteAddress)

Type Changed: System.ServiceModel.EndpointAddress

Modified methods:

public void WriteTo (Channels.AddressingVersion addressingVersion, System.Xml.XmlDictionaryWriter writer, System.Xml.XmlDictionaryString localname localName, System.Xml.XmlDictionaryString ns)
public void WriteTo (Channels.AddressingVersion addressingVersion, System.Xml.XmlWriter writer, string localname localName, string ns)

Type Changed: System.ServiceModel.FaultException

Modified constructors:

public FaultException (string msg reason)
public FaultException (string msg reason, FaultCode code)

Type Changed: System.ServiceModel.InstanceContext

Added property:

	public virtual System.ServiceModel.IExtensionCollection<InstanceContext> Extensions { get; }

Type Changed: System.ServiceModel.OptionalReliableSession

Modified constructors:

public OptionalReliableSession (Channels.ReliableSessionBindingElement binding reliableSessionBindingElement)

Type Changed: System.ServiceModel.ReliableSession

Modified constructors:

public ReliableSession (Channels.ReliableSessionBindingElement binding reliableSessionBindingElement)

Type Changed: System.ServiceModel.UriSchemeKeyedCollection

Modified constructors:

public UriSchemeKeyedCollection (System.Uri[] uris addresses)

Namespace System.ServiceModel.Channels

Type Changed: System.ServiceModel.Channels.CustomBinding

Modified constructors:

public CustomBinding (string name configurationName)

Type Changed: System.ServiceModel.Channels.Message

Modified methods:

public Message CreateMessage (MessageVersion version, System.ServiceModel.FaultCode code faultCode, string reason, string action)
public Message CreateMessage (MessageVersion version, System.ServiceModel.FaultCode code faultCode, string reason, object detail, string action)

Type Changed: System.ServiceModel.Channels.MessageFault

Modified methods:

public MessageFault CreateFault (System.ServiceModel.FaultCode code, System.ServiceModel.FaultReason reason, object detail, System.Runtime.Serialization.XmlObjectSerializer formatter serializer)
public MessageFault CreateFault (System.ServiceModel.FaultCode code, System.ServiceModel.FaultReason reason, object detail, System.Runtime.Serialization.XmlObjectSerializer formatter serializer, string actor)
public MessageFault CreateFault (System.ServiceModel.FaultCode code, System.ServiceModel.FaultReason reason, object detail, System.Runtime.Serialization.XmlObjectSerializer formatter serializer, string actor, string node)

Type Changed: System.ServiceModel.Channels.MessageHeaders

Modified constructors:

public MessageHeaders (MessageHeaders headers collection)
public MessageHeaders (MessageVersion version, int capacity initialSize)

Type Changed: System.ServiceModel.Channels.UnderstoodHeaders

Modified methods:

public void Add (MessageHeaderInfo header headerInfo)
public bool Contains (MessageHeaderInfo header headerInfo)
public void Remove (MessageHeaderInfo header headerInfo)

Namespace System.ServiceModel.Description

Type Changed: System.ServiceModel.Description.FaultDescriptionCollection

Modified methods:

public FaultDescription Find (string name action)
public System.Collections.ObjectModel.Collection<FaultDescription> FindAll (string name action)

Type Changed: System.ServiceModel.Description.XmlSerializerOperationBehavior

Modified constructors:

public XmlSerializerOperationBehavior (OperationDescription operation, System.ServiceModel.XmlSerializerFormatAttribute format attribute)

Namespace System.ServiceModel.Dispatcher

Type Changed: System.ServiceModel.Dispatcher.IDispatchMessageFormatter

Modified methods:

public abstract System.ServiceModel.Channels.Message SerializeReply (System.ServiceModel.Channels.MessageVersion version messageVersion, object[] parameters, object result)

Namespace System.ServiceModel.Security

Type Changed: System.ServiceModel.Security.MessagePartSpecification

Modified methods:

public void Union (MessagePartSpecification other specification)

New Type System.ServiceModel.Security.SecurityNegotiationException

[Serializable]
public class SecurityNegotiationException : System.ServiceModel.CommunicationException, System.Runtime.Serialization.ISerializable {
	// constructors
	public SecurityNegotiationException ();
	public SecurityNegotiationException (string message);
	protected SecurityNegotiationException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
	public SecurityNegotiationException (string message, System.Exception innerException);
}

Namespace System.ServiceModel.Security.Tokens

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

Modified constructors:

protected SecureConversationSecurityTokenParameters (SecureConversationSecurityTokenParameters source other)

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

Modified constructors:

protected UserNameSecurityTokenParameters (UserNameSecurityTokenParameters source other)

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

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

Namespace System

Type Changed: System.UriTemplateMatchException

Modified constructors:

public UriTemplateMatchException (string msg message)
public UriTemplateMatchException (string msg message, Exception inner innerException)

Namespace System.ServiceModel

Type Changed: System.ServiceModel.WebHttpBinding

Modified constructors:

public WebHttpBinding (WebHttpSecurityMode mode securityMode)

Namespace System.ServiceModel.Web

Type Changed: System.ServiceModel.Web.WebChannelFactory`1

Modified constructors:

public WebChannelFactory`1 (string configurationName endpointConfigurationName)
public WebChannelFactory`1 (System.Type serviceType channelType)

Type Changed: System.ServiceModel.Web.WebOperationContext

Modified constructors:

public WebOperationContext (System.ServiceModel.OperationContext operation operationContext)

Modified methods:

public void Attach (System.ServiceModel.OperationContext context owner)
public void Detach (System.ServiceModel.OperationContext context owner)

<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.Web.Services.dll

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

Namespace System.Web

Type Changed: System.Web.HttpUtility

Modified methods:

public string UrlDecode (string s str, System.Text.Encoding e)
public string UrlEncode (string s str, System.Text.Encoding Enc e)
public string UrlPathEncode (string s str)

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

Modified methods:

public System.IAsyncResult BeginCommit (System.AsyncCallback callback asyncCallback, object user_defined_state asyncState)
public void EndCommit (System.IAsyncResult ar asyncResult)

Type Changed: System.Transactions.IDtcTransaction

Modified methods:

public abstract void Abort (IntPtr manager reason, int whatever retaining, int whatever2 async)
public abstract void Commit (int whatever retaining, int whatever2 commitType, int whatever3 reserved)
public abstract void GetTransactionInfo (IntPtr whatever transactionInformation)

Type Changed: System.Transactions.IPromotableSinglePhaseNotification

Modified methods:

public abstract void Rollback (SinglePhaseEnlistment enlistment singlePhaseEnlistment)
public abstract void SinglePhaseCommit (SinglePhaseEnlistment enlistment singlePhaseEnlistment)

Type Changed: System.Transactions.ISinglePhaseNotification

Modified methods:

public abstract void SinglePhaseCommit (SinglePhaseEnlistment enlistment singlePhaseEnlistment)

Type Changed: System.Transactions.PreparingEnlistment

Modified methods:

public void ForceRollback (System.Exception ex e)

Type Changed: System.Transactions.SubordinateTransaction

Modified constructors:

public SubordinateTransaction (IsolationLevel level isoLevel, ISimpleTransactionSuperior superior)

Type Changed: System.Transactions.Transaction

Modified methods:

public DependentTransaction DependentClone (DependentCloneOption option cloneOption)
public Enlistment EnlistDurable (System.Guid manager resourceManagerIdentifier, IEnlistmentNotification notification enlistmentNotification, EnlistmentOptions options enlistmentOptions)
public Enlistment EnlistDurable (System.Guid manager resourceManagerIdentifier, ISinglePhaseNotification notification singlePhaseNotification, EnlistmentOptions options enlistmentOptions)
public bool EnlistPromotableSinglePhase (IPromotableSinglePhaseNotification notification promotableSinglePhaseNotification)
public Enlistment EnlistVolatile (IEnlistmentNotification notification enlistmentNotification, EnlistmentOptions options enlistmentOptions)
public Enlistment EnlistVolatile (ISinglePhaseNotification notification singlePhaseNotification, EnlistmentOptions options enlistmentOptions)
public void Rollback (System.Exception ex e)

Type Changed: System.Transactions.TransactionInterop

Modified methods:

public byte[] GetExportCookie (Transaction transaction, byte[] exportCookie whereabouts)
public Transaction GetTransactionFromDtcTransaction (IDtcTransaction dtc transactionNative)
public Transaction GetTransactionFromExportCookie (byte[] exportCookie cookie)
public Transaction GetTransactionFromTransmitterPropagationToken (byte[] token propagationToken)

Type Changed: System.Transactions.TransactionManager

Modified methods:

public void RecoveryComplete (System.Guid manager resourceManagerIdentifier)
public Enlistment Reenlist (System.Guid manager resourceManagerIdentifier, byte[] recoveryInfo recoveryInformation, IEnlistmentNotification notification enlistmentNotification)

Type Changed: System.Transactions.TransactionOptions

Modified methods:

public bool op_Equality (TransactionOptions o1 x, TransactionOptions o2 y)
public bool op_Inequality (TransactionOptions o1 x, TransactionOptions o2 y)

Type Changed: System.Transactions.TransactionScope

Modified constructors:

public TransactionScope (Transaction transaction transactionToUse)
public TransactionScope (TransactionScopeAsyncFlowOption asyncFlow asyncFlowOption)
public TransactionScope (TransactionScopeOption option scopeOption)
public TransactionScope (Transaction transaction transactionToUse, System.TimeSpan timeout scopeTimeout)
public TransactionScope (TransactionScopeOption option scopeOption, System.TimeSpan timeout scopeTimeout)
public TransactionScope (TransactionScopeOption scopeOption, TransactionOptions options transactionOptions)
public TransactionScope (Transaction transaction transactionToUse, System.TimeSpan timeout scopeTimeout, EnterpriseServicesInteropOption opt interopOption)
public TransactionScope (TransactionScopeOption option scopeOption, System.TimeSpan timeout scopeTimeout, TransactionScopeAsyncFlowOption asyncFlow)
public TransactionScope (TransactionScopeOption scopeOption, TransactionOptions options transactionOptions, EnterpriseServicesInteropOption opt interopOption)

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

Type Changed: Foundation.NSActivityOptions

Modified fields:

IdleDisplaySleepDisabled = 256 1099511627776

Type Changed: Foundation.ProtocolAttribute

Added property:

	public string FormalSince { get; set; }

New Type Foundation.NotImplementedAttribute

public class NotImplementedAttribute : System.Attribute {
	// constructors
	public NotImplementedAttribute ();
	public NotImplementedAttribute (string message);
	// properties
	public string Message { get; set; }
}

Namespace MediaPlayer

Type Changed: MediaPlayer.MPNowPlayingInfoCenter

Added property:

	public MPNowPlayingInfo NowPlaying { get; set; }

New Type MediaPlayer.MPMediaItem

public static class MPMediaItem {
	// properties
	public static Foundation.NSString AlbumArtistPersistentIDProperty { get; }
	public static Foundation.NSString AlbumArtistProperty { get; }
	public static Foundation.NSString AlbumPersistentIDProperty { get; }
	public static Foundation.NSString AlbumTitleProperty { get; }
	public static Foundation.NSString AlbumTrackCountProperty { get; }
	public static Foundation.NSString AlbumTrackNumberProperty { get; }
	public static Foundation.NSString ArtistPersistentIDProperty { get; }
	public static Foundation.NSString ArtistProperty { get; }
	public static Foundation.NSString ArtworkProperty { get; }
	public static Foundation.NSString AssetURLProperty { get; }
	public static Foundation.NSString BeatsPerMinuteProperty { get; }
	public static Foundation.NSString BookmarkTimeProperty { get; }
	public static Foundation.NSString CommentsProperty { get; }
	public static Foundation.NSString ComposerPersistentIDProperty { get; }
	public static Foundation.NSString ComposerProperty { get; }
	public static Foundation.NSString DateAddedProperty { get; }
	public static Foundation.NSString DiscCountProperty { get; }
	public static Foundation.NSString DiscNumberProperty { get; }
	public static Foundation.NSString GenrePersistentIDProperty { get; }
	public static Foundation.NSString GenreProperty { get; }
	public static Foundation.NSString HasProtectedAssetProperty { get; }
	public static Foundation.NSString IsCloudItemProperty { get; }
	public static Foundation.NSString IsCompilationProperty { get; }
	public static Foundation.NSString IsExplicitProperty { get; }
	public static Foundation.NSString LastPlayedDateProperty { get; }
	public static Foundation.NSString LyricsProperty { get; }
	public static Foundation.NSString MediaTypeProperty { get; }
	public static Foundation.NSString PersistentIDProperty { get; }
	public static Foundation.NSString PlayCountProperty { get; }
	public static Foundation.NSString PlaybackDurationProperty { get; }
	public static Foundation.NSString PlaybackStoreIDProperty { get; }
	public static Foundation.NSString PodcastPersistentIDProperty { get; }
	public static Foundation.NSString PodcastTitleProperty { get; }
	public static Foundation.NSString RatingProperty { get; }
	public static Foundation.NSString ReleaseDateProperty { get; }
	public static Foundation.NSString SkipCountProperty { get; }
	public static Foundation.NSString TitleProperty { get; }
	public static Foundation.NSString UserGroupingProperty { get; }
}

New Type MediaPlayer.MPMediaType

[Serializable]
[Flags]
public enum MPMediaType {
	Any = 18446744073709551615,
	AnyAudio = 255,
	AudioBook = 4,
	AudioITunesU = 8,
	HomeVideo = 8192,
	Movie = 256,
	Music = 1,
	MusicVideo = 2048,
	Podcast = 2,
	TVShow = 512,
	TypeAnyVideo = 65280,
	VideoITunesU = 4096,
	VideoPodcast = 1024,
}

New Type MediaPlayer.MPNowPlayingInfo

public class MPNowPlayingInfo {
	// constructors
	public MPNowPlayingInfo ();
	// fields
	public string AlbumTitle;
	public int? AlbumTrackCount;
	public int? AlbumTrackNumber;
	public string Artist;
	public MPMediaItemArtwork Artwork;
	public int? ChapterCount;
	public int? ChapterNumber;
	public string Composer;
	public double? DefaultPlaybackRate;
	public int? DiscCount;
	public int? DiscNumber;
	public double? ElapsedPlaybackTime;
	public string Genre;
	public ulong? PersistentID;
	public double? PlaybackDuration;
	public int? PlaybackQueueCount;
	public int? PlaybackQueueIndex;
	public double? PlaybackRate;
	public string Title;
	// properties
	public Foundation.NSUrl AssetUrl { get; set; }
	public MPNowPlayingInfoLanguageOptionGroup[] AvailableLanguageOptions { get; set; }
	public string CollectionIdentifier { get; set; }
	public MPNowPlayingInfoLanguageOption[] CurrentLanguageOptions { get; set; }
	public string ExternalContentIdentifier { get; set; }
	public string ExternalUserProfileIdentifier { get; set; }
	public bool? IsLiveStream { get; set; }
	public MPNowPlayingInfoMediaType? MediaType { get; set; }
	public float? PlaybackProgress { get; set; }
}

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

public const string Version = "10.10.0" "10.14.0";