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.8
- .NET Framework 4.7.2
- .NET Framework 4.7.1
- .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 COM successfully marshals ByRef SafeArray parameters on events
- .NET Interop will now QueryInterface for IAgileObject (a WinRT interface)
- Accessibility improvements in Windows Forms controls for .NET 4.8
- Accessibility improvements in Windows Workflow Foundation (WF) workflow designer
- Accessibility improvements in WPF
- Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection
- ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control
- ASP.NET Incorrect multipart handling may result in lost form data.
- ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute
- CLR critical section spin-wait removal
- Data Binding improvement for KeyedCollection
- ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves
- Fixed problem of unresponsiveness when ListBox contains duplicate value-types
- High DPI (HDPI) improvements in Windows Forms controls for .NET 4.8
- HwndHost now correctly resizes child-HWND during DPI changes
- Improvements to Grid star-rows space allocating algorithm
- Keyboard navigation improvement in ListBox with Hyperlinks
- Managed cryptography classes do not throw a CryptographyException in FIPS mode
- Performance improvement in Automation tree for grouping ItemsControls
- svcTraceViewer ComboBox high contrast change
- System.Threading.Monitor lock acquision scalability improvement
- System.Threading.Timer lock contention improvement
- Workflow XAML checksums for symbols changed from SHA1 to SHA256
- Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256
- Workflow XOML file checksums changed from MD5 to SHA256
- "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2
- Accessibility improvements in Windows Forms controls for .NET 4.7.2
- Allow Unicode Bidirectional Control Characters in URIs
- Allow Unicode in URIs that resemble UNC shares
- Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate
- ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems
- DeflateStream uses native APIs for decompression
- Ensure System.Uri uses a consistent reserved character set
- Improved WCF chain trust certificate validation for Net.Tcp certificate authentication
- Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting
- Keytips behavior improved in WPF
- PrivateFontCollection.AddFontFile method releases Font resources
- Resgen refuses to load content from the web
- Stack traces obtained when using portable PDBs now include source file and line information if requested
- Support special relative URI notation when Unicode is present
- The default hash algorithm for WPF's Markup Compiler is now SHA256
- WinForm's Domain upbutton and downbutton actions are in sync now
- WPF AppDomain Shutdown Handling May Now Call Dispatcher.Invoke in Cleanup of Weak Events
- WPF Changing a primary key when displaying ADO data in a Master/Detail scenario
- WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content
- WPF TextBox/PasswordBox Text Selection Does Not Follow System Colors
- Accessibility improvements in Windows Forms controls
- Accessibility improvements in Windows Workflow Foundation (WF) workflow designer
- Accessibility improvements in WPF
- ASP.NET Accessibility Improvements in .NET Framework 4.7.1
- Chained Popups with StaysOpen=False
- Default SignedXML and SignedXMS algorithms changed to SHA256
- Improved accessibility for some .NET SDK tools
- Selector SelectionChanged event and SelectedValue property
- SerialPort background thread exceptions
- ServiceBase doesn't propagate OnStart exceptions
- TabControl SelectionChanged event and SelectedContent property
- The default hash algorithm for WPF PackageDigitalSignatureManager is now SHA256
- WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null
- WCF MsmqSecureHashAlgorithm default value is now SHA256
- WCF PipeConnection.GetHashAlgorithm now uses SHA256
- Crash in Selector when removing an item from a custom INCC collection
- CspParameters.ParentWindowHandle now expects HWND value
- Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default
- Incorrect code generation when passing and comparing UInt16 values
- NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom
- Resizing a Grid can cause an application to become unresponsive
- 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
- AesCryptoServiceProvider 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
- Deadlock may result when using Reentrant services
- Horizontal scrolling and virtualization
- HttpRuntime.AppDomainAppPath Throws a NullReferenceException
- Incorrect implementation of MemberDescriptor.Equals
- Long path support
- OperationContext.Current may return null when called in a using clause
- Path colon checks are stricter
- Remove Ssl3 from the WCF TransportDefaults
- RibbonGroup background is set to transparent in localized builds
- RSACng and DSACng are once again usable in Partial Trust scenarios
- 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
- SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change
- Unicode standard version 8.0 categories now supported
- WCF transport security supports certificates stored using CNG
- Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage
- Calls to System.Windows.Input.PenContext.Disable on touch-enabled systems may throw an ArgumentException
- Change in path separator character in FullName property of ZipArchiveEntry objects
- Contract.Invariant or Contract.Requires<TException> do not consider String.IsNullOrEmpty to be pure
- 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
- AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm
- Attempting a TCP/IP connection to a SQL Server database that resolves to
localhost
fails - 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
- Certificate EKU OID validation
- 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
- ETW event names cannot differ only by a "Start" or "Stop" suffix
- Exception message has changed for failed DataContract serialization in case of an unknown type
- HtmlTextWriter does not render
<br/>
element correctly - Icon.ToBitmap successfully converts icons with PNG frames into Bitmap objects
- IL ret not allowed in a try region
- New 64-bit JIT compiler in the .NET Framework 4.6
- 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
- Product versioning changes in the .NET Framework 4.6 and later versions
- 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
- TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API
- WCF services that use NETTCP with SSL security and MD5 certificate authentication
- 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(Boolean) 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
- 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
- A ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET Framework 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 of 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
- 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
- Data written to PrintSystemJobInfo.JobStream must be in XPS format
- Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail
- Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods
- EncoderParameter ctor is obsolete
- Entity Framework version must match the .NET Framework version
- 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 Framework 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 Framework 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<T>.ForEach can throw exception when modifying list item
- List.Sort algorithm changed
- 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 an application to become unresponsive
- 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
- 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 .NET Framework 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.