README.md
.NET Framework Application Compatibility
The following documents provide information on .NET Framework application compatibility. They describe breaking changes and other changes in behavior in each .NET Framework release.
Please help us improve the .NET Framework Application Compatibility documents. In particular, better titles will improve the index below, both in content and the sort.
- .NET Framework 4.7
- .NET Framework 4.6.2
- .NET Framework 4.6.1
- .NET Framework 4.6
- .NET Framework 4.5.2
- .NET Framework 4.5.1
- .NET Framework 4.5
.NET Framework 4.7
- CspParameters.ParentWindowHandle now expects HWND value
- NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom
- Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8
- SslStream supports TLS Alerts
- Throttle concurrent requests per session
- WCF message security now is able to use TLS1.1 and TLS1.2
- Workflow checksums changed from MD5 to SHA1
- Workflow now throws original exception instead of NullReferenceException in some cases
- Workflow SQL persistence adds primary key clusters and disallows null values in some columns
- WPF Grid allocation of space to star-columns
- WPF Pointer-Based Touch Stack
- WPF Printing Stack Update
.NET Framework 4.6.2
- AesCrytpServiceProvider decryptor provides a reusable transform
- Calls to ClaimsIdentity constructors
- Changes in path normalization
- Changing the IsEnabled property of the parent of a TextBlock control affects any child controls
- Connection pool blocking period for Azure SQL databases is removed
- DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException
- Horizontal scrolling and virtualization
- Incorrect implementation of MemberDescriptor.Equals
- Long path support
- Path colon checks are stricter
- Remove Ssl3 from the WCF TransportDefaults
- RibbonGroup background is set to transparent in localized builds
- RSACng now correctly loads RSA keys of non-standard key size
- RSACng.VerifyHash now returns False for any verification failure
- SignedXml and EncryptedXml Breaking Changes
- Unicode standard version 8.0 categories now supported
- WCF transport security supports certificates stored using CNG
.NET Framework 4.6.1
- Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage
- Item-scrolling a flat list with items of different pixel-height
- ObjectDisposedException thrown by WPF spellchecker
- WCF binding with the TransportWithMessageCredential security mode
- WPF Spell Checking fails in unexpected ways
- X509CertificateClaimSet.FindClaims Considers All claimTypes
.NET Framework 4.6
- AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm
- Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type
- Calling CreateDefaultAuthorizationContext with a null argument has changed
- ClickOnce supports SHA-256 on 4.0-targeted apps
- CoerceIsSelectionBoxHighlighted
- ContentDisposition DateTimes returns slightly different string
- CurrentCulture and CurrentUICulture flow across tasks
- CurrentCulture is not preserved across WPF Dispatcher operations
- Exception message has changed for failed DataContract serialization in case of an unknown type
- HtmlTextWriter does not render
<br/>
element correctly - IL ret not allowed in a try region
- Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream
- Persian calendar now uses the Hijri solar algorithm
- Reflection objects can no longer be passed from managed code to out-of-process DCOM clients
- TargetFrameworkName for default app domain no longer defaults to null if not set
- The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry
- WPF layout rounding of margins has changed
- WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list
- WPF windows are rendered without clipping when extending outside a single monitor
- X509Certificate2.ToString(bool) does not throw now when .NET cannot handle the certificate
- XmlWriter throws on invalid surrogate pairs
- XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty
.NET Framework 4.5.2
- ASP.NET MVC now escapes spaces in strings passed in via route parameters
- DataObject.GetData now retrieves data as UTF-8
- EF no longer throws for QueryViews with specific characteristics
- No longer able to set EnableViewStateMac to false
- Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation
- VB.NET no longer supports partial namespace qualification for System.Windows APIs
- WPF spawns a wisptis.exe process which can freeze the mouse
.NET Framework 4.5.1
- A ConcurrentDictionary serialized in .NET 4.5 with NetDataContractSerializer cannot be deserialized by .NET 4.5.1 or 4.5.2
- ADO.NET now attempts to automatically reconnect broken SQL connections
- Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks
- COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers
- DbParameter.Precision and DbParameter.Scale are now public virtual members
- Deserialization of objects across appdomains can fail
- EventListener truncates strings with embedded nulls
- EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID)
- Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code
- MinFreeMemoryPercentageToActiveService is now respected
- NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version
- ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios
- ResolveAssemblyReference task now warns on dependencies with the wrong architecture
- Two-way data-binding to a property with a non-public setter is not supported
- WinRT stream adapters no long call FlushAsync automatically on close
.NET Framework 4.5
- Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException
- Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003
- Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5
- BinaryFormatter can fail to find type from LoadFrom context
- Binding a WPF selector property (such as 'SelectedItem') to a static property does not work
- BlockingCollection<T>.TryTakeFromAny does not throw anymore
- Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus
- Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element
- Change in behavior for Task.WaitAll methods with time-out arguments
- Change in behavior in Data Definition Language (DDL) APIs
- Compiler support for type forwarding when multi-targeting mscorlib
- ConcurrentQueue<T>.TryPeek can return an erroneous null via its out parameter
- Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods
- EF version must match NetFX version
- EncoderParameter ctor is obsolete
- EntityFramework 6.0 loads very slowly in apps launched from Visual Studio
- Enumerable.Empty<TResult> always returns cached instance
- Error codes for maxRequestLength or maxReceivedMessageSize are different
- ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)
- Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread
- FlowDocument may show an extra line of text
- Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)
- GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET 4.5
- GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view
- HttpRequest.ContentEncoding property prohibits UTF7
- HttpUtility.JavaScriptStringEncode escapes ampersand
- IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete
- ICommand.CanExecuteChanged event behaviour changed in .NET 4.5
- Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates
- IPad should not be used in custom capabilities file because it is now a browser capability
- Items.Clear does not remove duplicates from SelectedItems
- Linq to EF Join throws ArgumentOutOfRangeException
- List.Sort algorithm changed
- List<T>.ForEach can throw exception when modifying list item
- ListBoxItem IsSelected binding issue with ObservableCollection<T>.Move
- Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications
- MachineKey.Encode and MachineKey.Decode methods are now obsolete
- Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked
- MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer
- Missing Target Framework Moniker results in 4.0 behavior
- Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder
- Multiple items in a single TableLayoutPanel cell may be rearranged
- New (ambiguous) Dispatcher.Invoke overloads could result in different behavior
- New enum values in WPF's PageRangeSelection
- Non-pooled SQL connections will leak memory if not explicitly disposed
- Null coalescer values are not visible in debugger until one step later
- ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type
- Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding
- PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box
- Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error
- Right clicking on a WPF DataGrid row header changes the DataGrid selection
- Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause a hang
- Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version
- SoapFormatter cannot deserialize Hashtable and similar ordered collection objects
- Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions
- Some WorkFlow drag and drop APIs are obsolete
- Sql_variant data uses sql_variant collation rather than database collation
- SqlBulkCopy uses destination column encoding for strings
- SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter
- SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present
- System.Activities is now APTCA
- System.Net.PeerToPeer.Collaboration unavailable on Windows 8
- System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint
- System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed
- System.Uri escaping now supports RFC 3986 (http://tools.ietf.org/html/rfc3986)
- System.Uri parsing adheres to RFC 3987
- System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment
- The Replace method in OData URLs is disabled by default
- Type.IsAssignableFrom returns wrong result for generic variables with constraints
- Unexpected InvalidCastException from InvokeMethod activity in WF4
- WebUtility.HtmlDecode no longer decodes invalid input sequences
- WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly
- WF serializes Expressions.Literal<T> DateTimes differently now (breaks custom XAML parsers)
- WinForm's CheckForOverflowUnderflow property is now true for System.Drawing
- WorkFlow 3.0 types are obsolete
- WorkflowDesigner.Load doesn't remove symbol property
- WPF Aero2 and AeroLite themes toggle button doesn't show any state
- WPF DataTemplate elements are now visible to UIA
- WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance
- WPF TextBox defaults to undo limit of 100
- WPF TextBox selected text appears a different color when the text box is inactive
- WPF TextBox.Text can be out-of-sync with databinding
- WPF TreeViewItem must be used within a TreeView
- XML schema validation is stricter
- XmlSchemaException now sets line positions properly
- XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one
- XmlSerializer serializes fields differently in 4.5
- XmlTextReader DTD entity expansion is limited to 10,000,000 characters
- XSLT forward compat now works
- XSLT style sheet exception message changed
This file was generated by Breaking Change Readme Generator.