Full Code of microsoft/dotnet for AI

main fb8d575772ad cached
351 files
1.3 MB
326.6k tokens
3 symbols
1 requests
Download .txt
Showing preview only (1,412K chars total). Download the full file or copy to clipboard to get everything.
Repository: microsoft/dotnet
Branch: main
Commit: fb8d575772ad
Files: 351
Total size: 1.3 MB

Directory structure:
gitextract_htd9ztx4/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       └── config.yml
├── .gitignore
├── Documentation/
│   ├── KnownIssues/
│   │   ├── 776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md
│   │   ├── README.md
│   │   ├── Template/
│   │   │   └── NETFXKnownIssuesTemplate.md
│   │   ├── wpf-binding-issue.md
│   │   └── wpf-pma-window-drag.md
│   ├── README.md
│   ├── compatibility/
│   │   ├── ! Template.md
│   │   ├── !categories.md
│   │   ├── ASPNET-accessibility-improvement.md
│   │   ├── Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md
│   │   ├── GetECDsaPublicKey-correctly-handles-brainpool-curves.md
│   │   ├── README.md
│   │   ├── RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md
│   │   ├── SerialPort-background-thread-exceptions.md
│   │   ├── ServiceBase-doesnt-propagate-OnStart-exceptions.md
│   │   ├── SignedXml.GetPublicKey-returns-RSACng-on-net462.md
│   │   ├── Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md
│   │   ├── WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md
│   │   ├── WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md
│   │   ├── WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md
│   │   ├── WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md
│   │   ├── WCFSDKToolsAccessibilityChangesIn4.7.1.md
│   │   ├── a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md
│   │   ├── accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md
│   │   ├── ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md
│   │   ├── aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md
│   │   ├── appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md
│   │   ├── application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md
│   │   ├── apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md
│   │   ├── asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md
│   │   ├── asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md
│   │   ├── aspnet-472-compat-doc.md
│   │   ├── aspnet-asp.net-validationcontext.membername-is-null-sometimes.md
│   │   ├── aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md
│   │   ├── aspnet-invalid-results-from-httprequest.getattributefromheader.md
│   │   ├── assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md
│   │   ├── binaryformatter-can-fail-to-find-type-from-loadfrom-context.md
│   │   ├── binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md
│   │   ├── blockingcollection_trytakefromany-does-not-throw-anymore.md
│   │   ├── building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md
│   │   ├── calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md
│   │   ├── calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md
│   │   ├── calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md
│   │   ├── calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md
│   │   ├── calls-to-claimsidentity-constructors.md
│   │   ├── certificate-eku-oid-validation.md
│   │   ├── change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md
│   │   ├── change-in-behavior-in-data-definition-language-(ddl)-apis.md
│   │   ├── change-in-path-separator-character-in-zip-files.md
│   │   ├── changes-in-path-normalization.md
│   │   ├── changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md
│   │   ├── clickonce-supports-sha-256-on-4_0-targeted-apps.md
│   │   ├── clr_critical_section_spin_wait_removal.md
│   │   ├── code-contracts-and-string-isnullorempty-compiler-warning.md
│   │   ├── coerceisselectionboxhighlighted.md
│   │   ├── compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md
│   │   ├── concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md
│   │   ├── connection-pool-blocking-period-for-azure-sql-databases-is-removed.md
│   │   ├── contentdisposition-datetimes-returns-slightly-different-string.md
│   │   ├── cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md
│   │   ├── cryptographicexception-not-thrown-in-fips-mode.md
│   │   ├── cspparameters_parentwindowhandle-now-expects-hwnd-value.md
│   │   ├── currentculture-flows-across-tasks.md
│   │   ├── currentculture-not-preserved-across-wpf-dispatcher-operations.md
│   │   ├── data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md
│   │   ├── datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md
│   │   ├── dataobject_getdata-now-retrieves-data-as-utf-8.md
│   │   ├── dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md
│   │   ├── deflatestream-uses-native-apis-for-decompression.md
│   │   ├── deserialization-of-objects-across-appdomains-can-fail.md
│   │   ├── different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md
│   │   ├── ef-no-longer-throws-for-queryviews-with-specific-characteristics.md
│   │   ├── ef-version-must-match-netfx-version.md
│   │   ├── encoderparameter-ctor-is-obsolete.md
│   │   ├── entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md
│   │   ├── enumerable_empty-always-returns-cached-instance.md
│   │   ├── error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md
│   │   ├── etw-event-names-cannot-differ-only-by-suffix.md
│   │   ├── etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md
│   │   ├── eventlistener-truncates-strings-with-embedded-nulls.md
│   │   ├── eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md
│   │   ├── exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md
│   │   ├── exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md
│   │   ├── flowdocument-may-show-an-extra-line-of-text.md
│   │   ├── foreach-iterator-variable-is-now-scoped-within-the-iteration.md
│   │   ├── glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md
│   │   ├── gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md
│   │   ├── horizontal-scrolling-and-virtualization.md
│   │   ├── htmltextwriter-does-not-render-br-element-correctly.md
│   │   ├── httprequest_contentencoding-property-prohibits-utf7.md
│   │   ├── httputility_javascriptstringencode-escapes-ampersand.md
│   │   ├── iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md
│   │   ├── icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md
│   │   ├── il-ret-not-allowed-in-a-try-region.md
│   │   ├── incorrect-code-generation-when-passing-and-comparing-uint16-values.md
│   │   ├── incorrect-implementation-of-memberdescriptor_equals.md
│   │   ├── intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md
│   │   ├── interop-enable-winrt-iagileobject.md
│   │   ├── interop-event-handlers-safearray.md
│   │   ├── ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md
│   │   ├── item-scrolling-a-flat-list-with-items-of-different-pixel-height.md
│   │   ├── items_clear-does-not-remove-duplicates-from-selecteditems.md
│   │   ├── keytips-behavior-improved-in-wpf.md
│   │   ├── linq-to-ef-join-throws-argumentoutofrangeexception.md
│   │   ├── list_foreach-can-throw-exception-when-modifying-list-item.md
│   │   ├── list_sort-algorithm-changed.md
│   │   ├── listboxitem-isselected-binding-issue-with-observablecollection_move.md
│   │   ├── log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md
│   │   ├── long-path-support.md
│   │   ├── machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md
│   │   ├── managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md
│   │   ├── marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md
│   │   ├── mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md
│   │   ├── minfreememorypercentagetoactiveservice-is-now-respected.md
│   │   ├── missing-target-framework-moniker-results-in-4_0-behavior.md
│   │   ├── multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md
│   │   ├── multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md
│   │   ├── netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md
│   │   ├── new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md
│   │   ├── new-64-bit-jit-compiler.md
│   │   ├── new-enum-values-in-wpf's-pagerangeselection.md
│   │   ├── no-longer-able-to-set-enableviewstatemac-to-false.md
│   │   ├── non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md
│   │   ├── null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md
│   │   ├── objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md
│   │   ├── objectdisposedexception-thrown-by-wpf-spellchecker.md
│   │   ├── obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md
│   │   ├── only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md
│   │   ├── operationcontext-current-returns-null-in-a-using-clause.md
│   │   ├── opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md
│   │   ├── page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md
│   │   ├── path-colon-checks-are-stricter.md
│   │   ├── persian-calendar-now-uses-the-hijri-solar-algorithm.md
│   │   ├── previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md
│   │   ├── product-versioning-changes-in-net-framework-4-6-and-later.md
│   │   ├── profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md
│   │   ├── reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md
│   │   ├── remove-ssl3-from-the-wcf-transportdefaults.md
│   │   ├── resgen-block-mark-of-the-web-content.md
│   │   ├── resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md
│   │   ├── ribbongroup-background-is-set-to-transparent-in-localized-builds.md
│   │   ├── right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md
│   │   ├── rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md
│   │   ├── rsacng_verifyhash-now-returns-false-for-any-verification-failure.md
│   │   ├── scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md
│   │   ├── serialization-deserialization-of-mailmessage-objects.md
│   │   ├── serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md
│   │   ├── servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md
│   │   ├── sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md
│   │   ├── soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md
│   │   ├── some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md
│   │   ├── some-workflow-drag-and-drop-apis-are-obsolete.md
│   │   ├── sql-server-database-connection-that-resolves-to-localhost.md
│   │   ├── sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md
│   │   ├── sqlbulkcopy-uses-destination-column-encoding-for-strings.md
│   │   ├── sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md
│   │   ├── sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md
│   │   ├── sslstream-support-for-tls-alerts.md
│   │   ├── system_activities-is-now-aptca.md
│   │   ├── system_net_peertopeer_collaboration-unavailable-on-windows-8.md
│   │   ├── system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md
│   │   ├── system_threading_monitor_lock_acquisition_scalability_improvement.md
│   │   ├── system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md
│   │   ├── system_threading_timer_lock_contention_improvement.md
│   │   ├── system_uri-escaping-now-supports-rfc-3986.md
│   │   ├── system_uri-parsing-adheres-to-rfc-3987.md
│   │   ├── system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md
│   │   ├── targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md
│   │   ├── the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md
│   │   ├── the-replace-method-in-odata-urls-is-disabled-by-default.md
│   │   ├── throttle-concurrent-requests-per-session.md
│   │   ├── tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md
│   │   ├── two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md
│   │   ├── type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md
│   │   ├── unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md
│   │   ├── unicode-data-now-support-standard-v8_0-categories.md
│   │   ├── uri-reserved-characters-consistent.md
│   │   ├── uri-unc-shares-normalized.md
│   │   ├── uri-unicode-bidirectional-characters.md
│   │   ├── uri-unicode-scheme-only-relative.md
│   │   ├── vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md
│   │   ├── wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md
│   │   ├── wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md
│   │   ├── wcf-binding-with-the-transportwithmessagecredential-security-mode.md
│   │   ├── wcf-deadlock-results-when-using-reentrant-services.md
│   │   ├── wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md
│   │   ├── wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md
│   │   ├── wcf-transport-security-supports-certificates-stored-using-cng.md
│   │   ├── webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md
│   │   ├── webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md
│   │   ├── wf-serializes-expressions_literal-datetimes-differently.md
│   │   ├── windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md
│   │   ├── winform's-DomainUpDownControl-button's-actions-in-sync.md
│   │   ├── winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md
│   │   ├── winforms-ContextMenuStrip-SourceControl-property-change.md
│   │   ├── winforms-PrivateFontCollection-Font-handle-leak-fix.md
│   │   ├── winforms-accessibility-changes-471.md
│   │   ├── winforms-accessibility-changes-472.md
│   │   ├── winforms-accessibility-changes-48.md
│   │   ├── winforms-hdpi-changes-48.md
│   │   ├── winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md
│   │   ├── workflow-3_0-types-are-obsolete.md
│   │   ├── workflow-checksums-changed-from-md5-to-sha1.md
│   │   ├── workflow-designer-accessibility-4-8.md
│   │   ├── workflow-designer-accessibility.md
│   │   ├── workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md
│   │   ├── workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md
│   │   ├── workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md
│   │   ├── workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md
│   │   ├── workflow-xoml-file-checksums-changed-from-md5-to-sha256.md
│   │   ├── workflowdesigner_load-doesn't-remove-symbol-property.md
│   │   ├── wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md
│   │   ├── wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md
│   │   ├── wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md
│   │   ├── wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md
│   │   ├── wpf-MasterDetail-ADOdata-PrimaryKey.md
│   │   ├── wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md
│   │   ├── wpf-SelectionTextBrush-property-for-non-adorner-selection.md
│   │   ├── wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md
│   │   ├── wpf-accessibility-improvements-48.md
│   │   ├── wpf-accessibility-improvements.MD
│   │   ├── wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md
│   │   ├── wpf-chained-popups-with-StaysOpen-false.md
│   │   ├── wpf-databinding-should-use-key-not-indexer.md
│   │   ├── wpf-datatemplate-elements-are-now-visible-to-uia.md
│   │   ├── wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md
│   │   ├── wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md
│   │   ├── wpf-grid-allocation-of-space-to-star-columns.md
│   │   ├── wpf-grid-row-size-allocation-with-collapsed-element.md
│   │   ├── wpf-hang-listbox-duplicate-valuetypes.md
│   │   ├── wpf-hang-when-resizing-a-grid.md
│   │   ├── wpf-keyboard-navigation-listbox-hyperlink.md
│   │   ├── wpf-layout-rounding-of-margins-has-changed.md
│   │   ├── wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md
│   │   ├── wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md
│   │   ├── wpf-performace-improvement-grouping-automation.md
│   │   ├── wpf-pointer-based-touch-stack.md
│   │   ├── wpf-printing-stack-update.md
│   │   ├── wpf-selector-crash-when-removing-item-from-custom-collection.md
│   │   ├── wpf-selector-selectionchanged-and-selectedvalue.md
│   │   ├── wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md
│   │   ├── wpf-spell-checking-fail-in-unexpected-ways.md
│   │   ├── wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md
│   │   ├── wpf-tabcontrol-selectionchanged-and-selectedcontent.md
│   │   ├── wpf-textbox-defaults-to-undo-limit-of-100.md
│   │   ├── wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md
│   │   ├── wpf-textbox_text-can-be-out-of-sync-with-databinding.md
│   │   ├── wpf-treeviewitem-must-be-used-within-a-treeview.md
│   │   ├── wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md
│   │   ├── x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md
│   │   ├── x509certificateclaimset_findclaims-considers-all-claimtypes.md
│   │   ├── xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md
│   │   ├── xml-schema-validation-is-stricter.md
│   │   ├── xmlschemaexception-now-sets-line-positions-properly.md
│   │   ├── xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md
│   │   ├── xmlserializer-serializes-fields-differently-in-4_5.md
│   │   ├── xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md
│   │   ├── xmlwriter-throws-on-invalid-surrogate-pairs.md
│   │   ├── xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md
│   │   ├── xslt-forward-compat-now-works.md
│   │   └── xslt-style-sheet-exception-message-changed.md
│   └── testing-with-ryujit.md
├── LICENSE
├── README.md
├── SECURITY.md
├── data/
│   └── platforms.json
├── docs/
│   ├── ecosystem-issues.md
│   └── testing-with-ryujit.md
├── dotnet-consumer-projects.md
├── dotnet-developer-projects.md
├── dotnet-free-oss-services.md
├── releases/
│   ├── README.md
│   ├── UWP/
│   │   ├── LICENSE.TXT
│   │   ├── README.md
│   │   ├── net-native1.4/
│   │   │   └── README.md
│   │   ├── net-native1.6/
│   │   │   └── README.md
│   │   ├── net-native1.7/
│   │   │   └── README.md
│   │   ├── net-native2.0/
│   │   │   ├── README.md
│   │   │   ├── funceval.md
│   │   │   └── incremental-compilation.md
│   │   ├── net-native2.1/
│   │   │   └── README.md
│   │   └── net-native2.2/
│   │       └── README.md
│   ├── net45/
│   │   └── README.md
│   ├── net451/
│   │   └── README.md
│   ├── net452/
│   │   └── README.md
│   ├── net46/
│   │   ├── README.md
│   │   ├── dotnet46-api-changes.html
│   │   ├── dotnet46-api-changes.md
│   │   └── dotnet46-changes.md
│   ├── net461/
│   │   ├── README.md
│   │   ├── dotnet461-api-changes.md
│   │   └── dotnet461-changes.md
│   ├── net462/
│   │   ├── README.md
│   │   ├── dotnet462-api-changes.md
│   │   └── dotnet462-changes.md
│   ├── net47/
│   │   ├── README.md
│   │   ├── dotnet47-api-changes.md
│   │   └── dotnet47-changes.md
│   ├── net471/
│   │   ├── KnownIssues/
│   │   │   ├── 470006-GC Crashes with high rate of large object allocation.md
│   │   │   ├── 479874-WPF Touch Stops Working After Prolonged Use of Popups.md
│   │   │   ├── 481090-WPF Touch generates NullReferenceException in ProcessInputReport.md
│   │   │   ├── 489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md
│   │   │   ├── 493108-WPF InvalidCastException when displaying a checked MenuItem.md
│   │   │   ├── 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md
│   │   │   ├── 514195-Targeting .NET Framework 4.7.1 copies extra files to your bin directory.md
│   │   │   ├── 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md
│   │   │   ├── 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md
│   │   │   ├── 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md
│   │   │   ├── 523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md
│   │   │   ├── 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md
│   │   │   ├── 534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md
│   │   │   ├── 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md
│   │   │   └── 623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md
│   │   ├── README.md
│   │   ├── dotnet471-api-changes.md
│   │   ├── dotnet471-changes.md
│   │   └── dotnet471-known-issues.md
│   ├── net472/
│   │   ├── KnownIssues/
│   │   │   ├── 405199 - WPF Non-Adorner TextSelection Occludes Text.md
│   │   │   ├── 504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md
│   │   │   ├── 560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md
│   │   │   ├── 593963 - WPF Exceptions during AppDomain or process shutdown.md
│   │   │   ├── 599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md
│   │   │   ├── 611802 - SQLConnection.ConnectionString throws NullReferenceException .md
│   │   │   ├── 613745 - Single-name references are removed by the SDK when targeting 4.7.2.md
│   │   │   ├── 669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md
│   │   │   ├── 695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2.md
│   │   │   └── 706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md
│   │   ├── README.md
│   │   ├── dotnet472-api-changes.md
│   │   ├── dotnet472-changes.md
│   │   └── dotnet472-known-issues.md
│   ├── net48/
│   │   ├── KnownIssues/
│   │   │   ├── 776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md
│   │   │   └── wpf-pma-window-drag.md
│   │   ├── README.md
│   │   ├── dotnet48-api-changes.md
│   │   ├── dotnet48-changes.md
│   │   └── dotnet48-known-issues.md
│   ├── net481/
│   │   ├── KnownIssues/
│   │   │   └── 4.x WCF optional components.md
│   │   ├── README.md
│   │   ├── dotnet481-changes.md
│   │   └── dotnet481-known-issues.md
│   └── reference-assemblies/
│       └── README.md
├── src/
│   └── bc-readme-gen/
│       ├── Program.cs
│       ├── README-template.md
│       ├── README.md
│       └── bcreadgen.csproj
└── tools/
    └── DrainNGENQueue/
        ├── DrainNGenQueue.ps1
        └── DrainNGenQueue.wsf

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto encoding=UTF-8

# csc/vbc are shell scripts and should always have unix line endings
# These shell scripts are included in the toolset packages. Normally, the shell
# scripts in our repo are only run by cloning onto a Linux/Mac machine, and git
# automatically chooses LF as the line ending.
#
# However, right now the toolset packages must be built on Windows, and so the
# files must be hard-coded to be cloned with LF
src/Compilers/CSharp/CscCore/csc text eol=lf
src/Compilers/VisualBasic/VbcCore/vbc text eol=lf

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
*.cs     diff=csharp text 
*.vb     text

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following 
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
# 
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the 
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Issue with .NET Framework
    url:  https://developercommunity.visualstudio.com/dotnet
    about: Please open issues relating to the .NET Framework (rather than .NET Core or .NET 5+) in Developer Community
  - name: Issue with ASP.NET Core
    url:  https://github.com/dotnet/aspnetcore/issues/new/choose
    about: Please open issues relating to ASP.NET Core in dotnet/aspnetcore.
  - name: Issue with .NET runtime or core .NET libraries
    url:  https://github.com/dotnet/runtime/issues/new/choose
    about: Please open issues with the .NET runtime or core .NET libraries in dotnet/runtime.
  - name: Issue with .NET SDK
    url:  https://github.com/dotnet/sdk/issues/new/choose
    about: Please open issues relating to the .NET SDK in dotnet/sdk.
  - name: Issue with .NET Aspire
    url:  https://github.com/dotnet/aspire/issues/new/choose
    about: Please open issues relating to .NET Aspire in dotnet/aspire.
  - name: Issue with Entity Framework
    url:  https://github.com/dotnet/efcore/issues/new/choose
    about: Please open issues relating to Entity Framework in dotnet/efcore.
  - name: Issue with .NET MAUI
    url:  https://github.com/dotnet/maui/issues/new/choose
    about: Please open issues relating to .NET MAUI in dotnet/maui.    
  - name: Issue with Roslyn compiler
    url:  https://github.com/dotnet/roslyn/issues/new/choose
    about: Please open issues relating to the Roslyn .NET compiler in dotnet/roslyn.
  - name: Issue with Windows Forms
    url:  https://github.com/dotnet/winforms/issues/new/choose
    about: Please open issues relating to Windows Forms in dotnet/winforms.
  - name: Issue with WPF
    url:  https://github.com/dotnet/wpf/issues/new/choose
    about: Please open issues relating to WPF in dotnet/wpf.
  - name: Issue with release notes or package deprecation
    url:  https://github.com/dotnet/core/issues/new/choose
    about: Please open issues relating to release notes in dotnet/core.
  - name: Issue with .NET website
    url:  https://github.com/dotnet/website-feedback/issues/new/choose
    about: Please open issues relating to the website in dotnet/website-feedback.


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

# VS Code
.vscode/

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Typescript v1 declaration files
typings/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs


================================================
FILE: Documentation/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md
================================================
# InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors

## Symptoms
ASP.Net applications may crash intermittently due to an `InvalidOperationException` in
`System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors`.

## Cause
This issue was introduced when ASP.Net 4.7 separated cache management and memory monitoring. This new `RecycleLimitMonitorSingleton` monitors worker process private bytes usage against the recycling limit for the process, and when
the limit is near, it alerts a set of "proxy monitors" in each registered AppDomain so they can take action to avoid a process
recycle. The collection of "proxy monitors" being enumerated was not thread-safe, though, so new AppDomains spinning up or old
AppDomains shutting down while this monitor enumerated the collection could result in this unhandled `InvalidOperationException`
in the default AppDomain, causing a crash.

## Workaround 
There is no reliable workaround. If the environment does not tend to consume private bytes near the recycling limit, or if
web app domain lifetimes tend to last the entire length of the process lifetime, then chances of hitting this issue are
extremely minimal. More private bytes consumption and/or more AppDomain recycling increases the odds of hitting this exception condition.

## Resolution
A hotfix for this issue is planned for .Net 4.8. This page will be updated with a link to the hotfix when it becomes available.


================================================
FILE: Documentation/KnownIssues/README.md
================================================
# .NET Framework Known Issues

The following links provide the known issues about the various .NET Framework versions at the time of their release. They describe the underlying issue and how to resolve them. 

- [.NET Framework 4.8.1](https://github.com/Microsoft/dotnet/blob/master/releases/net481/dotnet481-known-issues.md)
- [.NET Framework 4.8](http://go.microsoft.com/fwlink/?LinkId=2086606)
- [.NET Framework 4.7.2](http://go.microsoft.com/fwlink/?LinkId=863257)
- [.NET Framework 4.7.1](http://go.microsoft.com/fwlink/?LinkId=852101)
- [.NET Framework 4.7](http://go.microsoft.com/fwlink/?LinkId=825308)
- [.NET Framework 4.6.2](http://go.microsoft.com/fwlink/?LinkId=780606)
- [.NET Framework 4.6.1](http://go.microsoft.com/fwlink/?LinkId=671749)
- [.NET Framework 4.6](https://support.microsoft.com/help/3047761/known-issues-for-the--net-framework-4-6)
- [.NET Framework 4.5.2](https://support.microsoft.com/help/2962547/known-issues-for-the-net-framework-4-5-2)


================================================
FILE: Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md
================================================
# [|Known Issue Title|]
// There is no built-in way to do comments in Markdown, so this template uses a C#-style comment to mark comments. Please REMOVE ALL COMMENTS before submission.
// Please use proper markdown syntax for code snippets. See <https://github.com/dotnet/docs/blob/master/styleguide/template.md#inline-code-blocks-with-language-identifier> for examples.
// Entries with [| ... |] are fields that must be updated.

## Symptoms
[|Description of the symptom(s)|]
// A description of the symptom(s) that exhibit due to the  underlying issue. 

## Cause
[|Description of the root cause(s)|]

## Workaround 
[|Description of the workaround, if available|]

## Resolution
[|Description of the resolution|]
// Add the steps that will allow users to resolve the underlying problem including any workarounds. 
// In future, if there is a fix available, then also update this page with the latest information or future update/hotfix link.

## More information
// This is an optional section. Add any other relevant information, if available, like link(s) to help docs, blog etc. 


================================================
FILE: Documentation/KnownIssues/wpf-binding-issue.md
================================================
# WPF Binding stops working after an item container leaves the visual tree

## Symptoms
This issue affects bindings whose path contains an explicit use of the `DataContext`
property of an element that belongs to the subtree generated for an item within an
`System.Windows.Controls.ItemsControl`.  When the element leaves the visual tree,
the binding stops working; any subsequent changes to other properties mentioned in
the path are ignored.

The visible symptoms depend on how the binding is used. For example, an app
may want to share a `System.Windows.Controls.ContextMenu` among the
item containers within an `System.Windows.Controls.ItemsControl`, and have the
content and behavior of the menu depend on the item container for which it is
displayed. This can be implemented by declaring the menu as a resource and binding its
`DataContext` to that of its `PlacementTarget`:

```xml
<UserControl.Resources>
    <ContextMenu x:Key="SharedContextMenu" 
                 DataContext="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.DataContext}">
        ... other content ...
    </ContextMenu>
</UserControl.Resources>
```

Then refer to the resource in the appropriate data template:

```xml
<DataTemplate>
    <StackPanel ContextMenu="{StaticResource SharedContextMenu}">
        ... other content ....
    </StackPanel>
</DataTemplate>
```

When the user right-clicks the `StackPanel` for a particular data item, the shared context menu
is displayed, its `PlacementTarget` is changed to be the `StackPanel`, the binding sets its
`DataContext` to the data item, and the menu's content and behavior can depend on the data item.

The issue arises if the app removes the item container from the visual tree while the menu
is visible. (There are many ways this can happen:  removing the data item from the underlying
collection, replacing the `ItemsSource`, scrolling enough to re-virtualize the data item, etc.)
When this happens, the binding stops working, and any subsequent changes to the `PlacementTarget`
property are ignored. The visible symptom is that right-clicking a different data item
will bring up the menu and reset its `PlacementTarget`, but its content and behavior are
still attached to the original item rather than to the newly-chosen one.

## Cause
When an item container leaves the visual tree, its `DataContext` is changed to `{DisconnectedItem}`.
The binding recognizes this sentinel value and suppresses the normal data transfer, but
mistakenly leaves itself in a state where it ignores subsequent changes to other properties
along the path (such as `PlacementTarget` in the example).

## Resolution
A hotfix for this issue is planned for .Net Framework 4.8. This page will be updated with a link to the hotfix when it becomes available.


================================================
FILE: Documentation/KnownIssues/wpf-pma-window-drag.md
================================================
# Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors

## Symptoms
A user running a WPF application that enables the Per-Monitor DPI awareness feature introduced in .NET Framework 4.7.2 may notice that the mouse cursor is in a different location relative to the window after dragging the window from one monitor to another.

## Cause
This issue is caused by a calculation error when resizing and placing the window after switching DPI.


================================================
FILE: Documentation/README.md
================================================
# Documentation

The following documents are available in this repo:

- [.NET Framework Application Compatibility](compatibility/README.md)
- [.NET Framework Known Issues](KnownIssues/README.md)
- [.NET Framework Release Notes](../releases/README.md)
- [Testing with RyuJIT](testing-with-ryujit.md)

The following .NET Framework documentation is available from Microsoft:

- [.NET Framework Documentation](https://docs.microsoft.com/dotnet/articles/framework/)
- [.NET Core Documentation](https://docs.microsoft.com/dotnet/articles/core/)
- [.NET Standard Documentation](https://docs.microsoft.com/dotnet/standard/net-standard)
- [General .NET Development](https://docs.microsoft.com/dotnet/standard/)


================================================
FILE: Documentation/compatibility/! Template.md
================================================
## [|Breaking Change Title|]

// There is no built in way to do comments in Markdown, so this C# style comment used to mark comments. Please remove all of these before submission
// Please use proper markdown syntax for code snippets. See https://daringfireball.net/projects/markdown/syntax for examples
// Entries with [| ... |] are fields that must be updated.

### Scope
[|Major|Minor|Edge|Transparent|]
//A description of the Scope values can be found at https://docs.microsoft.com/dotnet/articles/framework/migration-guide/net-compatibility-diagnostics

### Version Introduced
[|Version in which the breaking change first occurred|]

### Version Reverted
[|Version in which the breaking change was reverted. If not applicable, please remove|]

### Source Analyzer Status
// Flag that specifies whether an analyzer for Microsoft.DotNet.FrameworkCompatibilityDiagnostics has been or will be written
// For more information on the diagnostics, see this blog: https://blogs.msdn.microsoft.com/dotnet/2016/03/03/net-framework-compatibility-diagnostics/
[|Investigating|Planned|Available|NotPlanned|]

### Change Description
[|Description of what a change does and how it may affect someone|]

// Replace the space with an 'x' if applicable
- [ ] Quirked // Uses some mechanism to turn the feature on or off, usually using runtime targeting, AppContext or config files. Needs to be turned on automatically for some situations.
- [ ] Build-time break // Causes a break if attempted to recompile

### Recommended Action
[|
  Suggested steps if user is affected go here:

  - Example of code changes to handle change
  - How to opt out of change
  - For earlier versions, how to opt in to change
|]

### Affected APIs
[| List of APIs affected by change referred to using docids|]

// For details on how to generate docids, please look at other change files or
// see https://msdn.microsoft.com/library/fsbx0t7x.aspx for the spec.
//
// For example, if all members of System.Xml.XmlTextReader is affected, we would have the following item:
// * `T:System.Xml.XmlTextReader`
//
// Notice that only the type is included, as everything contained with it will be included as well. This works for any level of the type
// hierarchy and allows for whole namespaces to be included if needed.
//
// If no specific API is affected, use the following entry:
//  * Not detectable via API analysis

### Category
[|Pick a category from [the list of supported categories](!categories.md)|]

// If no link is available, please remove this line
[More information]([|LinkForMoreInformation|])

<!--
    ### Original Bug
    Bug link goes here
-->




================================================
FILE: Documentation/compatibility/!categories.md
================================================
| Category|
|---------|
|ADO.NET|
|ASP.NET|
|C#|
|ClickOnce|
|Core|
|Data|
|Debugger|
|Entity Framework|
|Globalization|
|JIT|
|LINQ|
|Managed Extensibility Framework (MEF)|
|MSBuild|
|Networking|
|Printing|
|Security|
|Serialization|
|Setup and Deployment|
|Visual Basic .NET|
|Web Applications|
|Windows Communication Foundation (WCF)|
|Windows Forms|
|Windows Presentation Foundation (WPF)|
|Windows Workflow Foundation (WF)|
|XML, XSLT|


================================================
FILE: Documentation/compatibility/ASPNET-accessibility-improvement.md
================================================
## ASP.NET Accessibility Improvements in .NET Framework 4.7.1

### Scope
Minor


### Version Introduced
4.7.1


### Source Analyzer Status
NotPlanned


### Change Description
Starting with the .NET Framework 4.7.1, ASP.NET has improved how ASP.NET Web Controls work with accessibility technology in Visual Studio to better support ASP.NET customers.  These include the following changes:

- Changes to implement missing UI accessibility patterns in controls, like the Add Field dialog in the Details View wizard, or the Configure ListView dialog of the ListView wizard.

- Changes to improve the display in High Contrast mode, like the Data Pager Fields Editor.

- Changes to improve the keyboard navigation experiences for controls, like the Fields dialog in the Edit Pager Fields wizard of the DataPager control, the Configure ObjectContext dialog, or the Configure Data Selction dialog of the Configure Data Source wizard.

- [x] Quirked
- [ ] Build-time break


### Recommended Action

**How to opt in or out of these changes**  
  
In order for the Visual Studio Designer to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The web application can benefit from these changes in either of the following ways:

- Install Visual Studio 2017 15.3 or later, which supports the new accessibility features with the following AppContext Switch by default.

- Opt out of the legacy accessibility behaviors by adding the `Switch.UseLegacyAccessibilityFeatures` AppContext switch to the `<runtime>` section in the devenv.exe.config file and setting it to `false`, as the following example shows.

```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    ...
    <!-- AppContextSwitchOverrides value attribute is in the form of `key1=true|false;key2=true|false`  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false" />
    ...
  </runtime>
</configuration>
```

Applications that target the .NET Framework 4.7.1 or later and want to preserve the legacy accessibility behavior can opt in to the use of legacy accessibility features by explicitly setting this AppContext switch to ```true```.

### Affected APIs
 * Not detectable via API analysis

### Category
ASP.NET




================================================
FILE: Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md
================================================
## Default SignedXML and SignedXMS algorithms changed to SHA256

### Scope
Minor

### Version Introduced
4.7.1

### Source Analyzer Status
NotPlanned

### Change Description
In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations.  

Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these operations. This change is necessary because SHA1 is no longer considered to be secure.

- [X] Quirked
- [ ] Build-time break

### Recommended Action
There are two new context switch values to control whether SHA1 (insecure) or SHA256 is used by default:

- Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms
 
- Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms

For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file:

```xml
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms=true;Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms=true" /> 
```

For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file:

```xml
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms=false;Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms=false" /> 
```

### Affected APIs
* `T:System.Security.Cryptography.Pkcs.CmsSigner`
* `T:System.Security.Cryptography.Xml.SignedXml`
* `T:System.Security.Cryptography.Xml.Reference`

### Category
Security

<!--
Bug ID # 397307 and # 397641 
-->


================================================
FILE: Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md
================================================
## ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves

### Scope
Edge

### Version Introduced
4.8

### Source Analyzer Status
NotPlanned

### Change Description
Starting with .NET Framework 4.8, the <xref:System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.GetECDsaPublicKey%2A?displayProperty=nameWithtype> method correctly handles all named curves supported by the OS, including the Brainpool elliptic curves.

### Recommended Action
If you encounter compatibility issues with this change on the .NET Framework 4.8 or a later version, you can opt-out of it by adding the following line to the \<runtime> section of the app.config file:

```xml
<appSettings>
    <add key="Switch.System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.UseLegacyPublicKeyReader" value="true" />
</appSettings>
```

### Affected APIs

* `M:System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.GetECDsaPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)`

### Category
Security


================================================
FILE: Documentation/compatibility/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](https://github.com/Microsoft/dotnet/tree/master/Documentation/compatibility). In particular, better titles will improve the index below, both in content and the sort.

- [.NET Framework 4.8.1](#net-framework-481)
- [.NET Framework 4.8](#net-framework-48)
- [.NET Framework 4.7.2](#net-framework-472)
- [.NET Framework 4.7.1](#net-framework-471)
- [.NET Framework 4.7](#net-framework-47)
- [.NET Framework 4.6.2](#net-framework-462)
- [.NET Framework 4.6.1](#net-framework-461)
- [.NET Framework 4.6](#net-framework-46)
- [.NET Framework 4.5.2](#net-framework-452)
- [.NET Framework 4.5.1](#net-framework-451)
- [.NET Framework 4.5](#net-framework-45)

## .NET Framework 4.8.1

No breaking changes or other changes in behavior which is expected to impact application compatibility are included as a part of .NET Framework 4.8.1

## .NET Framework 4.8

- [.NET COM successfully marshals ByRef SafeArray parameters on events](interop-event-handlers-safearray.md)
- [.NET Interop will now QueryInterface for IAgileObject (a WinRT interface)](interop-enable-winrt-iagileobject.md)
- [Accessibility improvements in Windows Forms controls for .NET 4.8](winforms-accessibility-changes-48.md)
- [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility-4-8.md)
- [Accessibility improvements in Windows Presentation Foundation (WPF)](wpf-accessibility-improvements-48.md)
- [Add SelectionTextBrush public property to TextBox/PasswordBox non-adorner selection](wpf-SelectionTextBrush-property-for-non-adorner-selection.md)
- [ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control](aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md)
- [ASP.NET Incorrect multipart handling may result in lost form data.](aspnet-invalid-results-from-httprequest.getattributefromheader.md)
- [ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute](aspnet-asp.net-validationcontext.membername-is-null-sometimes.md)
- [CLR critical section spin-wait removal](clr_critical_section_spin_wait_removal.md)
- [Data Binding improvement for KeyedCollection](wpf-databinding-should-use-key-not-indexer.md)
- [ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves](GetECDsaPublicKey-correctly-handles-brainpool-curves.md)
- [Fixed problem of unresponsiveness when ListBox contains duplicate value-types](wpf-hang-listbox-duplicate-valuetypes.md)
- [High DPI (HDPI) improvements in Windows Forms controls for .NET 4.8](winforms-hdpi-changes-48.md)
- [HwndHost now correctly resizes child-HWND during DPI changes](wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md)
- [Improvements to Grid star-rows space allocating algorithm](wpf-grid-row-size-allocation-with-collapsed-element.md)
- [Keyboard navigation improvement in ListBox with Hyperlinks](wpf-keyboard-navigation-listbox-hyperlink.md)
- [Managed cryptography classes do not throw a CryptographyException in Federal Information Processing Standards (FIPS) mode](cryptographicexception-not-thrown-in-fips-mode.md)
- [Performance improvement in Automation tree for grouping ItemsControls](wpf-performace-improvement-grouping-automation.md)
- [svcTraceViewer ComboBox high contrast change](wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md)
- [System.Threading.Monitor lock acquision scalability improvement](system_threading_monitor_lock_acquisition_scalability_improvement.md)
- [System.Threading.Timer lock contention improvement](system_threading_timer_lock_contention_improvement.md)
- [Workflow XAML checksums for symbols changed from SHA1 to SHA256](workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md)
- [Workflow XOML definition and SqlTrackingService cache keys changed from MD5 to SHA256](workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md)
- [Workflow XOML file checksums changed from MD5 to SHA256](workflow-xoml-file-checksums-changed-from-md5-to-sha256.md)

## .NET Framework 4.7.2

- ["dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2](aspnet-472-compat-doc.md)
- [Accessibility improvements in Windows Forms controls for .NET 4.7.2](winforms-accessibility-changes-472.md)
- [Allow Unicode Bidirectional Control Characters in URIs](uri-unicode-bidirectional-characters.md)
- [Allow Unicode in Uniform Resource Identifier (URI's) that resemble Universal Naming Convention (UNC) shares](uri-unc-shares-normalized.md)
- [Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.TransactedTerminate](wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md)
- [ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems](winforms-ContextMenuStrip-SourceControl-property-change.md)
- [DeflateStream uses native APIs for decompression](deflatestream-uses-native-apis-for-decompression.md)
- [Ensure System.Uri uses a consistent reserved character set](uri-reserved-characters-consistent.md)
- [Improved WCF chain trust certificate validation for Net.Tcp certificate authentication](WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md)
- [Keyboard focus now moves correctly across multiple layers of WinForms/WPF hosting ](wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md)
- [Keytips behavior improved in WPF](keytips-behavior-improved-in-wpf.md)
- [PrivateFontCollection.AddFontFile method releases Font resources](winforms-PrivateFontCollection-Font-handle-leak-fix.md)
- [Resgen refuses to load content from the web](resgen-block-mark-of-the-web-content.md)
- [Stack traces obtained when using portable PDBs now include source file and line information if requested](Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md)
- [Support special relative URI notation when Unicode is present](uri-unicode-scheme-only-relative.md)
- [The default hash algorithm for WPF's Markup Compiler is now SHA256](wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md)
- [WinForm's Domain upbutton and downbutton actions are in sync now](winform's-DomainUpDownControl-button's-actions-in-sync.md)
- [WPF AppDomain Shutdown Handling May Now Call Dispatcher.Invoke in Cleanup of Weak Events](wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md)
- [WPF Changing a primary key when displaying ADO data in a Master/Detail scenario](wpf-MasterDetail-ADOdata-PrimaryKey.md)
- [WPF FocusVisual for RadioButton and CheckBox Now Displays Correctly When The Controls Have No Content](wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md)
- [WPF TextBox/PasswordBox Text Selection Does Not Follow System Colors](wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md)

## .NET Framework 4.7.1

- [Accessibility improvements in Windows Forms controls](winforms-accessibility-changes-471.md)
- [Accessibility improvements in Windows Workflow Foundation (WF) workflow designer](workflow-designer-accessibility.md)
- [Accessibility improvements in WPF](wpf-accessibility-improvements.MD)
- [ASP.NET Accessibility Improvements in .NET Framework 4.7.1](ASPNET-accessibility-improvement.md)
- [Chained Popups with StaysOpen=False ](wpf-chained-popups-with-StaysOpen-false.md)
- [Default SignedXML and SignedXMS algorithms changed to SHA256](Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md)
- [Improved accessibility for some .NET SDK tools](WCFSDKToolsAccessibilityChangesIn4.7.1.md)
- [Selector SelectionChanged event and SelectedValue property](wpf-selector-selectionchanged-and-selectedvalue.md)
- [SerialPort background thread exceptions](SerialPort-background-thread-exceptions.md)
- [ServiceBase doesn't propagate OnStart exceptions](ServiceBase-doesnt-propagate-OnStart-exceptions.md)
- [TabControl SelectionChanged event and SelectedContent property](wpf-tabcontrol-selectionchanged-and-selectedcontent.md)
- [The default hash algorithm for WPF PackageDigitalSignatureManager is now SHA256](wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md)
- [WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null](WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md)
- [WCF MsmqSecureHashAlgorithm default value is now SHA256](WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md)
- [WCF PipeConnection.GetHashAlgorithm now uses SHA256](WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md)

## .NET Framework 4.7

- [Crash in Selector when removing an item from a custom INCC collection](wpf-selector-crash-when-removing-item-from-custom-collection.md)
- [CspParameters.ParentWindowHandle now expects HWND value](cspparameters_parentwindowhandle-now-expects-hwnd-value.md)
- [Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default](servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md)
- [Incorrect code generation when passing and comparing UInt16 values](incorrect-code-generation-when-passing-and-comparing-uint16-values.md)
- [NullReferenceException in exception handling code from ImageSourceConverter.ConvertFrom](wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md)
- [Resizing a Grid can cause an application to become unresponsive](wpf-hang-when-resizing-a-grid.md)
- [Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8](serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md)
- [SslStream supports TLS Alerts](sslstream-support-for-tls-alerts.md)
- [Throttle concurrent requests per session](throttle-concurrent-requests-per-session.md)
- [WCF message security now is able to use TLS1.1 and TLS1.2](wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md)
- [Workflow checksums changed from MD5 to SHA1](workflow-checksums-changed-from-md5-to-sha1.md)
- [Workflow now throws original exception instead of NullReferenceException in some cases](workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md)
- [Workflow SQL persistence adds primary key clusters and disallows null values in some columns](workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md)
- [WPF Grid allocation of space to star-columns](wpf-grid-allocation-of-space-to-star-columns.md)
- [WPF Pointer-Based Touch Stack](wpf-pointer-based-touch-stack.md)
- [WPF Printing Stack Update](wpf-printing-stack-update.md)

## .NET Framework 4.6.2

- [AesCryptoServiceProvider decryptor provides a reusable transform](aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md)
- [Calls to ClaimsIdentity constructors](calls-to-claimsidentity-constructors.md)
- [Changes in path normalization](changes-in-path-normalization.md)
- [Changing the IsEnabled property of the parent of a TextBlock control affects any child controls](changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md)
- [Connection pool blocking period for Azure SQL databases is removed](connection-pool-blocking-period-for-azure-sql-databases-is-removed.md)
- [DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException](datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md)
- [Deadlock may result when using Reentrant services](wcf-deadlock-results-when-using-reentrant-services.md)
- [Horizontal scrolling and virtualization](horizontal-scrolling-and-virtualization.md)
- [HttpRuntime.AppDomainAppPath Throws a NullReferenceException](asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md)
- [Incorrect implementation of MemberDescriptor.Equals](incorrect-implementation-of-memberdescriptor_equals.md)
- [Long path support](long-path-support.md)
- [OperationContext.Current may return null when called in a using clause](operationcontext-current-returns-null-in-a-using-clause.md)
- [Path colon checks are stricter](path-colon-checks-are-stricter.md)
- [Remove Ssl3 from the WCF TransportDefaults](remove-ssl3-from-the-wcf-transportdefaults.md)
- [RibbonGroup background is set to transparent in localized builds](ribbongroup-background-is-set-to-transparent-in-localized-builds.md)
- [RSACng and DSACng are once again usable in Partial Trust scenarios](RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md)
- [RSACng now correctly loads RSA keys of non-standard key size](rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md)
- [RSACng.VerifyHash now returns False for any verification failure](rsacng_verifyhash-now-returns-false-for-any-verification-failure.md)
- [SignedXml and EncryptedXml Breaking Changes](xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md)
- [SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change](SignedXml.GetPublicKey-returns-RSACng-on-net462.md)
- [Unicode standard version 8.0 categories now supported](unicode-data-now-support-standard-v8_0-categories.md)
- [WCF transport security supports certificates stored using CNG](wcf-transport-security-supports-certificates-stored-using-cng.md)

## .NET Framework 4.6.1

- [Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage](application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md)
- [Calls to System.Windows.Input.PenContext.Disable on touch-enabled systems may throw an ArgumentException](wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md)
- [Change in path separator character in FullName property of ZipArchiveEntry objects](change-in-path-separator-character-in-zip-files.md)
- [Contract.Invariant or Contract.Requires\<TException> do not consider String.IsNullOrEmpty to be pure](code-contracts-and-string-isnullorempty-compiler-warning.md)
- [Item-scrolling a flat list with items of different pixel-height](item-scrolling-a-flat-list-with-items-of-different-pixel-height.md)
- [ObjectDisposedException thrown by WPF spellchecker](objectdisposedexception-thrown-by-wpf-spellchecker.md)
- [WCF binding with the TransportWithMessageCredential security mode](wcf-binding-with-the-transportwithmessagecredential-security-mode.md)
- [WPF Spell Checking fails in unexpected ways](wpf-spell-checking-fail-in-unexpected-ways.md)
- [X509CertificateClaimSet.FindClaims Considers All claimTypes](x509certificateclaimset_findclaims-considers-all-claimtypes.md)

## .NET Framework 4.6

- [AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm](appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md)
- [Attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails](sql-server-database-connection-that-resolves-to-localhost.md)
- [Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type](calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md)
- [Calling CreateDefaultAuthorizationContext with a null argument has changed](calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md)
- [Certificate EKU OID validation](certificate-eku-oid-validation.md)
- [ClickOnce supports SHA-256 on 4.0-targeted apps](clickonce-supports-sha-256-on-4_0-targeted-apps.md)
- [CoerceIsSelectionBoxHighlighted](coerceisselectionboxhighlighted.md)
- [ContentDisposition DateTimes returns slightly different string](contentdisposition-datetimes-returns-slightly-different-string.md)
- [CurrentCulture and CurrentUICulture flow across tasks](currentculture-flows-across-tasks.md)
- [CurrentCulture is not preserved across WPF Dispatcher operations](currentculture-not-preserved-across-wpf-dispatcher-operations.md)
- [ETW event names cannot differ only by a "Start" or "Stop" suffix](etw-event-names-cannot-differ-only-by-suffix.md)
- [Exception message has changed for failed DataContract serialization in case of an unknown type](exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md)
- [HtmlTextWriter does not render `<br/>` element correctly](htmltextwriter-does-not-render-br-element-correctly.md)
- [Icon.ToBitmap successfully converts icons with PNG frames into Bitmap objects](windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md)
- [IL ret not allowed in a try region](il-ret-not-allowed-in-a-try-region.md)
- [New 64-bit JIT compiler in the .NET Framework 4.6](new-64-bit-jit-compiler.md)
- [Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream](only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md)
- [Persian calendar now uses the Hijri solar algorithm](persian-calendar-now-uses-the-hijri-solar-algorithm.md)
- [Product versioning changes in the .NET Framework 4.6 and later versions](product-versioning-changes-in-net-framework-4-6-and-later.md)
- [Reflection objects can no longer be passed from managed code to out-of-process DCOM clients](reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md)
- [TargetFrameworkName for default app domain no longer defaults to null if not set](targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md)
- [The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry](the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md)
- [TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API](tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md)
- [WCF services that use NETTCP with SSL security and MD5 certificate authentication](wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md)
- [WPF layout rounding of margins has changed](wpf-layout-rounding-of-margins-has-changed.md)
- [WPF spell checking in text-enabled controls will not work in Windows 10 for languages not in the OS's input language list](wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md)
- [WPF windows are rendered without clipping when extending outside a single monitor](wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md)
- [X509Certificate2.ToString(Boolean) does not throw now when .NET cannot handle the certificate](x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md)
- [XmlWriter throws on invalid surrogate pairs](xmlwriter-throws-on-invalid-surrogate-pairs.md)
- [XSD Schema validation now correctly detects violations of unique constraints if compound keys are used and one key is empty](xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md)

## .NET Framework 4.5.2

- [ASP.NET MVC now escapes spaces in strings passed in via route parameters](asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md)
- [DataObject.GetData now retrieves data as UTF-8](dataobject_getdata-now-retrieves-data-as-utf-8.md)
- [EF no longer throws for QueryViews with specific characteristics](ef-no-longer-throws-for-queryviews-with-specific-characteristics.md)
- [No longer able to set EnableViewStateMac to false](no-longer-able-to-set-enableviewstatemac-to-false.md)
- [Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation](opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md)
- [VB.NET no longer supports partial namespace qualification for System.Windows APIs](vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md)
- [WPF spawns a wisptis.exe process which can freeze the mouse](wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md)

## .NET Framework 4.5.1

- [A ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET Framework 4.5.1 or 4.5.2](a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md)
- [ADO.NET now attempts to automatically reconnect broken SQL connections](ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md)
- [Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks](building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md)
- [COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers](cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md)
- [DbParameter.Precision and DbParameter.Scale are now public virtual members](dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md)
- [Deserialization of objects across appdomains can fail](deserialization-of-objects-across-appdomains-can-fail.md)
- [EventListener truncates strings with embedded nulls](eventlistener-truncates-strings-with-embedded-nulls.md)
- [EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID)](eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md)
- [Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code](marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md)
- [MinFreeMemoryPercentageToActiveService is now respected](minfreememorypercentagetoactiveservice-is-now-respected.md)
- [NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version](netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md)
- [ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios](obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md)
- [ResolveAssemblyReference task now warns of dependencies with the wrong architecture](resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md)
- [Two-way data-binding to a property with a non-public setter is not supported](two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md)
- [WinRT stream adapters no long call FlushAsync automatically on close](winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md)

## .NET Framework 4.5

- [Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException](accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md)
- [Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003](apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md)
- [Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5](assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md)
- [BinaryFormatter can fail to find type from LoadFrom context](binaryformatter-can-fail-to-find-type-from-loadfrom-context.md)
- [Binding a WPF selector property (such as 'SelectedItem') to a static property does not work](binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md)
- [BlockingCollection&lt;T&gt;.TryTakeFromAny does not throw anymore](blockingcollection_trytakefromany-does-not-throw-anymore.md)
- [Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus](calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md)
- [Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element](calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md)
- [Change in behavior for Task.WaitAll methods with time-out arguments](change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md)
- [Change in behavior in Data Definition Language (DDL) APIs](change-in-behavior-in-data-definition-language-(ddl)-apis.md)
- [Compiler support for type forwarding when multi-targeting mscorlib](compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md)
- [ConcurrentQueue&lt;T&gt;.TryPeek can return an erroneous null via its out parameter](concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md)
- [Data written to PrintSystemJobInfo.JobStream must be in XPS format](data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md)
- [Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail](serialization-deserialization-of-mailmessage-objects.md)
- [Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods](different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md)
- [EncoderParameter ctor is obsolete](encoderparameter-ctor-is-obsolete.md)
- [Entity Framework version must match the .NET Framework version](ef-version-must-match-netfx-version.md)
- [EntityFramework 6.0 loads very slowly in apps launched from Visual Studio](entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md)
- [Enumerable.Empty&lt;TResult&gt; always returns cached instance](enumerable_empty-always-returns-cached-instance.md)
- [Error codes for maxRequestLength or maxReceivedMessageSize are different](error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md)
- [ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)](etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md)
- [Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread](exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md)
- [FlowDocument may show an extra line of text](flowdocument-may-show-an-extra-line-of-text.md)
- [Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)](foreach-iterator-variable-is-now-scoped-within-the-iteration.md)
- [GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET Framework 4.5](glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md)
- [GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the view](gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md)
- [HttpRequest.ContentEncoding property prohibits UTF7](httprequest_contentencoding-property-prohibits-utf7.md)
- [HttpUtility.JavaScriptStringEncode escapes ampersand](httputility_javascriptstringencode-escapes-ampersand.md)
- [IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete](iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md)
- [ICommand.CanExecuteChanged event behaviour changed in .NET Framework 4.5](icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md)
- [Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTemplates](intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md)
- [IPad should not be used in custom capabilities file because it is now a browser capability](ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md)
- [Items.Clear does not remove duplicates from SelectedItems](items_clear-does-not-remove-duplicates-from-selecteditems.md)
- [Linq to EF Join throws ArgumentOutOfRangeException](linq-to-ef-join-throws-argumentoutofrangeexception.md)
- [List&lt;T&gt;.ForEach can throw exception when modifying list item](list_foreach-can-throw-exception-when-modifying-list-item.md)
- [List.Sort algorithm changed](list_sort-algorithm-changed.md)
- [ListBoxItem IsSelected binding issue with ObservableCollection&lt;T&gt;.Move](listboxitem-isselected-binding-issue-with-observablecollection_move.md)
- [Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications](log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md)
- [MachineKey.Encode and MachineKey.Decode methods are now obsolete](machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md)
- [Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked](managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md)
- [MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer](mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md)
- [Missing Target Framework Moniker results in 4.0 behavior](missing-target-framework-moniker-results-in-4_0-behavior.md)
- [Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder](multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md)
- [Multiple items in a single TableLayoutPanel cell may be rearranged](multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md)
- [New (ambiguous) Dispatcher.Invoke overloads could result in different behavior](new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md)
- [New enum values in WPF's PageRangeSelection](new-enum-values-in-wpf's-pagerangeselection.md)
- [Non-pooled SQL connections will leak memory if not explicitly disposed](non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md)
- [Null coalescer values are not visible in debugger until one step later](null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md)
- [ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type](objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md)
- [Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding](page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md)
- [PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box](previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md)
- [Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error](profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md)
- [Right clicking on a WPF DataGrid row header changes the DataGrid selection](right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md)
- [Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause an application to become unresponsive](scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md)
- [Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework version](sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md)
- [SoapFormatter cannot deserialize Hashtable and similar ordered collection objects](soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md)
- [Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions](some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md)
- [Some WorkFlow drag-and-drop APIs are obsolete](some-workflow-drag-and-drop-apis-are-obsolete.md)
- [Sql_variant data uses sql_variant collation rather than database collation](sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md)
- [SqlBulkCopy uses destination column encoding for strings](sqlbulkcopy-uses-destination-column-encoding-for-strings.md)
- [SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter](sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md)
- [SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present](sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md)
- [System.Activities is now APTCA](system_activities-is-now-aptca.md)
- [System.Net.PeerToPeer.Collaboration unavailable on Windows 8](system_net_peertopeer_collaboration-unavailable-on-windows-8.md)
- [System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint](system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md)
- [System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed](system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md)
- [System.Uri escaping now supports RFC 3986](system_uri-escaping-now-supports-rfc-3986.md)
- [System.Uri parsing adheres to RFC 3987](system_uri-parsing-adheres-to-rfc-3987.md)
- [System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment](system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md)
- [The Replace method in OData URLs is disabled by default](the-replace-method-in-odata-urls-is-disabled-by-default.md)
- [Type.IsAssignableFrom returns wrong result for generic variables with constraints](type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md)
- [Unexpected InvalidCastException from InvokeMethod activity in WF4](unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md)
- [WebUtility.HtmlDecode no longer decodes invalid input sequences](webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md)
- [WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly](webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md)
- [WF serializes Expressions.Literal&lt;T&gt; DateTimes differently now (breaks custom XAML parsers)](wf-serializes-expressions_literal-datetimes-differently.md)
- [WinForm's CheckForOverflowUnderflow property is now true for System.Drawing](winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md)
- [WorkFlow 3.0 types are obsolete](workflow-3_0-types-are-obsolete.md)
- [WorkflowDesigner.Load doesn't remove symbol property](workflowdesigner_load-doesn't-remove-symbol-property.md)
- [WPF Aero2 and AeroLite themes toggle button doesn't show any state](wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md)
- [WPF DataTemplate elements are now visible to UIA](wpf-datatemplate-elements-are-now-visible-to-uia.md)
- [WPF DispatcherSynchronizationContext.CreateCopy now returns a new copy instead of the current instance](wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md)
- [WPF TextBox defaults to undo limit of 100](wpf-textbox-defaults-to-undo-limit-of-100.md)
- [WPF TextBox selected text appears a different color when the text box is inactive](wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md)
- [WPF TextBox.Text can be out-of-sync with databinding](wpf-textbox_text-can-be-out-of-sync-with-databinding.md)
- [WPF TreeViewItem must be used within a TreeView](wpf-treeviewitem-must-be-used-within-a-treeview.md)
- [XML schema validation is stricter](xml-schema-validation-is-stricter.md)
- [XmlSchemaException now sets line positions properly](xmlschemaexception-now-sets-line-positions-properly.md)
- [XmlSerializer fails while serializing a type that hides an accessible member with an inaccessible one](xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md)
- [XmlSerializer serializes fields differently in .NET Framework 4.5](xmlserializer-serializes-fields-differently-in-4_5.md)
- [XmlTextReader DTD entity expansion is limited to 10,000,000 characters](xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md)
- [XSLT forward compat now works](xslt-forward-compat-now-works.md)
- [XSLT style sheet exception message changed](xslt-style-sheet-exception-message-changed.md)

This file was generated by [Breaking Change Readme Generator](https://github.com/Microsoft/dotnet/blob/master/src/bc-readme-gen).


================================================
FILE: Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md
================================================
## RSACng and DSACng are once again usable in Partial Trust scenarios

### Scope
Edge

### Version Introduced
4.6.2

### Version Reverted
4.7.1

### Source Analyzer Status
NotPlanned

### Change Description
CngLightup (used in several higher-level crypto apis, such as <xref:System.Security.Cryptography.Xml.EncryptedXml?displayProperty=nameWithType>) and <xref:System.Security.Cryptography.RSACng?displayProperty=nameWithType> in some cases rely on full trust. These include P/Invokes without asserting <xref:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode?displayProperty=nameWithType> permissions, and code paths where <xref:System.Security.Cryptography.CngKey?displayProperty=nameWithType> has permission demands for <xref:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode?displayProperty=nameWithType>. Starting with the .NET Framework 4.6.2, CngLightup was used to switch to <xref:System.Security.Cryptography.RSACng?displayProperty=nameWithType> wherever possible. As a result, partial trust apps that successfully used <xref:System.Security.Cryptography.Xml.EncryptedXml?displayProperty=nameWithType> began to fail and throw <xref:System.Security.SecurityException> exceptions.

This change adds the required asserts so that all functions using CngLightup have the required permissions.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
If this change in the .NET Framework 4.6.2 has negatively impacted your partial trust apps, upgrade to the .NET Framework 4.7.1.

### Affected APIs
* `M:System.Security.Cryptography.DSACng.#ctor(System.Security.Cryptography.CngKey)`
* `P:System.Security.Cryptography.DSACng.Key`
* `P:System.Security.Cryptography.DSACng.LegalKeySizes`
* `M:System.Security.Cryptography.DSACng.CreateSignature(System.Byte[])`
* `M:System.Security.Cryptography.DSACng.VerifySignature(System.Byte[],System.Byte[])`
* `M:System.Security.Cryptography.RSACng.#ctor(System.Security.Cryptography.CngKey)`
* `P:System.Security.Cryptography.RSACng.Key`
* `M:System.Security.Cryptography.RSACng.Decrypt(System.Byte[],System.Security.Cryptography.RSAEncryptionPadding)`
* `M:System.Security.Cryptography.RSACng.SignHash(System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding)`

### Category
Security

<!--
Bug # 400499
-->


================================================
FILE: Documentation/compatibility/SerialPort-background-thread-exceptions.md
================================================
## SerialPort background thread exceptions

### Scope
Minor

### Version Introduced
4.7.1

### Source Analyzer Status
NotPlanned

### Change Description
Background threads created with <xref:System.IO.Ports.SerialPort> streams no longer terminate the process when OS exceptions are thrown. <br/> 

In applications that target the .NET Framework 4.7 and earlier versions, a process is terminated when an operating system exception is thrown on a background thread created with a <xref:System.IO.Ports.SerialPort> stream. <br/> 

In applications that target the .NET Framework 4.7.1 or a later version, background threads wait for OS events related to the active serial port and could crash in some cases, such as sudden removal of the serial port. 

- [X] Quirked
- [ ] Build-time break

### Recommended Action

For apps that target the .NET Framework 4.7.1, you can opt out of the exception handling if it is not desirable by adding the following to the `<runtime>` section of your `app.config` file:

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions=true" />
</runtime>
```

For apps that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.1 or later, you can opt in to the exception handling by adding the following to the `<runtime>` section of your `app.config` file:

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions=false" />
</runtime>
```

### Affected APIs

* `T:System.IO.Ports.SerialPort`

### Category
Core

<!--
Bug #428461
-->


================================================
FILE: Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md
================================================
## ServiceBase doesn't propagate OnStart exceptions

### Scope

Minor

### Version Introduced
4.7.1

### Source Analyzer Status

NotPlanned

### Change Description

In the .NET Framework 4.7 and earlier versions, exceptions thrown on service startup are not propagated to the caller of <xref:System.ServiceProcess.ServiceBase.Run%2A?displayProperty=nameWithType>.<br/>

Starting with applications that target the .NET Framework 4.7.1, the runtime propagates exceptions to <xref:System.ServiceProcess.ServiceBase.Run%2A?displayProperty=nameWithType> for services that fail to start.

- [x] Quirked
- [ ] Build-time break

### Recommended Action
On service start, if there is an exception, that exception will be propagated. This should help diagnose cases where services fail to start. <br/>

If this behavior is undesirable, you can opt out of it by adding the following &lt;AppContextSwitchOverrides&gt; element to the &lt;runtime&gt; section of your application configuration file:

```xml
<AppContextSwitchOverrides value="Switch.System.ServiceProcess.DontThrowExceptionsOnStart=true" />
```

If your application targets an earlier version than 4.7.1 but you want to have this behavior, add the following &lt;AppContextSwitchOverrides&gt; element to the &lt;runtime&gt; section of your application configuration file:

```xml
<AppContextSwitchOverrides value="Switch.System.ServiceProcess.DontThrowExceptionsOnStart=false" />
```

### Affected APIs
* `M:System.ServiceProcess.ServiceBase.Run(System.ServiceProcess.ServiceBase)`
* `M:System.ServiceProcess.ServiceBase.Run(System.ServiceProcess.ServiceBase[])`

### Category
Core

================================================
FILE: Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md
================================================
## SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change

### Scope
Edge

### Version Introduced
4.6.2

### Version Reverted
4.7.1

### Source Analyzer Status
NotPlanned

### Change Description

Starting with the .NET Framework 4.6.2, the concrete type of the object returned by the <xref:System.Security.Cryptography.Xml.SignedXml.GetPublicKey%2A?displayProperty=nameWithType> method changed (without a quirk) from a CryptoServiceProvider implementation to a Cng implementation. This is because the implementation changed from using `certificate.PublicKey.Key` to using the internal `certificate.GetAnyPublicKey` which forwards to <xref:System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey%2A?displayProperty=nameWithType>.

- [x] Quirked
- [ ] Build-time break

### Recommended Action

Starting with apps running on the .NET Framework 4.7.1, you can use the CryptoServiceProvider implementation used by default in the .NET Framework 4.6.1 and earlier versions by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file:

```xml
<AppContextSwitchOverrides value="Switch.System.Security.Cryptography.Xml.SignedXmlUseLegacyCertificatePrivateKey=true" />
```

### Affected APIs
* `M:System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(System.Security.Cryptography.AsymmetricAlgorithm@)`

### Category
Security

<!--
Bug # 432261
-->


================================================
FILE: Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md
================================================
## Stack traces obtained when using portable PDBs now include source file and line information if requested
   
### Scope
Edge

### Version Introduced
4.7.2

### Source Analyzer Status
NotPlanned

### Change Description
Starting with .NET Framework 4.7.2, stack traces obtained when using portable PDBs include source file and line information when requested. In versions prior to .NET Framework 4.7.2, source file and line information would be unavailable when using portable PDBs even if explicitly requested.

- [x] Quirked
- [ ] Build-time break

### Recommended Action
For applications that target the .NET Framework 4.7.2, you can opt out of the source file and line information when using portable PDBs if it is not desirable by adding the following to the `<runtime>` section of your `app.config` file:

```xml
 <runtime>
   <AppContextSwitchOverrides value="Switch.System.Diagnostics.IgnorePortablePDBsInStackTraces=true" />
</runtime>
```

For applications that target earlier versions of the .NET Framework but run on the .NET Framework 4.7.2 or later, you can opt in to the source file and line information when using portable PDBs by adding the following to the `<runtime>` section of your `app.config` file:

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.Diagnostics.IgnorePortablePDBsInStackTraces=false" />
</runtime>
```


### Affected APIs
* `M:System.Diagnostics.StackTrace.#ctor(System.Boolean)`
* `M:System.Diagnostics.StackTrace.#ctor(System.Exception,System.Boolean)`
* `M:System.Diagnostics.StackTrace.#ctor(System.Exception,System.Int32,System.Boolean)`


### Category
Core

[More information]([https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md])

<!--
Bug #534785
-->




================================================
FILE: Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md
================================================
## WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null

### Scope
Minor

### Version Introduced
4.7.1

### Source Analyzer Status
NotPlanned

### Change Description
Starting with the .NET Framework 4.7.1, the <xref:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})> constructor throws an <xref:System.ArgumentException> if one of the elements is `null`. In the .NET Framework 4.7 and earlier versions, no exception is thrown.

### Recommended Action
If you encounter compatibility issues with this change on the .NET Framework 4.7.1 or a later version, you can opt-out of it by adding the following line to the `<runtime>` section of the app.config file::

```xml
<configuration>
    <runtime>
	    <AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableAddressHeaderCollectionValidation=true" />
	</runtime>
</configuration>
```

### Affected APIs
* `M:System.ServiceModel.Channels.AddressHeaderCollection.#ctor(System.Collections.Generic.IEnumerable{System.ServiceModel.Channels.AddressHeader})`

### Category
Windows Communication Foundation (WCF)

<!--
    ### Original Bug
    [275879] (https://devdiv.visualstudio.com/web/wi.aspx?pcguid=011b8bdf-6d56-4f87-be0d-0092136884d9&id=275879)
-->

================================================
FILE: Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md
================================================
## Improved WCF chain trust certificate validation for Net.Tcp certificate authentication

### Scope
Minor

### Version Introduced
4.7.2

### Source Analyzer Status
NotPlanned

### Change Description
.NET Framework 4.7.2 improves chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement, client certificates that are used to authenticate to a server must be configured for client authentication.  Similarly server certificates that are for the authenticating a server must be configured for server authentication. With this change, if the root certificate is disabled, the certificate chain validation fails. The same change was also made to .NET Framework 3.5 and later versions via Windows security roll-up. You can find more information [here](https://support.microsoft.com/help/4055269/security-only-update-for-net-framework-3-5-1-4-5-2-4-6-4-6-1-4-6-2-4-7).

This change is on by default and can be turned off by a configuration setting.

### Recommended Action
  - Validate if your server and client certification has the required EKU OID. If not, update your certification.
  - Validate if your root certificate is invalid. If so, update the root certificate. 
  - How to opt out of the change:
  If you can't update the certificate, you can work around the breaking change temporarily with the following configration setting,  However, opting out of the change will leave your system vulnerable to the security issue.

```xml
 <appSettings>
 <add key="wcf:useLegacyCertificateUsagePolicy" value="true" />
 </appSettings>
 ```

### Affected APIs
* Not detectable via API analysis

### Category
Runtime

================================================
FILE: Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md
================================================
## WCF MsmqSecureHashAlgorithm default value is now SHA256

### Scope
Minor
### Version Introduced
4.7.1
### Source Analyzer Status
NotPlanned
### Change Description
Starting with the .NET Framework 4.7.1, the default message signing algorithm in WCF for Msmq messages is SHA256. In the .NET Framework 4.7 and earlier versions, the default message signing algorithm is SHA1.

- [ ] Quirked
- [ ] Build-time break
 
### Recommended Action
If you run into compatibility issues with this change on the .NET Framework 4.7.1 or later, you can opt-out the change by adding the following line to the `<runtime>`section of your app.config file:


```xml
<configuration>
    <runtime>
	    <AppContextSwitchOverrides value="Switch.System.ServiceModel.UseSha1InMsmqEncryptionAlgorithm=true" />
	</runtime>
</configuration>
```

### Affected APIs
* Not detectable via API analysis

### Category
Windows Communication Foundation (WCF)

<!--
    ### Original Bug
    [395687] (https://devdiv.visualstudio.com/web/wi.aspx?pcguid=011b8bdf-6d56-4f87-be0d-0092136884d9&id=395687)
-->


================================================
FILE: Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md
================================================
## WCF PipeConnection.GetHashAlgorithm now uses SHA256

### Scope
Minor
### Version Introduced
4.7.1
### Source Analyzer Status
NotPlanned
### Change Description
Starting with the .NET Framework 4.7.1, Windows Communication Foundation uses a SHA256 hash to generate random names for named pipes. In the .NET Framework 4.7 and earlier versions, it used a SHA1 hash.

- [ ] Quirked
- [ ] Build-time break
 
### Recommended Action
If you run into compatibility issue with this change on the .NET Framework 4.7.1 or later, you can opt-out it by adding the following line to the `<runtime>` section of your app.config file:

```xml
<configuration>
    <runtime>
	    <AppContextSwitchOverrides value="Switch.System.ServiceModel.UseSha1InPipeConnectionGetHashAlgorithm=true" />
	</runtime>
</configuration>
```

### Affected APIs
* Not detectable via API analysis

### Category
Windows Communication Foundation (WCF)

<!--
    ### Original Bug
    [395685] (https://devdiv.visualstudio.com/web/wi.aspx?pcguid=011b8bdf-6d56-4f87-be0d-0092136884d9&id=395685)
-->



================================================
FILE: Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md
================================================
## Improved accessibility for some .NET SDK tools

### Scope
Edge

### Version Introduced
4.7.1

### Source Analyzer Status
NotPlanned

### Change Description

In the .NET Framework SDK 4.7.1, the SvcConfigEditor.exe and SvcTraceViewer.exe tools have been improved by fixing varied accessibility issues. Most of these were small issues like a name not being defined or certain UI automation patterns not being implemented correctly. While many users wouldn’t be aware of these incorrect values, customers who use assistive technologies like screen readers will find these SDK tools more accessible. Certainly, these fixes change some previous behaviors, like keyboard focus order.

In order to get all the accessibility fixes in these tools, you can the following to your app.config file:
```xml
<runtime>
  <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false"/>
</runtime>
```

- [x] Quirked
- [ ] Build-time break

### Affected APIs
* Not detectable via API analysis

### Category
Windows Communication Foundation (WCF)

<!--
    ### Original Bug
    [492954] (https://devdiv.visualstudio.com/web/wi.aspx?pcguid=011b8bdf-6d56-4f87-be0d-0092136884d9&id=492954)
-->


================================================
FILE: Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md
================================================
## A ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET Framework 4.5.1 or 4.5.2

### Scope
Minor

### Version Introduced
4.5.1

### Version Reverted
4.6

### Source Analyzer Status
Available

### Change Description

Due to internal changes to the type,
<xref:System.Collections.Concurrent.ConcurrentDictionary`2> objects that are
serialized with the .NET Framework 4.5 using the
<xref:System.Runtime.Serialization.NetDataContractSerializer?displayProperty=name>
cannot be deserialized in the .NET Framework 4.5.1 or in the .NET Framework
4.5.2.

Note that moving in the other direction (serializing with the .NET Framework
4.5.x and deserializing with the .NET Framework 4.5) works. Similarly, all 4.x
cross-version serialization works with the .NET Framework 4.6.

Serializing and deserializing with a single version of the .NET Framework is not
affected.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
If it is necessary to serialize and deserialize a <xref:System.Collections.Concurrent.ConcurrentDictionary`2?displayProperty=name> between the .NET Framework 4.5 and .NET Framework 4.5.1/4.5.2, an alternate serializer like the
<xref:System.Runtime.Serialization.DataContractSerializer?displayProperty=name> or <xref:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter?displayProperty=name> serializer should be used instead of the <xref:System.Runtime.Serialization.NetDataContractSerializer?displayProperty=name>.

Alternatively, because this issue is addressed in the .NET Framework 4.6, it may be solved by upgrading to that version of the .NET Framework.

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!--
    ### Notes
    Should be fairly easy to detect ConcurrentDictionary objects being serialized/deserialized by a NetDataContractSerializer.
-->

<!-- breaking change id: 133 -->


================================================
FILE: Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md
================================================
## Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferenceException

### Scope
Minor

### Version Introduced
4.5

### Version Reverted
4.6

### Source Analyzer Status
Planned

### Change Description

Due to a bug in the .NET Framework 4.5, event handlers for
<xref:System.Windows.Controls.DataGrid> events involving the removal of a row
can cause a <xref:System.NullReferenceException?displayProperty=name> to be
thrown if they access the
<xref:System.Windows.Controls.DataGrid>'s
<xref:System.Windows.Controls.Primitives.Selector.SelectedItem?displayProperty=name>
or <xref:System.Windows.Controls.Primitives.MultiSelector.SelectedItems?displayProperty=name>
properties.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

### Affected APIs
* `E:System.Windows.Controls.DataGrid.UnloadingRow`
* `E:System.Windows.Controls.DataGrid.UnloadingRowDetails`

### Category
Windows Presentation Foundation (WPF)

<!-- breaking change id: 107 -->


================================================
FILE: Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md
================================================
## ADO.NET now attempts to automatically reconnect broken SQL connections

### Scope
Edge

### Version Introduced
4.5.1

### Source Analyzer Status
Planned

### Change Description

Beginning in the .NET Framework 4.5.1, the .NET Framework will attempt to
automatically reconnect broken SQL connections. Although this will typically
make apps more reliable, there are edge cases in which an app needs to know that
the connection was lost so that it can take some action upon reconnection.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

If this feature is undesirable due to compatibility concerns, it can be disabled
by setting the
<xref:System.Data.SqlClient.SqlConnectionStringBuilder.ConnectRetryCount?displayProperty=name>
property of a connection string (or
<xref:System.Data.SqlClient.SqlConnectionStringBuilder?displayProperty=name>) to
0.

### Affected APIs
* `M:System.Data.IDbConnection.set_ConnectionString(System.String)`
* `M:System.Data.SqlClient.SqlConnection.set_ConnectionString(System.String)`
* `M:System.Configuration.ConnectionStringSettings.set_ConnectionString(System.String)`
* `M:System.Data.Common.DbConnection.set_ConnectionString(System.String)`
* `M:System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(System.String)`
* `M:System.Data.SqlClient.SqlConnectionStringBuilder.#ctor`
* `M:System.Data.SqlClient.SqlConnectionStringBuilder.#ctor(System.String)`
* `M:System.Data.Common.DbConnectionStringBuilder.#ctor`
* `M:System.Data.Common.DbConnectionStringBuilder.#ctor(System.Boolean)`

### Categories
ADO.NET
Data

[More information](https://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx)

<!--
    ### Notes
    It would be very difficult to know if code depended on not auto-reconnecting and ADO.NET connection.
    Source analyzer status: Planned - No tracking work item yet
    Single-diagnostic compilation action analyzer
-->

<!-- breaking change id: 119 -->


================================================
FILE: Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md
================================================
## AesCryptoServiceProvider decryptor provides a reusable transform

### Scope
Minor

### Version Introduced
4.6.2

### Source Analyzer Status
Investigating

### Change Description

Starting with apps that target the .NET Framework 4.6.2, the
<xref:System.Security.Cryptography.AesCryptoServiceProvider> decryptor provides
a reusable transform. After a call to
<xref:System.Security.Cryptography.CryptoAPITransform.TransformFinalBlock(System.Byte[],System.Int32,System.Int32)?displayProperty=name>,
the transform is reinitialized and can be reused. For apps that
target earlier versions of the .NET Framework, attempting to reuse the decryptor
by calling
<xref:System.Security.Cryptography.CryptoAPITransform.TransformBlock(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)?displayProperty=name>
after a call to <xref:System.Security.Cryptography.CryptoAPITransform.TransformFinalBlock(System.Byte[],System.Int32,System.Int32)?displayProperty=name>
throws a <xref:System.Security.Cryptography.CryptographicException> or
produces corrupted data.

- [X] Quirked
- [ ] Build-time break

### Recommended Action
The impact of this change should be minimal, since this is the expected behavior.

Applications that depend on the previous behavior can opt out of it using it by adding the following configuration setting to the `<runtime>` section of the application's configuration file:

   ```xml
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.AesCryptoServiceProvider.DontCorrectlyResetDecryptor=true"/>
   </runtime>
   ```

In addition, applications that target a previous version of the .NET Framework but are running under a version of the .NET Framework starting with .NET Framework 4.6.2 can opt in to it by adding the following configuration setting to the `<runtime>` section of the application's configuration file:

   ```xml
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.AesCryptoServiceProvider.DontCorrectlyResetDecryptor=false"/>
   </runtime>
   ```

### Affected APIs
- `M:System.Security.Cryptography.AesCryptoServiceProvider.CreateDecryptor`

### Category
Core

<!--
    ### Original Bug
    205301
-->

<!-- breaking change id: 165 -->


================================================
FILE: Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md
================================================
## AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm

### Scope
Edge

### Version Introduced
4.6

### Source Analyzer Status
Planned

### Change Description

Prior to the .NET Framework 4.6, the value of
<xref:System.AppDomainSetup.DynamicBase> would be
randomized between application domains, or between processes, if
UseRandomizedStringHashAlgorithm was enabled in the app's config file. Beginning
in the .NET Framework 4.6,
<xref:System.AppDomainSetup.DynamicBase> will
return a stable result between different instances of an app running, and
between different app domains. Dynamic bases will still differ for different
apps; this change only removes the random naming element for different instances
of the same app.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

Be aware that enabling `UseRandomizedStringHashAlgorithm` will not result in
<xref:System.AppDomainSetup.DynamicBase> being
randomized. If a random base is needed, it must be produced in your app's code
rather than via this API.

### Affected APIs
* `P:System.AppDomainSetup.DynamicBase`

### Category
Core

<!--
    ### Notes
    Should be easy to look for DynamicBase use while UseRandomizedStringHashAlgorithm is set
-->

<!-- breaking change id: 115 -->


================================================
FILE: Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md
================================================
## Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage

### Scope
Edge

### Version Introduced
4.6.1

### Source Analyzer Status
Planned

### Change Description

Prior to the .NET Framework 4.6.1, calling
<xref:System.Windows.Forms.Application.FilterMessage(System.Windows.Forms.Message@)>
with an
<xref:System.Windows.Forms.IMessageFilter.PreFilterMessage(System.Windows.Forms.Message@)>
which called
<xref:System.Windows.Forms.Application.AddMessageFilter(System.Windows.Forms.IMessageFilter)?displayProperty=name>
or <xref:System.Windows.Forms.Application.RemoveMessageFilter(System.Windows.Forms.IMessageFilter)?displayProperty=name>
(while also calling
<xref:System.Windows.Forms.Application.DoEvents>)
would cause an <xref:System.IndexOutOfRangeException?displayProperty=name>.<p/>

Beginning with applications targeting the .NET Framework 4.6.1, this exception is no longer thrown, and re-entrant filters as described above may be used.

- [x] Quirked
- [ ] Build-time break

### Recommended Action

Be aware that
<xref:System.Windows.Forms.Application.FilterMessage(System.Windows.Forms.Message@)>
will no longer throw for the re-entrant
<xref:System.Windows.Forms.IMessageFilter.PreFilterMessage(System.Windows.Forms.Message@)>
behavior described above. This only affects applications targeting the .NET
Framework 4.6.1.

Apps targeting the .NET Framework 4.6.1 can opt out of this change (or apps
targeting older Frameworks may opt in) by using the
[DontSupportReentrantFilterMessage](~/docs/framework/migration-guide/mitigation-custom-imessagefilter-prefiltermessage-implementations.md#mitigation)
compatibility switch.

### Affected APIs
* `M:System.Windows.Forms.Application.FilterMessage(System.Windows.Forms.Message@)`

### Category
Windows Forms

<!--
    ### Notes
    It's unclear if this one will be better analyzed by Application.FilterMessage callers (who would have seen the exception previously)
    or the IMessageFilter.PreFilterMessage implementers (who caused the exception previously). Unfortunately, the analyzer on the caller is probably
    more useful, even though it would be easier to be 'precise' if we analyzed the interface implementer.
-->

<!-- breaking change id: 144 -->


================================================
FILE: Documentation/compatibility/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md
================================================
## Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003

### Scope
Edge

### Version Introduced
4.5

### Version Reverted
4.6

### Source Analyzer Status
Available

### Change Description
The executable is signed with SHA256. Previously, it was signed with SHA1 regardless of whether the code-signing certificate was SHA-1 or SHA-256. This applies to:

- All applications built with Visual Studio 2012 or later.
- Applications built with Visual Studio 2010 or earlier on systems with the .NET Framework 4.5 present.

In addition, if the .NET Framework 4.5 or later is present, the ClickOnce manifest is also signed with SHA-256 for SHA-256 certificates regardless of the .NET Framework version against which it was compiled.

- [ ] Quirked
- [x] Build-time break

### Recommended Action
The change in signing the ClickOnce executable affects only Windows Server 2003 systems; they require that KB 938397 be installed.

The change in signing the manifest with SHA-256 even when an app targets the .NET Framework 4.0 or earlier versions introduces a runtime dependency on the .NET Framework 4.5 or a later version.

### Affected APIs
* Investigate applicable APIs

### Category
ClickOnce

<!--
    ### Notes
    Only affects WinServer 2003; there is a KB to address it.  Could flag it if we detect click-once being used (especially if it has a SHA-1 code-signing cert)
-->

<!-- breaking change id: 63 -->


================================================
FILE: Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md
================================================
## HttpRuntime.AppDomainAppPath Throws a NullReferenceException

### Scope
Edge

### Version Introduced
4.6.2

### Version Reverted
4.7

### Source Analyzer Status
NotPlanned

### Change Description
In the .NET Framework 4.6.2, the runtime throws a `T:System.NullReferenceException` when retrieving a `P:System.Web.HttpRuntime.AppDomainAppPath` value that includes null characters. 

In the .NET Framework 4.6.1 and earlier versions, the runtime throws an `T:System.ArgumentNullException`.

- [ ] Quirked
- [X] Build-time break

### Recommended Action
You can do either of the follow to respond to this change: 

- Handle the `T:System.NullReferenceException` if you application is running on the .NET Framework 4.6.2.

- Upgrade to the .NET Framework 4.7, which restores the previous behavior and throws an `T:System.ArgumentNullException`.

### Affected APIs
`P:System.Web.HttpRuntime.AppDomainAppPath`

### Category
ASP.NET

<!--
    ### Original Bug
    https://devdiv.visualstudio.com/DevDiv/_workitems?id=252467&_a=edit
-->

<!-- breaking change id: 183 -->



================================================
FILE: Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md
================================================
## ASP.NET MVC now escapes spaces in strings passed in via route parameters

### Scope
Minor

### Version Introduced
4.5.2

### Source Analyzer Status
Available

### Change Description
In order to conform to RFC 2396, spaces in route paths are now escaped when populating action parameters from a route. So, whereas  `/controller/action/some data` would previously match the route `/controller/action/{data}` and provide `some data` as the data parameter, it will now provide `some%20data` instead.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
Code should be updated to unescape string parameters from a route. If the original URI is needed, it can be accessed with the <xref:System.Net.HttpWebRequest.RequestUri>.OriginalString API.

### Affected APIs
* `M:System.Web.Mvc.RouteAttribute.#ctor(System.String)`

### Category
ASP.NET

<!--
    ### Notes
    Single-diagnostic compilation action analyzer
-->

<!-- breaking change id: 125 -->


================================================
FILE: Documentation/compatibility/aspnet-472-compat-doc.md
================================================
## "dataAnnotations:dataTypeAttribute:disableRegEx" app setting is on by default in .NET Framework 4.7.2

### Scope
Minor 

### Version Introduced
4.7.2

### Change Description
In .NET Framework 4.6.1, an app setting (`"dataAnnotations:dataTypeAttribute:disableRegEx"`) was introduced that allows users to disable the use of regular expressions in data type attributes (such as <xref:System.ComponentModel.DataAnnotations.EmailAddressAttribute?displayProperty=nameWithType>, <xref:System.ComponentModel.DataAnnotations.UrlAttribute?displayProperty=nameWithType>, and <xref:System.ComponentModel.DataAnnotations.PhoneAttribute?displayProperty=nameWithType>). This helps to reduce security vulnerability such as avoiding the possibility of a Denial of Service attack using specific regular expressions.<br/>
 
In .NET Framework 4.6.1, this app setting to disable RegEx usage was set to `false` by default. Staring with .NET Framework 4.7.2, this config switch is set to `true` by default to further reduce secure vulnerability for web applications that target .NET Framework 4.7.2 and above.


### Recommended Action
If you find that regular expressions in your web application do not work after upgrading to .NET Framework 4.7.2, you can update the value of the `"dataAnnotations:dataTypeAttribute:disableRegEx"` setting to `false` to revert to the previous behavior.

```xml
    <configuration>
      <appSettings>
      ...
        <add key="dataAnnotations:dataTypeAttribute:disableRegEx" value="false"/>
      ...
      </appSettings>
    </configuration>
```

### Category
Web Applications


================================================
FILE: Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md
================================================
## ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute

### Version Introduced
4.8

### Change Description
In .NET Framework 4.7.2 and earlier versions, when using a custom <xref:System.ComponentModel.DataAnnotations.ValidationAttribute?displayProperty=nameWithType>, the <xref:System.ComponentModel.DataAnnotations.ValidationContext.MemberName?displayProperty=nameWithType> property returns `null`.  In .NET Framework 4.8, it returns the member name.


### Recommended Action
The default behavior of the <xref:System.ComponentModel.DataAnnotations.ValidationContext.MemberName?displayProperty=nameWithType> property remains the same.  To retrieve a valid value from the `ValidationContext.MemberName` property, add the following setting to your app config file:

```xml
    <configuration>
      <appSettings>
      ...
        <add key="aspnet:GetValidationMemberName"  value="true"/>
      ...
      </appSettings>
    </configuration>
```

### Affected APIs

* `P:System.ComponentModel.DataAnnotations.ValidationContext.MemberName`

### Category
ASP.NET

<!--
    ### 563497	<ASP.NET WebForms> ValidationContext.MemberName is NULL with custom DataAnnotations.ValidationAttribute

-->




================================================
FILE: Documentation/compatibility/aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md
================================================
## ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control

### Version Introduced
4.8

### Change Description
For applications that target .NET Framework 4.7.2 and earlier versions, <xref:System.Web.UI.WebControls.CheckBox.InputAttributes?displayProperty=nameWithType> and <xref:System.Web.UI.WebControls.CheckBox.LabelAttributes?displayProperty=nameWithType> that are programmatically added to a WebForms <xref:System.Web.UI.WebControls.CheckBox> control are lost
after postback. For applications that target .NET Framework 4.8 or later versions, they are preserved after postback.

### Recommended Action
For the correct behavior for restoring attributes on postback, set the `targetFrameworkVersion` to 4.8 or higher. For example:

```xml
    <configuration>
      <system.web>
        <httpRuntime targetFramework="4.8"/>
      </system.web>
    </configuration>
```

Setting it lower, or not at all, preserves the old incorrect behavior.

### Affected APIs

* `T:System.Web.UI.WebControls.CheckBox`

### Category
ASP.NET

<!--
    ### 643614	<ASP.NET WebForms> Buggy handling of InputAttributes and LabelAttributes in ASP.NET WebForms CheckBox control

-->




================================================
FILE: Documentation/compatibility/aspnet-invalid-results-from-httprequest.getattributefromheader.md
================================================
## ASP.NET Incorrect multipart handling may result in lost form data.

### Version Introduced
4.8

### Change Description
In applications that target .NET Framework 4.7.2 and earlier versions, ASP.Net might incorrectly parse multipart boundary values, 
resulting in form data being unavailable during request execution. Applications that target .NET Framework 4.8 or later versions 
correctly parse multipart data, so form values are available during request execution.

### Recommended Action
Starting with applications running on .NET Framework 4.8, when targeting .NET Framework 4.8 or later by using the `targetFrameworkVersion` element, the default behavior changes to strip delimiters. When targeting previous framework versions or not using `targetFrameworkVersion`, trailing delimiters for
some values are still returned. 

This behavior can also be explicitly controlled with an `appSetting`:

```xml
    <configuration>
      <appSettings>
      ...
        <add key="aspnet:UseLegacyMultiValueHeaderHandling"  value="true"/>
      ...
      </appSettings>
    </configuration>
```

### Affected APIs

* `P:System.Web.HttpRequest.Form`
* `P:System.Web.HttpRequest.Files`
* `P:System.Web.HttpRequest.ContentEncoding`

### Category
ASP.NET

<!--
    ### 684397	<ASP.NET WebForms> Invalid results of the function GetAttributeFromHeader in System.Web.HttpRequest

-->




================================================
FILE: Documentation/compatibility/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md
================================================
## Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
Planned

### Change Description
If an assembly of compiled regular expressions is built with the .NET Framework 4.5 but targets the .NET Framework 4, attempting to use one of the regular expressions in that assembly on a system with .NET Framework 4 installed throws an exception.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
To work around this problem, you can do either of the following:

- Build the assembly that contains the regular expressions with the .NET Framework 4.
- Use an interpreted regular expression.

### Affected APIs
* `M:System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)`
* `M:System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName,System.Reflection.Emit.CustomAttributeBuilder[])`
* `M:System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName,System.Reflection.Emit.CustomAttributeBuilder[],System.String)`

### Category
Core

<!-- breaking change id: 74 -->


================================================
FILE: Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md
================================================
## BinaryFormatter can fail to find type from LoadFrom context

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Planned

### Change Description
As of .NET Framework 4.5, a number of <xref:System.Xml.Serialization.XmlSerializer?displayProperty=name>
changes may cause differences in deserialization when using
<xref:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter?displayProperty=name>
to deserialize types that had been loaded in the LoadFrom context. These changes
are due to the new ways <xref:System.Xml.Serialization.XmlSerializer?displayProperty=name>
now loads a type which causes different behavior when a
<xref:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter?displayProperty=name> attempts to
deserialize to that type later on. The default serialization binder does not
automatically search the LoadFrom context, although it may have worked in some
circumstances based on the old behavior of XmlSerializer. Due to the changes,
when a type is being loaded from an assembly loaded in a different context, a
<xref:System.IO.FileNotFoundException?displayProperty=name> may be thrown.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
If this exception is seen, the `Binder` property of the <xref:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter?displayProperty=name> can be set to a custom binder that will find the correct type.

```csharp
var formatter = new BinaryFormatter { Binder = new TypeFinderBinder() }
```

And then the custom binder:
```csharp
public class TypeFinderBinder : SerializationBinder
{
	private static readonly string s_assemblyName = Assembly.GetExecutingAssembly().FullName;

	public override Type BindToType(string assemblyName, string typeName)
	{
		return Type.GetType(String.Format(CultureInfo.InvariantCulture, "{0}, {1}", typeName, s_assemblyName));
	}
}
```

### Affected APIs
* `T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`
* `M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream)`
* `M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler)`

### Category
Serialization

<!-- breaking change id: 147 -->


================================================
FILE: Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md
================================================
## Binding a WPF selector property (such as 'SelectedItem') to a static property does not work

### Scope
Minor

### Version Introduced
4.5

### Version Reverted
4.5

### Source Analyzer Status
Planned

### Change Description
In the .NET Framework 4.5, WPF Selector properties (such as 'SelectedItem' on <xref:System.Windows.Controls.ListBox?displayProperty=name> or <xref:System.Windows.Controls.DataGrid?displayProperty=name>) that are data-bound to static properties do not properly update when their bound property is updated.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This behavior was reverted in a servicing update for the .NET Framework 4.5. To fix this issue, update the .NET Framework 4.5, or upgrade to .NET Framework 4.5.1 or later.

### Affected APIs
* Not detectable via API analysis

### Category
Windows Presentation Foundation (WPF)

[More information](https://social.msdn.microsoft.com/Forums/vstudio/56ff3199-5abc-454e-87f7-bafff43e7422/net-45-critical-selecteditem-not-setting-binding-item?forum=wpf)

<!--
    ### Notes
    We could look for FrameworkElement.SetBinding calls, but this is such a corner case of that (selected properties and static properties) that it would probably be too noisy. A xaml analyzer is probably our best bet, and that's not even going to be perfect
-->

<!-- breaking change id: 99 -->


================================================
FILE: Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md
================================================
## BlockingCollection&lt;T&gt;.TryTakeFromAny does not throw anymore

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description

If one of the input collections is marked completed, <xref:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@)>
no longer returns -1 and
<xref:System.Collections.Concurrent.BlockingCollection`1.TakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@)>
no longer throws an exception. This change makes it possible to work with
collections when one of the collections is either empty or completed, but the
other collection still has items that can be retrieved.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
If TryTakeFromAny returning -1 or TakeFromAny throwing were used for control-flow purposes in cases of a blocking collection being completed, such code should now be changed to use `.Any(b => b.IsCompleted)` to detect that condition.

### Affected APIs
* ``M:System.Collections.Concurrent.BlockingCollection`1.TakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@)``
* ``M:System.Collections.Concurrent.BlockingCollection`1.TakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.Threading.CancellationToken)``
* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@)``
* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.Int32)``
* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.TimeSpan)``
* ``M:System.Collections.Concurrent.BlockingCollection`1.TryTakeFromAny(System.Collections.Concurrent.BlockingCollection{`0}[],`0@,System.TimeSpan)``

### Category
Core

<!-- breaking change id: 18 -->


================================================
FILE: Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md
================================================
## Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit or EntityClean tasks

### Scope
Major

### Version Introduced
4.5.1

### Version Reverted
4.6

### Source Analyzer Status
Available

### Change Description
MSBuild 12.0 tools (included in Visual Studio 2013) changed MSBuild file
locations, causing older Entity Framework targets files to be invalid. The
result is that `EntityDeploySplit` and `EntityClean` tasks fail because they are
unable to find `Microsoft.Data.Entity.Build.Tasks.dll`. Note that this break is
because of a toolset (MSBuild/VS) change, not because of a .NET Framework
change. It will only occur when upgrading developer tools, not when merely
upgrading the .NET Framework.

- [ ] Quirked
- [x] Build-time break

### Recommended Action
Entity Framework targets files are fixed to work with the new MSBuild layout beginning in the .NET Framework 4.6. Upgrading to that version of the Framework will fix this issue. Alternatively, [this workaround](https://stackoverflow.com/a/24249247/131944) can be used to patch the targets files directly.

### Affected APIs
* Not detectable via API analysis

### Category
Entity Framework

[More information](https://stackoverflow.com/questions/20400054/entitydeploysplit-error-microsoft-data-entity-build-tasks-dll-missing/24249247#24249247)

<!-- breaking change id: 109 -->


================================================
FILE: Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md
================================================
## Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguity can be resolved by index's type

### Scope
Edge

### Version Introduced
4.6

### Source Analyzer Status
Available

### Change Description
Prior to the .NET Framework 4.6, calling `GetCustomAttribute(s)` on an indexer
property which differed from another property only by the type of the index
would result in an
<xref:System.Reflection.AmbiguousMatchException?displayProperty=name>. Beginning
in the .NET Framework 4.6, the property's attributes will be correctly returned.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
Be aware that GetCustomAttribute(s) will work more frequently now. If an app was previously relying on the <xref:System.Reflection.AmbiguousMatchException?displayProperty=name>, reflection should now be used to explicitly look for multiple indexers, instead.

### Affected APIs
* `M:System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo,System.Type)`
* `M:System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo,System.Type,System.Boolean)`
* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo)`
* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Boolean)`
* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Type)`
* `M:System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.MemberInfo,System.Type)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.MemberInfo,System.Type,System.Boolean)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute``1(System.Reflection.MemberInfo)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttribute``1(System.Reflection.MemberInfo,System.Boolean)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Boolean)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Type)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes``1(System.Reflection.MemberInfo)`
* `M:System.Reflection.CustomAttributeExtensions.GetCustomAttributes``1(System.Reflection.MemberInfo,System.Boolean)`

### Category
Core

<!-- breaking change id: 112 -->


================================================
FILE: Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md
================================================
## Calling CreateDefaultAuthorizationContext with a null argument has changed

### Scope
Minor

### Version Introduced
4.6

### Source Analyzer Status
Available

### Change Description
The implementation of the <xref:System.IdentityModel.Policy.AuthorizationContext?displayProperty=name>
returned by a call to the
<xref:System.IdentityModel.Policy.AuthorizationContext.CreateDefaultAuthorizationContext(System.Collections.Generic.IList{System.IdentityModel.Policy.IAuthorizationPolicy})?displayProperty=name>
with a null authorizationPolicies argument has changed its implementation in the
.NET Framework 4.6.

- [x] Quirked
- [ ] Build-time break

### Recommended Action
In rare cases, WCF apps that use custom authentication may see behavioral differences. In such cases, the previous behavior can be restored in either of two ways:

1. Recompile your app to target an earlier version of the .NET Framework than 4.6. For IIS-hosted services, use the &lt;httpRuntime targetFramework="x.x" /&gt; element to target an earlier version of the .NET Framework.
2. Add the following line to the `<appSettings>` section of your app.config file: `<add key="appContext.SetSwitch:Switch.System.IdentityModel.EnableCachedEmptyDefaultAuthorizationContext" value="true" />`

### Affected APIs
* `M:System.IdentityModel.Policy.AuthorizationContext.CreateDefaultAuthorizationContext(System.Collections.Generic.IList{System.IdentityModel.Policy.IAuthorizationPolicy})`

### Category
Windows Communication Foundation (WCF)

<!-- breaking change id: 138 -->


================================================
FILE: Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md
================================================
## Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus

### Scope
Edge

### Version Introduced
4.5

### Version Reverted
4.5.2

### Source Analyzer Status
Available

### Change Description
Calling <xref:System.Windows.Controls.DataGrid.CommitEdit>
from one of the <xref:System.Windows.Controls.DataGrid?displayProperty=name>'s
<xref:System.Windows.Controls.DataGrid.CellEditEnding?displayProperty=name>
event handlers causes the <xref:System.Windows.Controls.DataGrid?displayProperty=name>
to lose focus.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This bug has been fixed in the .NET Framework 4.5.2, so it can be avoided by
upgrading the .NET Framework. Alternatively, it can be avoided by explicitly
re-selecting the <xref:System.Windows.Controls.DataGrid?displayProperty=name>
after calling <xref:System.Windows.Controls.DataGrid.CommitEdit?displayProperty=name>.

### Affected APIs
* `M:System.Windows.Controls.DataGrid.CommitEdit`
* `M:System.Windows.Controls.DataGrid.CommitEdit(System.Windows.Controls.DataGridEditingUnit,System.Boolean)`

### Category
Windows Presentation Foundation (WPF)

<!-- breaking change id: 124 -->


================================================
FILE: Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md
================================================
## Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear in the element

### Scope
Minor

### Version Introduced
4.5

### Version Reverted
4.6

### Source Analyzer Status
Available

### Change Description
In the .NET Framework 4.5, calling ListBox.Items.Refresh from code while items
are selected in a <xref:System.Windows.Controls.ListBox?displayProperty=name>
can cause the selected items to be duplicated in the list. A similar issue
occurs with <xref:System.Windows.Controls.ListView?displayProperty=name> and
<xref:System.Windows.Controls.DataGrid?displayProperty=name>. This is fixed in
the .NET Framework 4.6.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This issue may be worked around by programatically unselecting items before
<xref:System.Windows.Data.CollectionView.Refresh?displayProperty=name> is called
and then re-selecting them after the call is completed. Alternatively, this
issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading
to that version of the .NET Framework.

### Affected APIs
* `M:System.Windows.Data.CollectionView.Refresh`

### Category
Windows Presentation Foundation (WPF)

[More information](http://connect.microsoft.com/VisualStudio/feedback/details/873075/on-net-4-5-the-selected-items-in-a-wpf-listbox-listview-control-are-incorrect-when-items-refresh-is-called-from-code-behind)

<!-- breaking change id: 104 -->


================================================
FILE: Documentation/compatibility/calls-to-claimsidentity-constructors.md
================================================
## Calls to ClaimsIdentity constructors

### Scope
Edge

### Version Introduced
4.6.2

### Source Analyzer Status
Investigating

### Change Description
Starting with the .NET Framework 4.6.2, there is a change in how <xref:System.Security.Claims.ClaimsIdentity>
constructors with an <xref:System.Security.Principal.IIdentity?displayProperty=name>
parameter set the <xref:System.Security.Claims.ClaimsIdentity.Actor?displayProperty=name>
property. If the <xref:System.Security.Principal.IIdentity?displayProperty=name>
argument is a <xref:System.Security.Claims.ClaimsIdentity>
object, and the <xref:System.Security.Claims.ClaimsIdentity.Actor?displayProperty=name>
property of that <xref:System.Security.Claims.ClaimsIdentity>
object is not `null`, the <xref:System.Security.Claims.ClaimsIdentity.Actor?displayProperty=name>
property is attached by using the <xref:System.Security.Claims.ClaimsIdentity.Clone>
method. In the Framework 4.6.1 and earlier versions, the
<xref:System.Security.Claims.ClaimsIdentity.Actor?displayProperty=name>
property is attached as an existing reference.

Because of this change, starting with the .NET Framework 4.6.2, the
<xref:System.Security.Claims.ClaimsIdentity.Actor?displayProperty=name> property
of the new <xref:System.Security.Claims.ClaimsIdentity>
object is not equal to the <xref:System.Security.Claims.ClaimsIdentity.Actor?displayProperty=name>
property of the constructor's <xref:System.Security.Principal.IIdentity?displayProperty=name>
argument. In the .NET Framework 4.6.1 and earlier versions, it is equal.

- [X] Quirked
- [ ] Build-time break

### Recommended Action
If this behavior is undesirable, you can restore the previous behavior by setting
the `Switch.System.Security.ClaimsIdentity.SetActorAsReferenceWhenCopyingClaimsIdentity`
switch in your application configuration file to `true`. This requires that you
add the following to the `<runtime>` section of your web.config file:

   ```xml
   <configuration>
      <runtime>
         <AppContextSwitchOverrides value="Switch.System.Security.ClaimsIdentity.SetActorAsReferenceWhenCopyingClaimsIdentity=true" />
      </runtime>
   </configuration>
   ```

### Affected APIs
- `M:System.Security.Claims.ClaimsIdentity.#ctor(System.Security.Principal.IIdentity)`
- `M:System.Security.Claims.ClaimsIdentity.#ctor(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable{System.Security.Claims.Claim})`
- `M:System.Security.Claims.ClaimsIdentity.#ctor(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable{System.Security.Claims.Claim},System.String,System.String,System.String)`

### Category
Core

<!--
    ### Original Bug
    227024
-->

<!-- breaking change id: 164 -->


================================================
FILE: Documentation/compatibility/certificate-eku-oid-validation.md
================================================
## Certificate EKU OID validation

### Scope
Minor

### Version Introduced
4.6

### Source Analyzer Status
NotPlanned

### Change Description

Starting with .NET Framework 4.6, the <xref:System.Net.Security.SslStream> or <xref:System.Net.ServicePointManager> classes perform enhanced key use (EKU) object identifier (OID) validation. An enhanced key usage (EKU) extension is a collection of object identifiers (OIDs) that indicate the applications that use the key. EKU OID validation uses remote certificate callbacks to ensure that the remote certificate has the correct OIDs for the intended purpose.

- [X] Quirked
- [ ] Build-time break

### Recommended Action

If this change is undesirable, you can disable certificate EKU OID validation by adding the following switch to the [`\<AppContextSwitchOverrides>` element](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) in the [`\<runtime> section](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) of your app configuration file:

```xml
<runtime>
   <AppContextSwitchOverrides
          value="Switch.System.Net.DontCheckCertificateEKUs=true" />
</runtime>
```
> [!IMPORTANT]
> This setting is provided for backward compatibility only. Its use is otherwise not recommended.


### Affected APIs
* `T:System.Net.Security.SslStream`
* `T:System.Net.ServicePointManager`
* `T:System.Net.Http.HttpClient`
* `T:System.Net.Mail.SmtpClient`
* `T:System.Net.HttpWebRequest`
* `T:System.Net.FtpWebRequest`

### Category
Networking

<!--
    ### Original Bug #364538
-->




================================================
FILE: Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md
================================================
## Change in behavior for Task.WaitAll methods with time-out arguments

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description
<xref:System.Threading.Tasks.Task.WaitAll%2A?displayProperty=nameWithType> behavior was made more consistent in .NET Framework 4.5.

In the .NET Framework 4, these methods behaved inconsistently. When the time-out
expired, if one or more tasks were completed or canceled before the method call,
the method threw an <xref:System.AggregateException?displayProperty=name>
exception. When the time-out expired, if no tasks were completed or canceled
before the method call, but one or more tasks entered these states after the
method call, the method returned false.<br/><br/>In the .NET Framework 4.5,
these method overloads now return false if any tasks are still running when the
time-out interval expired, and they throw an
<xref:System.AggregateException?displayProperty=name> exception only if an input
task was cancelled (regardless of whether it was before or after the method
call) and no other tasks are still running.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
If an <xref:System.AggregateException?displayProperty=name> was being caught as a means of detecting a task that was cancelled prior to the <xref:System.Threading.Tasks.Task.WaitAll%2A> call being invoked, that code should instead do the same detection via the  <xref:System.Threading.Tasks.Task.IsCanceled%2A> property (for example: .Any(t =&gt; t.IsCanceled)) since .NET Framework 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout.

### Affected APIs
* `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32)`
* `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32,System.Threading.CancellationToken)`
* `M:System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.TimeSpan)`

### Category
Core

<!-- breaking change id: 26 -->


================================================
FILE: Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md
================================================
## Change in behavior in Data Definition Language (DDL) APIs

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description
The behavior of DDL APIs when AttachDBFilename is specified has changed as follows:
* Connection strings need not specify an Initial Catalog value. Previously, both AttachDBFilename and Initial Catalog were required.
* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, the <xref:System.Data.Objects.ObjectContext.DatabaseExists%2A> method returns `true`. Previously, it returned `false`.
* If both AttachDBFilename and Initial Catalog are specified and the given MDF file exists, calling the <xref:System.Data.Objects.ObjectContext.DeleteDatabase%2A> method deletes the files.
* If <xref:System.Data.Objects.ObjectContext.DeleteDatabase%2A> is called when the connection string specifies an AttachDBFilename value with an MDF that doesn't exist and an Initial Catalog that doesn't exist, the method throws an <xref:System.InvalidOperationException> exception. Previously, it threw a <xref:System.Data.SqlClient.SqlException> exception.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
These changes make it easier to build tools and applications that use the DDL APIs. These changes can affect application compatibility in the following scenarios:
- The user writes code that executes a `DROP DATABASE` command directly instead of calling <xref:System.Data.Objects.ObjectContext.DeleteDatabase%2A> if <xref:System.Data.Objects.ObjectContext.DatabaseExists%2A> returns `true`. This breaks existing code If the database is not attached but the MDF file exists.
- The user writes code that expects the <xref:System.Data.Objects.ObjectContext.DeleteDatabase%2A> method to throw a <xref:System.Data.SqlClient.SqlException> rather than an <xref:System.InvalidOperationException> when the Initial Catalog and MDF file don't exist.

### Affected APIs
* Not detectable via API analysis

### Category
Entity Framework

<!-- breaking change id: 27 -->


================================================
FILE: Documentation/compatibility/change-in-path-separator-character-in-zip-files.md
================================================
## Change in path separator character in FullName property of ZipArchiveEntry objects

### Scope
Edge

### Version Introduced
4.6.1

### Source Analyzer Status
Planned

### Change Description
For apps that target the .NET Framework 4.6.1 and later versions, the path separator character has changed from a backslash ("\\") to a forward slash ("/") in the <xref:System.IO.Compression.ZipArchiveEntry.FullName> property of <xref:System.IO.Compression.ZipArchiveEntry>  objects created by overloads of the <xref:System.IO.Compression.ZipFile.CreateFromDirectory%2A> method. The change brings the .NET implementation into conformity with section 4.4.17.1 of the [.ZIP File Format Specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and allows .ZIP archives to be decompressed on non-Windows systems.<br />

Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\\") characters, and the filename. As a result, the directory structure of decompressed files is not preserved.


- [X] Quirked
- [ ] Build-time break

### Recommended Action

The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework <xref:System.IO?displayProperty=nameWithType> namespace should be minimal, since these APIs can seamlessly handle either a forward slash ("/") or a backslash ("\\") as the path separator character.<br />

If this change is undesirable, you can opt out of it by adding a configuration setting to the [\<runtime>](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file. The following example shows both the `<runtime>` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-out switch:

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=true" />
</runtime>
```

In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the [\<runtime>](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of the application configuration file. The following shows both the `<runtime>` section and the `Switch.System.IO.Compression.ZipFile.UseBackslash` opt-in switch.

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=false" />
</runtime>
```

### Affected APIs
* `M:System.IO.Compression.ZipFile.CreateFromDirectory(System.String,System.String)`
* `M:System.IO.Compression.ZipFile.CreateFromDirectory(System.String,System.String,System.IO.Compression.CompressionLevel,System.Boolean)`
* `M:System.IO.Compression.ZipFile.CreateFromDirectory(System.String,System.String,System.IO.Compression.CompressionLevel,System.Boolean,System.Text.Encoding)`

### Category
Core

<!-- breaking change id: 188 -->




================================================
FILE: Documentation/compatibility/changes-in-path-normalization.md
================================================
## Changes in path normalization

### Scope
Minor

### Version Introduced
4.6.2

### Source Analyzer Status
Investigating

### Change Description
Starting with apps that target the .NET Framework 4.6.2, the way in which the
runtime normalizes paths has changed.

Normalizing a path involves modifying the string that identifies a path or file
so that it conforms to a valid path on the target operating system.
Normalization typically involves:

- Canonicalizing component and directory separators.
- Applying the current directory to a relative path.
- Evaluating the relative directory (.) or the parent directory (..) in a path.
- Trimming specified characters.

Starting with apps that target the .NET Framework 4.6.2, the following changes
in path normalization are enabled by default:

- The runtime defers to the operating system's [GetFullPathName](https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-getfullpathnamew) function to normalize paths.
- Normalization no longer involves trimming the end of directory segments (such as a space at the end of a directory name).
- Support for device path syntax in full trust, including `\\.\` and, for file I/O APIs in mscorlib.dll, `\\?\`.
- The runtime does not validate device syntax paths.
- The use of device syntax to access alternate data streams is supported.

These changes improve performance while allowing methods to access previously inaccessible paths.
Apps that target the .NET Framework 4.6.1 and earlier versions but are running under the .NET Framework 4.6.2 or later are unaffected by this change.

- [X] Quirked
- [ ] Build-time break

### Recommended Action
Apps that target the .NET Framework 4.6.2 or later can opt out of this change and use legacy normalization by adding the following to the `<runtime>` section of the application configuration file:

   ```xml
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
   </runtime>
   ```

Apps that target the .NET Framework 4.6.1 or earlier but are running on the .NET Framework 4.6.2 or later can enable the changes to path normalization by adding the following line to the `<runtime>` section of the application .configuration file:

   ```xml
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
   </runtime>
   ```

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!--
    ### Original Bug
    195340
-->

<!-- breaking change id: 163 -->


================================================
FILE: Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md
================================================
## Changing the IsEnabled property of the parent of a TextBlock control affects any child controls

### Scope
Minor

### Version Introduced
4.6.2

### Source Analyzer Status
Investigating

### Change Description
Starting with the .NET Framework 4.6.2, changing the
<xref:System.Windows.UIElement.IsEnabled?displayProperty=name> property of the
parent of a <xref:System.Windows.Controls.TextBlock?displayProperty=name>
control affects any child controls (such as hyperlinks and buttons) of the
<xref:System.Windows.Controls.TextBlock?displayProperty=name> control.

In the .NET Framework 4.6.1 and earlier versions, controls inside a
<xref:System.Windows.Controls.TextBlock?displayProperty=name> did not always
reflect the state of the
<xref:System.Windows.UIElement.IsEnabled?displayProperty=name> property of the
<xref:System.Windows.Controls.TextBlock?displayProperty=name> parent.

- [ ] Quirked
- [ ] Build-time break 

### Recommended Action
None. This change conforms to the expected behavior for controls inside a <xref:System.Windows.Controls.TextBlock?displayProperty=name> control.

### Affected APIs
- `P:System.Windows.UIElement.IsEnabled`

### Category
Windows Presentation Foundation (WPF)

<!--
    ### Original Bug
    213267
-->

<!-- breaking change id: 161 -->


================================================
FILE: Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md
================================================
## ClickOnce supports SHA-256 on 4.0-targeted apps

### Scope
Minor

### Version Introduced
4.6

### Source Analyzer Status
Planned

### Change Description
Previously, a ClickOnce app with a certificate signed with SHA-256 would require
.NET Framework 4.5 or later to be present, even if the app targeted 4.0. Now, .NET Framework 4.0-targeted
ClickOnce apps can run on .NET Framework 4.0, even if signed with SHA-256.

- [ ] Quirked
- [x] Build-time break

### Recommended Action
This change removes that dependency and allows SHA-256 certificates to be used
to sign ClickOnce apps that target .NET Framework 4 and earlier versions.

### Affected APIs
* Not detectable via API analysis

### Category
ClickOnce

<!--
    ### Notes
    We could possibly detect this by analyzing ClickOnce manifests and looking for SHA-256 certs.
-->

<!-- breaking change id: 79 -->


================================================
FILE: Documentation/compatibility/clr_critical_section_spin_wait_removal.md
================================================
## CLR critical section spin-wait removal

### Scope

Transparent

### Version Introduced
4.8

### Source Analyzer Status

NotPlanned

### Change Description

By default, when a thread cannot acquire a critical section, it spin-waits for a while before blocking the thread unless it can acquire the critical section. This behavior can lead to poor scalability.

Starting with applications running under .NET Framework 4.8, it is possible to disable the spin-waiting. This is an opt-in behavior; spin-waiting when a critical section cannot be acquired is the default behavior on all versions of the .NET Framework.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

You can disable the default behavior of spin-waiting when a critical section cannot be acquired, in one of the following ways:

By setting the following environment variable before starting the process:
  `COMPlus_Crst_DisableSpinWait=1`

By including the runtime configuration option in <app>.exe.config. Example:
  ```xml
  <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
    <runtime>
      <Crst_DisableSpinWait enabled="1"/>
    </runtime>
  </configuration>
  ```

### Affected APIs

None


================================================
FILE: Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md
================================================
## Contract.Invariant or Contract.Requires\<TException> do not consider String.IsNullOrEmpty to be pure

### Scope
Minor

### Version Introduced
4.6.1

### Source Analyzer Status
Investigating

### Change Description
For apps that target the .NET Framework 4.6.1, if the invariant contract for <xref:System.Diagnostics.Contracts.Contract.Invariant%2A?displayProperty=nameWithType> or the precondition contract for <xref:System.Diagnostics.Contracts.Contract.Requires%2A?displayProperty=nameWithType)> calls the <xref:System.String.IsNullOrEmpty%2A?displayProperty=nameWithType> method, the rewriter emits compiler warning CC1036: "Detected call to method 'System.String.IsNullOrWhteSpace(System.String)' without [Pure] in method." This is a compiler warning rather than a compiler error.

- [ ] Quirked 
- [ ] Build-time break 

### Recommended Action

This behavior was addressed in [GitHub Issue #339](https://github.com/Microsoft/CodeContracts/issues/339). To eliminate this warning, you can download and compile an updated version of the source code for the Code Contracts tool from [GitHub](https://github.com/Microsoft/CodeContracts/blob/master/README.md). Download information is found at the bottom of the page.

### Affected APIs
- M:System.Diagnostics.Contracts.Contract.Invariant(System.Boolean)   
- M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean)

### Category
Tools

<!-- breaking change id: 189 -->


================================================
FILE: Documentation/compatibility/coerceisselectionboxhighlighted.md
================================================
## CoerceIsSelectionBoxHighlighted

### Scope
Minor

### Version Introduced
4.6

### Version Reverted
4.6.2

### Source Analyzer Status
Planned

### Change Description
Certain sequences of actions involving a <xref:System.Windows.Controls.ComboBox?displayProperty=name>
and its data source can result in a <xref:System.NullReferenceException?displayProperty=name>.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
If possible, upgrade to .NET Framework 4.6.2.

### Affected APIs
* `P:System.Windows.Controls.ComboBox.IsSelectionBoxHighlighted`

### Category
Windows Presentation Foundation (WPF)

<!--
    ### Original Bug
    125219
-->

<!-- breaking change id: 179 -->


================================================
FILE: Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md
================================================
## Compiler support for type forwarding when multi-targeting mscorlib

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Not planned

### Change Description
A new CodeDOM feature allows a compiler to compile against the targeted version
of mscorlib.dll instead of the .NET Framework 4.5 version of mscorlib.dll.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action This change prevents compiler warnings (and compilation
failure in cases where warnings are treated as errors) when CodeDOM finds two
definitions for types that have been type-forwarded. This change may have
unintended side effects only if different versions of reference assemblies are
mixed in a single location.

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!-- breaking change id: 56 -->


================================================
FILE: Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md
================================================
## ConcurrentQueue&lt;T&gt;.TryPeek can return an erroneous null via its out parameter

### Scope
Major

### Version Introduced
4.5

### Version Reverted
4.5.1

### Source Analyzer Status
Available

### Change Description
In some multi-threaded scenarios,
<xref:System.Collections.Concurrent.ConcurrentQueue`1.TryPeek(`0@)?displayProperty=name>
can return true, but populate the out parameter with a null value (instead of
the correct, peeked value).

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This issue is fixed in the .NET Framework 4.5.1. Upgrading to that Framework will solve the issue.

### Affected APIs
* ``M:System.Collections.Concurrent.ConcurrentQueue`1.TryPeek(`0@)``

### Category
Core

[More information](http://connect.microsoft.com/VisualStudio/feedback/details/762273/bug-in-concurrentqueue-in-net-4-5-trypeek-returns-true-but-no-real-object-returned)

<!-- breaking change id: 95 -->


================================================
FILE: Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md
================================================
## Connection pool blocking period for Azure SQL databases is removed

### Scope
Minor

### Version Introduced
4.6.2

### Source Analyzer Status
Investigating

### Change Description
Starting with the .NET Framework 4.6.2, for connection open requests to known
Azure SQL databases (\*.database.windows.net, \*.database.chinacloudapi.cn,
\*.database.usgovcloudapi.net, \*.database.cloudapi.de), the connection pool
blocking period is removed, and connection open errors are not cached. Attempts
to retry connection open requests will occur almost immediately after transient
connection errors. This change allows the connection open attempt to be retried
immediately for Azure SQL databases, thereby improving the performance of cloud-
enabled apps. For all other connection attempts, the connection pool blocking
period continues to be enforced.<p/>

In the .NET Framework 4.6.1 and earlier versions, when an app encounters a
transient connection failure when connecting to a database, the connection
attempt cannot be retried quickly, because the connection pool caches the error
and re-throws it for 5 seconds to 1 minute. For more information, see
[SQL Server Connection Pooling (ADO.NET)](~/docs/framework/data/adonet/sql-server-connection-pooling.md).
This behavior is problematic for connections to Azure SQL databases, which often
fail with transient errors that are typically recovered from within a few
seconds. The connection pool blocking feature means that the app cannot connect
to the database for an extensive period, even though the database is available
and the app needs to render within a few seconds.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

If this behavior is undesirable, the connection pool blocking period can be
configured by setting the <xref:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod?displayProperty=name>
property introduced in the .NET Framework 4.6.2. The value of the property is a
member of the
<xref:System.Data.SqlClient.PoolBlockingPeriod?displayProperty=name> enumeration
that can take either of three values:

- <xref:System.Data.SqlClient.PoolBlockingPeriod.AlwaysBlock>
- <xref:System.Data.SqlClient.PoolBlockingPeriod.Auto>
- <xref:System.Data.SqlClient.PoolBlockingPeriod.NeverBlock>

The previous behavior can be restored by setting the
<xref:System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod?displayProperty=name>
property to <xref:System.Data.SqlClient.PoolBlockingPeriod.AlwaysBlock>.

### Affected APIs
- `M:System.Data.Common.DbConnection.OpenAsync`
- `M:System.Data.SqlClient.SqlConnection.Open`
- `M:System.Data.SqlClient.SqlConnection.OpenAsync(System.Threading.CancellationToken)`

### Category
Data

<!--
    ### Original Bug
    213479
-->

<!-- breaking change id: 160 -->


================================================
FILE: Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md
================================================
## ContentDisposition DateTimes returns slightly different string

### Scope
Minor

### Version Introduced
4.6

### Source Analyzer Status
Available

### Change Description

String representations of
<xref:System.Net.Mime.ContentDisposition?displayProperty=name>'s have been
updated, beginning in 4.6, to always represent the hour component of a
<xref:System.DateTime?displayProperty=name> with two digits. This is to comply
with [RFC822](https://www.ietf.org/rfc/rfc0822.txt) and
[RFC2822](https://www.ietf.org/rfc/rfc2822.txt). This causes
<xref:System.Net.Mime.ContentDisposition.ToString>
to return a slightly different string in 4.6 in scenarios where one of the
disposition's time elements was before 10:00 AM. Note that
ContentDispositions are sometimes serialized via converting them to strings,
so any <xref:System.Net.Mime.ContentDisposition.ToString>
operations, serialization, or GetHashCode calls should be reviewed.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

Do not expect that string representations of ContentDispositions from different
.NET Framework versions will correctly compare to one another. Convert the
strings back to ContentDispositions, if possible, before conducting a
comparison.

### Affected APIs
* `M:System.Net.Mime.ContentDisposition.ToString`
* `M:System.Net.Mime.ContentDisposition.GetHashCode`

### Category
Networking

<!-- breaking change id: 78 -->


================================================
FILE: Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md
================================================
## COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers

### Scope
Minor

### Version Introduced
4.5.1

### Version Reverted
4.6

### Source Analyzer Status
Not planned

### Change Description

In the .NET Framework v4.5.1, the profiling API `RootReferences2()` is incorrectly never returning `COR_PRF_GC_ROOT_HANDLE` (they are returned as `COR_PRF_GC_ROOT_OTHER` instead). This issue is fixed beginning in the .NET Framework 4.6.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework.

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!--
    ### Notes
    Native code analysis needed. Also, this could be categorized as 'profiling' but I chose to call it 'core' because there are no other profiling issues. We can add that category in the future if enough issues crop up to justify it.
-->

<!-- breaking change id: 117 -->


================================================
FILE: Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md
================================================
## Managed cryptography classes do not throw a CryptographyException in FIPS mode

### Scope
Edge

### Version Introduced
4.8

### Source Analyzer Status
NotPlanned

### Change Description

In .NET Framework 4.7.2 and earlier versions, managed cryptographic provider classes such as <xref:System.Security.Cryptography.SHA256Managed> throw a <xref:System.Security.Cryptography.CryptographicException> when the system cryptographic libraries are configured in FIPS mode. These exceptions are thrown because the managed versions have not undergone FIPS (Federal Information Processing Standards) 140-2 certification, as well as to block cryptographic algorithms that were not considered to be approved based on the FIPS rules.  Because few developers have their development machines in FIPS mode, these exceptions are frequently thrown only on production systems. 

Applications that target .NET Framework 4.8 and later versions automatically switch to the newer, relaxed policy, so that a <xref:System.Security.Cryptography.CryptographicException> is no longer thrown by default in such cases. Instead, the managed cryptography classes redirect cryptographic operations to a system cryptography library. This policy change effectively removes a potentially confusing difference between developer environments and the production environments and makes native components and managed components operate under the same cryptographic policy.

- [X] Quirked
- [ ] Build-time break

### Recommended Action

If this behavior is undesirable, you can opt out of it and restore the previous behavior so that a <xref:System.Security.Cryptography.CryptographicException> is thrown in FIPS mode by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [\<runtime>](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file:

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=true" />
</runtime>
```

If your application targets .NET Framework 4.7.2 or earlier, you can also opt in to this change by adding the following [AppContextSwitchOverrides](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) configuration setting to the [\<runtime>](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your application configuration file:

```xml
<runtime>
   <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
```

### Affected APIs

* `T:System.Security.Cryptography.AesManaged`
* `T:System.Security.Cryptography.MD5Cng`
* `T:System.Security.Cryptography.MD5CryptoServiceProvider`
* `T:System.Security.Cryptography.RC2CryptoServiceProvider`
* `T:System.Security.Cryptography.RijndaelManaged`
* `T:System.Security.Cryptography.RIPEMD160Managed`
* `T:System.Security.Cryptography.SHA1Managed`
* `T:System.Security.Cryptography.SHA256Managed`

### Category
Core

<!--
    ### Original Bug
    Bug link goes here
-->


================================================
FILE: Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md
================================================
## CspParameters.ParentWindowHandle now expects HWND value

### Scope
Minor

### Version Introduced
4.7

### Source Analyzer Status
Investigating

### Change Description

The <xref:System.Security.Cryptography.CspParameters.ParentWindowHandle>
value, introduced in .NET Framework 2.0, allows an application to register a
parent window handle value such that any UI required to access the key (such as
a PIN prompt or consent dialog) opens as a modal child to the specified window.

Starting with apps that target the .NET Framework 4.7, a Windows Forms
application can set the <xref:System.Security.Cryptography.CspParameters.ParentWindowHandle>
property with code like the following:

```csharp
cspParameters.ParentWindowHandle = form.Handle;
```

In previous versions of the .NET Framework, the value was expected to be an <xref:System.IntPtr?displayProperty=name>
representing a location in memory where the
[HWND](https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types#HWND) value resided.
Setting the property to form.Handle on Windows 7 and earlier versions had no
effect, but on Windows 8 and later versions, it results in a
"<xref:System.Security.Cryptography.CryptographicException?displayProperty=name>: The parameter is incorrect."

- [X] Quirked
- [ ] Build-time break

### Recommended Action
Applications targeting .NET Framework 4.7 or higher wishing to register a parent window relationship are encouraged to use the simplified form:

```csharp
cspParameters.ParentWindowHandle = form.Handle;
```

Users who had identified that the correct value to pass was the address of a memory location which held the value `form.Handle` can opt out of the
behavior change by setting the AppContext switch `Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle` to `true`:

1. By programmatically setting compat switches on the AppContext, as explained [here](https://devblogs.microsoft.com/dotnet/net-announcements-at-build-2015/#dotnet46).
2. By adding the following line to the `<runtime>` section of the app.config file:

```xml
<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.DoNotAddrOfCspParentWindowHandle=true"/>
</runtime>
```

Conversely, users who wish to opt in to the new behavior on the .NET Framework 4.7 runtime when the application loads under older .NET Framework versions
can set the AppContext switch to `false`.

### Affected APIs
* `P:System.Security.Cryptography.CspParameters.ParentWindowHandle`

### Category
Security

<!-- breaking change id: 178 -->


================================================
FILE: Documentation/compatibility/currentculture-flows-across-tasks.md
================================================
## CurrentCulture and CurrentUICulture flow across tasks

### Scope
Minor

### Version Introduced
4.6

### Version Reverted
4.6.2

### Source Analyzer Status
Planned

### Change Description

Beginning in the .NET Framework 4.6,
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> and
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
are stored in the thread's
<xref:System.Threading.ExecutionContext?displayProperty=name>, which flows
across asynchronous operations.

This means that changes to <xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name>
or <xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
will be reflected in tasks which are later run asynchronously. This is different
from the behavior of previous .NET Framework versions (which would reset
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name>
and <xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
in all asynchronous tasks).

- [x] Quirked
- [ ] Build-time break

### Recommended Action
Apps affected by this change may work around it by explicitly setting the desired <xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> or
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
as the first operation in an async Task. Alternatively, the old behavior (of not
flowing <xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name>/<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>)
may be opted into by setting the following compatibility switch:

```csharp
AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true);
```

This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed
in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/kb/3139549).
Applications targeting .NET Framework 4.6 or later will automatically get the right
behavior in WPF applications -
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name>/<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>)
would be preserved across Dispatcher operations.

### Affected APIs
* `M:System.Globalization.CultureInfo.set_CurrentCulture(System.Globalization.CultureInfo)`
* `M:System.Threading.Thread.set_CurrentCulture(System.Globalization.CultureInfo)`
* `M:System.Globalization.CultureInfo.set_CurrentUICulture(System.Globalization.CultureInfo)`
* `M:System.Threading.Thread.set_CurrentUICulture(System.Globalization.CultureInfo)`

### Category
Core

[More information](https://docs.microsoft.com/dotnet/api/system.globalization.cultureinfo#Async)

<!-- breaking change id: 146 -->


================================================
FILE: Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md
================================================
## CurrentCulture is not preserved across WPF Dispatcher operations

### Scope
Minor

### Version Introduced
4.6

### Version Reverted
4.6.2

### Source Analyzer Status
Planned

### Change Description

Beginning in the .NET Framework 4.6, changes to
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> or
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
made within a <xref:System.Windows.Threading.Dispatcher?displayProperty=name>
will be lost at the end of that dispatcher operation. Similarly, changes to
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> or
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
made outside of a Dispatcher operation may not be reflected when that operation
executes.

Practically speaking, this means that
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> and
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
changes may not flow between WPF UI callbacks and other code in a WPF
application.

This is due to a change in
<xref:System.Threading.ExecutionContext?displayProperty=name> that causes
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> and
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name> to
be stored in the execution context beginning with apps targeting the .NET
Framework 4.6. WPF dispatcher operations store the execution context used to
begin the operation and restore the previous context when the operation is
completed. Because
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> and
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
are now part of that context, changes to them within a dispatcher operation are
not persisted outside of the operation.

- [x] Quirked
- [ ] Build-time break

### Recommended Action

Apps affected by this change may work around it by storing the desired
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> or
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name> in
a field and checking in all Dispatcher operation bodies (including UI event
callback handlers) that the correct
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name> and
<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>
are set. Alternatively, because the ExecutionContext change underlying this WPF
change only affects apps targeting the .NET Framework 4.6 or newer, this break
can be avoided by targeting the .NET Framework 4.5.2.

Apps that target .NET Framework 4.6 or later can also work around this by
setting the following compatibility switch:

    ```csharp
    AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true);
    ```

This issue has been fixed by WPF in .NET Framework 4.6.2. It has also been fixed
in .NET Frameworks 4.6, 4.6.1 through [KB 3139549](https://support.microsoft.com/kb/3139549).
Applications targeting .NET Framework 4.6 or later will automatically
get the right behavior in WPF applications -
<xref:System.Globalization.CultureInfo.CurrentCulture?displayProperty=name>/<xref:System.Globalization.CultureInfo.CurrentUICulture?displayProperty=name>)
would be preserved across Dispatcher operations.

### Affected APIs
* Not detectable via API analysis

### Category
Windows Presentation Foundation (WPF)

<!--
    ### Notes
    This issue is not marked as detectable via API analysis because simply looking for CurrentCulture or CurrentUICulture being set is insufficient in most cases - it must be done in a WPF app.
    Also, looking for WPF Dispatcher invocations is insufficient because many dispatcher invocations are automatic and, besides that, there is no way to know if CurrentCulture or CurrentUICulture matters for those dispatchers.
-->

<!-- breaking change id: 145 -->


================================================
FILE: Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md
================================================
## Data written to PrintSystemJobInfo.JobStream must be in XPS format

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
NotPlanned

### Change Description
The <xref:System.Printing.PrintSystemJobInfo.JobStream> property exposes the stream of a print job. The user can send raw data to the underlying operating system printing components by writing to this stream.

Starting with the .NET Framework 4.5 on Windows 8 and later versions of the Windows operating system, data written to this stream must be in XPS format as a package stream.
  
- [ ] Quirked 
- [ ] Build-time break

### Recommended Action

To output print content, you can do either of the following:

- Use the <xref:System.Windows.Xps.XpsDocumentWriter> class to output print content. This is the recommended alternative.

- Ensure that the data sent to the stream returned by the <xref:System.Printing.PrintSystemJobInfo.JobStream> property is in XPS format as a package stream.  

### Affected APIs
* `P:System.Printing.PrintSystemJobInfo.JobStream`

### Category
Printing

<!--
    ### Original Bug
    Bug link goes here
-->




================================================
FILE: Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md
================================================
## DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException

### Scope
Edge

### Version Introduced
4.6.2

### Version Reverted
4.7

### Source Analyzer Status
NotPlanned

### Change Description

<xref:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object)>
will work asynchronously when column virtualization is enabled but the column
widths have not yet been determined.  If columns are removed before the
asynchronous work happens, an
<xref:System.ArgumentOutOfRangeException?displayProperty=name> can occur.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

Any one of the following:
1. Upgrade to .NET Framework 4.7.
2. Install the latest servicing patch for .NET Framework 4.6.2.
3. Avoid removing columns until the asynchronous response to <xref:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object)> has completed.

### Affected APIs
- `M:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object)`
- `M:System.Windows.Controls.DataGrid.ScrollIntoView(System.Object,System.Windows.Controls.DataGridColumn)`

### Category
Windows Presentation Foundation (WPF)

<!--
Original Bug: 272673
-->

<!-- breaking change id: 151 -->


================================================
FILE: Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md
================================================
## DataObject.GetData now retrieves data as UTF-8

### Scope
Edge

### Version Introduced
4.5.2

### Source Analyzer Status
Available

### Change Description

For apps that target the .NET Framework 4 or that run on the .NET Framework
4.5.1 or earlier versions, `DataObject.GetData` retrieves HTML-formatted data as
an ASCII string. As a result, non-ASCII characters (characters whose ASCII codes
are greater than 0x7F) are represented by two random characters.<p/>

For apps that target the .NET Framework 4.5 or later and run on the .NET
Framework 4.5.2, `DataObject.GetData` retrieves HTML-formatted data as UTF-8,
which represents characters greater than 0x7F correctly.

- [x] Quirked
- [ ] Build-time break

### Recommended Action

If you implemented a workaround for the encoding problem with HTML-formatted
strings (for example, by explicitly encoding the HTML string retrieved from the
Clipboard by passing it to
<xref:System.Text.UTF8Encoding.GetString(System.Byte[],System.Int32,System.Int32)?displayProperty=name>)
and you're retargeting your app from version 4 to 4.5, that workaround should be
removed.

If the old behavior is needed for some reason, the app can target the .NET Framework 4.0 to get that behavior.

### Affected APIs
* `M:System.Windows.DataObject.GetData(System.String)`
* `M:System.Windows.DataObject.GetData(System.Type)`
* `M:System.Windows.DataObject.GetData(System.String,System.Boolean)`

### Category
Windows Forms

<!--
    ### Notes
    Don't know what data they're getting. Can give an informational diagnostic if we see the GetData APIs called, though.
-->

<!-- breaking change id: 73 -->


================================================
FILE: Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md
================================================
## DbParameter.Precision and DbParameter.Scale are now public virtual members

### Scope
Minor

### Version Introduced
4.5.1

### Source Analyzer Status
Available

### Change Description

<xref:System.Data.Common.DbParameter.Precision> and <xref:System.Data.Common.DbParameter.Scale>
are implemented as public virtual properties. They replace the corresponding
explicit interface implementations,
<xref:System.Data.Common.DbParameter.System#Data#IDbDataParameter#Precision> and
<xref:System.Data.Common.DbParameter.System#Data#IDbDataParameter#Scale>.

- [ ] Quirked
- [x] Build-time break

### Recommended Action

When re-building an ADO.NET database provider, these differences will require
the 'override' keyword to be applied to the Precision and Scale properties. This
is only needed when re-building the components; existing binaries will continue
to work.

### Affected APIs
* `P:System.Data.Common.DbParameter.Precision`
* `P:System.Data.Common.DbParameter.Scale`

### Category
ADO.NET

<!-- breaking change id: 68 -->


================================================
FILE: Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md
================================================
## DeflateStream uses native APIs for decompression

### Scope
Minor

### Version Introduced
4.7.2

### Source Analyzer Status
NotPlanned

### Change Description

Starting with the .NET Framework 4.7.2, the implementation of decompression in the `T:System.IO.Compression.DeflateStream` class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement. All .NET applications targeting the .NET Framework version 4.7.2 or higher use the native implementation.

This change might result in some differences in behavior, which include:

- Exception messages may be different. However, the type of exception thrown remains the same.
- Some special situations, such as not having enough memory to complete an operation, may be handled differently.
- There are known differences for parsing gzip header (note: only `GZipStream` set for decompression is affected):
  - Exceptions when parsing invalid headers may be thrown at different times.
  - The native implementation enforces that values for some reserved flags inside the gzip header (i.e. [FLG](http://www.zlib.org/rfc-gzip.html#header-trailer)) are set according to the specification, which may cause it to throw an exception where previously invalid values were ignored.
 
- [X] Quirked 
- [ ] Build-time break 

### Recommended Action

If decompression with native APIs has adversely affected the behavior of your app, you can opt out of this feature by adding the `Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression` switch to the `runtime` section of your app.config file and setting it to `true`:

```xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
       <AppContextSwitchOverrides
          value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=true" />
    </runtime>
</configuration>
```
### Affected APIs
`T:System.IO.Compression.DeflateStream`
`T:System.IO.Compression.GZipStream`

### Category
Core

<!--
    #518398
-->




================================================
FILE: Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md
================================================
## Deserialization of objects across appdomains can fail

### Scope
Edge

### Version Introduced
4.5.1

### Source Analyzer Status
Not planned

### Change Description
In some cases, when an app uses two or more app domains with different application bases, trying to deserialize objects in the logical call context across app domains throws an exception.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
See [Mitigation: Deserialization of Objects Across App Domains](~/docs/framework/migration-guide/mitigation-deserialization-of-objects-across-app-domains.md)

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!-- breaking change id: 67 -->


================================================
FILE: Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md
================================================
## Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description

Beginning in .NET Framework 4.5, if database creation fails, `CreateDatabase` methods will
attempt to drop the empty database. If that operation succeeds, the original
<xref:System.Data.SqlClient.SqlException?displayProperty=name> will be
propagated (instead of the <xref:System.InvalidOperationException?displayProperty=name>
that was always thrown in .NET Framework 4.0)

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
When catching an <xref:System.InvalidOperationException?displayProperty=name>
while executing <xref:System.Data.Objects.ObjectContext.CreateDatabase>
or
<xref:System.Data.Common.DbProviderServices.CreateDatabase(System.Data.Common.DbConnection,System.Nullable{System.Int32},System.Data.Metadata.Edm.StoreItemCollection)>,
SQLExceptions should now also be caught.

### Affected APIs
* `M:System.Data.Objects.ObjectContext.CreateDatabase`
* `M:System.Data.Common.DbProviderServices.CreateDatabase(System.Data.Common.DbConnection,System.Nullable{System.Int32},System.Data.Metadata.Edm.StoreItemCollection)`

### Category
Entity Framework

<!-- breaking change id: 40 -->


================================================
FILE: Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md
================================================
## EF no longer throws for QueryViews with specific characteristics

### Scope
Edge

### Version Introduced
4.5.2

### Source Analyzer Status
Not planned

### Change Description

Entity Framework no longer throws a
<xref:System.StackOverflowException?displayProperty=name> exception when an app
executes a query that involves a QueryView with a 0..1 navigation property that
attempts to include the related entities as part of the query. For example, by
calling `.Include(e => e.RelatedNavProp)`.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

This change only affects code that uses QueryViews with 1-0..1 relationships
when running queries that call .Include. It improves reliability and should be
transparent to almost all apps. However, if it causes unexpected behavior, you
can disable it by adding the following entry to the `<appSettings>` section of
the app's configuration file:

```xml
<add key="EntityFramework_SimplifyUserSpecifiedViews" value="false" />
```

### Affected APIs
* Not detectable via API analysis

### Category
Entity Framework

<!-- breaking change id: 69 -->


================================================
FILE: Documentation/compatibility/ef-version-must-match-netfx-version.md
================================================
## Entity Framework version must match the .NET Framework version

### Scope
Major

### Version Introduced
4.5

### Source Analyzer Status
Planned

### Change Description

The entity framework version should be matched with the .NET framework version.
Entity Framework 5 is recommended for .NET Framework 4.5. There are some known issues with
EF 4.x in a .NET Framework 4.5 project around
<xref:System.ComponentModel.DataAnnotations>. In .NET
4.5, these were moved to a different assembly, so there are issues determining
which annotations to use.

- [ ] Quirked
- [x] Build-time break

### Recommended Action
Upgrade to Entity Framework 5 for .NET Framework 4.5

### Affected APIs
* Not detectable via API analysis

### Category
Entity Framework

[More information](https://forums.asp.net/t/1779042.aspx)

<!-- breaking change id: 25 -->


================================================
FILE: Documentation/compatibility/encoderparameter-ctor-is-obsolete.md
================================================
## EncoderParameter ctor is obsolete

### Scope
Minor

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description
The <xref:System.Drawing.Imaging.EncoderParameter.#ctor(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32)>
constructor is obsolete now and will introduce build warnings if used.

- [ ] Quirked
- [x] Build-time break

### Recommended Action
Although the
<xref:System.Drawing.Imaging.EncoderParameter.#ctor(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32)>

constructor will continue to work, the following constructor should be used
instead to avoid the obsolete build warning when re-compiling code with .NET Framework  4.5
tools:
<xref:System.Drawing.Imaging.EncoderParameter.#ctor(System.Drawing.Imaging.Encoder,System.Int32,System.Drawing.Imaging.EncoderParameterValueType,System.IntPtr)>.

### Affected APIs
* `M:System.Drawing.Imaging.EncoderParameter.#ctor(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32)`

### Category
Windows Forms

<!-- breaking change id: 24 -->


================================================
FILE: Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md
================================================
## EntityFramework 6.0 loads very slowly in apps launched from Visual Studio

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description
Launching an app from Visual Studio 2013 that uses EntityFramework 6.0 can be very slow.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action
This issue is fixed in EntityFramework 6.0.2. Update EntityFramework to avoid the performance issue.

### Affected APIs
* Not detectable via API analysis

### Category
Entity Framework

[More information](https://entityframework.codeplex.com/workitem/1749)

<!-- breaking change id: 91 -->


================================================
FILE: Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md
================================================
## Enumerable.Empty&lt;TResult&gt; always returns cached instance

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description

Beginning in .NET Framework 4.5,
<xref:System.Linq.Enumerable.Empty``1> always
returns a cached internal instance
<xref:System.Collections.Generic.IEnumerable`1>.

Previously, <xref:System.Linq.Enumerable.Empty``1>
would cache an empty
<xref:System.Collections.Generic.IEnumerable`1> at
the time the API was called, meaning that in some conditions in which
<xref:System.Linq.Enumerable.Empty``1> was called
rapidly and concurrently, different instances of the type could be returned for
different calls to the API.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

Because the previous behavior was non-deterministic, code is unlikely to depend
on it. However, in the unlikely case that empty enumerables are being compared
and expected to sometimes be unequal, explicit empty arrays should be created
(`new T[0]`) instead of using
<xref:System.Linq.Enumerable.Empty``1>.

### Affected APIs
* ```M:System.Linq.Enumerable.Empty``1```

### Category
LINQ

<!-- breaking change id: 42 -->


================================================
FILE: Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md
================================================
## Error codes for maxRequestLength or maxReceivedMessageSize are different

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Not planned

### Change Description

Messages in WCF web services hosted in Internet Information Services (IIS) or
ASP.NET Development Server that exceed maxRequestLength (in ASP.NET) or
maxReceivedMessageSize (in WCF) have different error code

The HTTP status code has changed from 400 (Bad Request) to 413 (Request Entity
Too Large), and messages that exceed either the maxRequestLength or the
maxReceivedMessageSize setting throw a
<xref:System.ServiceModel.ProtocolException?displayProperty=name> exception.
This includes cases in which the transfer mode is Streamed.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

This change facilitates debugging in cases where the message length exceeds the
limits allowed by ASP.NET or WCF.

You must modify any code that performs processing based on an HTTP 400 status code.

### Affected APIs
* Not detectable via API analysis

### Category
Windows Communication Foundation (WCF)

<!-- breaking change id: 45 -->


================================================
FILE: Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md
================================================
## ETW event names cannot differ only by a "Start" or "Stop" suffix

### Scope
Edge

### Version Introduced
4.6


### Version Reverted
4.6.2

### Source Analyzer Status
NotPlanned

### Change Description
In the .NET Framework 4.6 and 4.6.1, the runtime throws an <xref:System.ArgumentException> when two Event Tracing for Windows (ETW) event names differ only by a "Start" or "Stop" suffix (as when one event is named `LogUser` and another is named `LogUserStart`). In this case, the runtime cannot construct the event source, which cannot emit any logging.

- [X] Quirked 
- [ ] Build-time break 

### Recommended Action

To prevent the exception, ensure that no two event names differ only by a "Start" or "Stop" suffix.

This requirement is removed starting with the .NET Framework 4.6.2; the runtime can disambiguate event names that differ only by the "Start" and "Stop" suffix.

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!-- breaking change id: 190 -->




================================================
FILE: Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md
================================================
## ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)

### Scope
Edge

### Version Introduced
4.5

### Version Reverted
4.6

### Source Analyzer Status
Available

### Change Description

ETW EventListeners with a blank keyword mask do not properly capture events from
providers with explicit keywords. In the .NET Framework 4.5, the TPL provider
began providing explicit keywords and triggered this issue. In the .NET
Framework 4.6, EventListeners have been updated to no longer have this issue.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

To work around this problem, replace calls to
<xref:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel)>
with calls to the EnableEvents overload that explicitly specifies the "any
keywords" mask to use: `EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff))`.

Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be
addressed by upgrading to that version of the .NET Framework.

### Affected APIs
* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel)`

### Category
Core

[More information](http://connect.microsoft.com/VisualStudio/feedback/details/816989/tpl-etw-events-for-task-not-captured-by-eventlistener-anymore)

<!-- breaking change id: 105 -->


================================================
FILE: Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md
================================================
## EventListener truncates strings with embedded nulls

### Scope
Edge

### Version Introduced
4.5.1

### Source Analyzer Status
Available

### Change Description

<xref:System.Diagnostics.Tracing.EventListener?displayProperty=name> truncates
strings with embedded nulls. Null characters are not supported by the
<xref:System.Diagnostics.Tracing.EventSource?displayProperty=name> class. The
change only affects apps that use
<xref:System.Diagnostics.Tracing.EventListener?displayProperty=name> to read
<xref:System.Diagnostics.Tracing.EventSource?displayProperty=name> data in
process and that use null characters as delimiters.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

<xref:System.Diagnostics.Tracing.EventSource?displayProperty=name> data should
be updated, if possible, to not use embedded null characters.

### Affected APIs
* `M:System.Diagnostics.Tracing.EventListener.#ctor`
* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel)`
* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords)`
* `M:System.Diagnostics.Tracing.EventListener.EnableEvents(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords,System.Collections.Generic.IDictionary{System.String,System.String})`

### Category
Core

<!-- breaking change id: 46 -->


================================================
FILE: Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md
================================================
## EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID)

### Scope
Minor

### Version Introduced
4.5.1

### Source Analyzer Status
Available

### Change Description

The runtime now enforces the contract that specifies the following: A class
derived from <xref:System.Diagnostics.Tracing.EventSource?displayProperty=name>
that defines an ETW event method must call the base class `EventSource.WriteEvent`
method with the event ID followed by the same arguments that the ETW event
method was passed.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

An <xref:System.IndexOutOfRangeException?displayProperty=name> exception is
thrown if an <xref:System.Diagnostics.Tracing.EventListener?displayProperty=name>
reads <xref:System.Diagnostics.Tracing.EventSource?displayProperty=name> data in
process for an event source that violates this contract.

### Affected APIs
* Not detectable via API analysis

### Category
Core

<!-- breaking change id: 31 -->


================================================
FILE: Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md
================================================
## Exception message has changed for failed DataContract serialization in case of an unknown type

### Scope
Edge

### Version Introduced
4.6

### Source Analyzer Status
Planned

### Change Description

Beginning in the .NET Framework 4.6, the exception message given if a
<xref:System.Runtime.Serialization.DataContractSerializer?displayProperty=name>
or <xref:System.Runtime.Serialization.Json.DataContractJsonSerializer?displayProperty=name>
fails to serialize or deserialize due to missing 'known types' has been clarified.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

Apps should not depend on specific exception messages. If an app depends on
this message, either update it to expect the new message or (preferably)
change it to depend only on the exception type.

### Affected APIs
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type)`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type})`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Runtime.Serialization.Json.DataContractJsonSerializerSettings)`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String)`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String,System.Collections.Generic.IEnumerable{System.Type})`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString)`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type})`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean)`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean)`
* `M:System.Runtime.Serialization.Json.DataContractJsonSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Boolean)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Runtime.Serialization.DataContractSerializerSettings)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type})`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable{System.Type})`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type})`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Runtime.Serialization.DataContractResolver)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Runtime.Serialization.DataContractResolver)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate)`
* `M:System.Runtime.Serialization.DataContractSerializer.#ctor(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable{System.Type},System.Int32,System.Boolean,System.Boolean,System.Runtime.Serialization.IDataContractSurrogate,System.Runtime.Serialization.DataContractResolver)`

### Category
Serialization

[More information](http://connect.microsoft.com/VisualStudio/feedback/details/806395/misleading-exception-with-datacontractjsonserializer)

<!-- breaking change id: 106 -->


================================================
FILE: Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md
================================================
## Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Planned

### Change Description

Because the <xref:System.Threading.Tasks.Task?displayProperty=name> class
represents an asynchronous operation, it catches all non-severe exceptions that
occur during asynchronous processing. In the .NET Framework 4.5, if an exception
is not observed and your code never waits on the task, the exception will no
longer propagate on the finalizer thread and crash the process during garbage
collection. This change enhances the reliability of applications that use the
Task class to perform unobserved asynchronous processing.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

If an app depends on unobserved asynchronous exceptions propagating to the
finalizer thread, the previous behavior can be restored by providing an
appropriate handler for the
<xref:System.Threading.Tasks.TaskScheduler.UnobservedTaskException>
event, or by setting a
[runtime configuration element](~/docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md).

### Affected APIs
* `M:System.Threading.Tasks.Task.Run(System.Action)`
* `M:System.Threading.Tasks.Task.Run(System.Action,System.Threading.CancellationToken)`
* `M:System.Threading.Tasks.Task.Run(System.Func{System.Threading.Tasks.Task})`
* `M:System.Threading.Tasks.Task.Run(System.Func{System.Threading.Tasks.Task},System.Threading.CancellationToken)`
* ```M:System.Threading.Tasks.Task.Run``1(System.Func{``0})```
* ```M:System.Threading.Tasks.Task.Run``1(System.Func{``0},System.Threading.CancellationToken)```
* ```M:System.Threading.Tasks.Task.Run``1(System.Func{System.Threading.Tasks.Task{``0}})```
* ```M:System.Threading.Tasks.Task.Run``1(System.Func{System.Threading.Tasks.Task{``0}},System.Threading.CancellationToken)```
* `M:System.Threading.Tasks.Task.Start`
* `M:System.Threading.Tasks.Task.Start(System.Threading.Tasks.TaskScheduler)`

### Category
Core

<!-- breaking change id: 55 -->


================================================
FILE: Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md
================================================
## FlowDocument may show an extra line of text

### Scope
Edge

### Version Introduced
4.5

### Source Analyzer Status
Planned

### Change Description

In some cases, a
<xref:System.Windows.Documents.FlowDocument>
element will display an extra line of text when running on the .NET Framework
4.5 compared to how it displayed when run on the .NET Framework 4.0. There are
no known cases of the change causing any text to be displayed poorly or
illegibly, but it could cause text to appear that previously was omitted from a
<xref:System.Windows.Documents.FlowDocument>'s
view.

- [ ] Quirked
- [ ] Build-time break

### Recommended Action

In some cases, decreasing the display element's PageHeight property by one can
restore the previous number of displayed lines.

### Affected APIs
* `M:System.Windows.Documents.FlowDocument.#ctor`
* `M:System.Windows.Documents.FlowDocument.#ctor(System.Windows.Documents.Block)`
* `M:System.Windows.Controls.FlowDocumentReader.#ctor`
* `M:System.Windows.Controls.FlowDocumentPageViewer.#ctor`
* `M:System.Windows.Controls.Primitives.DocumentPageView.#ctor`

### Category
Windows Presentation Foundation (WPF)

<!--
    ### Notes
    Analyzer would just look for FlowDocument/FlowDocunmentReader/FlowDocumentPageViewer/DocumentPageView usage in xaml
-->

<!-- breaking change id: 120 -->


================================================
FILE: Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md
================================================
## Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)

### Scope
Major

### Version Introduced
4.5

### Source Analyzer Status
Available

### Change Description
Beginning with C# 5 (Visual Studio 2012), `foreach` iterator variables are scoped within the iteration. This can cause breaks if code was previously depending on the variables to not be included in the `foreach`'s closure. The symptom of this change is that an iterator variable passed to a delegate is treated as the value it has at the time the delegate is created, rather than the value it has at the time the delegate is invoked.

- [ ] Quirked
- [x] Build-time break

### Recommended Action
Ideally, code should be updated to expect the new compiler behavior. If the old semantics are required, the iterator variable can be replaced with a separate variable which is explicitly placed outside of the loop's scope.

### Affected APIs
* Not detectable via API analysis

### Categories
Core

[More information](https://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx)

<!-- breaking change id: 100 -->


================================================
FILE: Documentation/compatibility/glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md
================================================
## GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent re
Download .txt
gitextract_htd9ztx4/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       └── config.yml
├── .gitignore
├── Documentation/
│   ├── KnownIssues/
│   │   ├── 776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md
│   │   ├── README.md
│   │   ├── Template/
│   │   │   └── NETFXKnownIssuesTemplate.md
│   │   ├── wpf-binding-issue.md
│   │   └── wpf-pma-window-drag.md
│   ├── README.md
│   ├── compatibility/
│   │   ├── ! Template.md
│   │   ├── !categories.md
│   │   ├── ASPNET-accessibility-improvement.md
│   │   ├── Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md
│   │   ├── GetECDsaPublicKey-correctly-handles-brainpool-curves.md
│   │   ├── README.md
│   │   ├── RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md
│   │   ├── SerialPort-background-thread-exceptions.md
│   │   ├── ServiceBase-doesnt-propagate-OnStart-exceptions.md
│   │   ├── SignedXml.GetPublicKey-returns-RSACng-on-net462.md
│   │   ├── Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md
│   │   ├── WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md
│   │   ├── WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md
│   │   ├── WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md
│   │   ├── WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md
│   │   ├── WCFSDKToolsAccessibilityChangesIn4.7.1.md
│   │   ├── a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md
│   │   ├── accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md
│   │   ├── ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md
│   │   ├── aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md
│   │   ├── appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md
│   │   ├── application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md
│   │   ├── apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md
│   │   ├── asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md
│   │   ├── asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md
│   │   ├── aspnet-472-compat-doc.md
│   │   ├── aspnet-asp.net-validationcontext.membername-is-null-sometimes.md
│   │   ├── aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md
│   │   ├── aspnet-invalid-results-from-httprequest.getattributefromheader.md
│   │   ├── assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md
│   │   ├── binaryformatter-can-fail-to-find-type-from-loadfrom-context.md
│   │   ├── binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md
│   │   ├── blockingcollection_trytakefromany-does-not-throw-anymore.md
│   │   ├── building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md
│   │   ├── calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md
│   │   ├── calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md
│   │   ├── calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md
│   │   ├── calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md
│   │   ├── calls-to-claimsidentity-constructors.md
│   │   ├── certificate-eku-oid-validation.md
│   │   ├── change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md
│   │   ├── change-in-behavior-in-data-definition-language-(ddl)-apis.md
│   │   ├── change-in-path-separator-character-in-zip-files.md
│   │   ├── changes-in-path-normalization.md
│   │   ├── changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md
│   │   ├── clickonce-supports-sha-256-on-4_0-targeted-apps.md
│   │   ├── clr_critical_section_spin_wait_removal.md
│   │   ├── code-contracts-and-string-isnullorempty-compiler-warning.md
│   │   ├── coerceisselectionboxhighlighted.md
│   │   ├── compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md
│   │   ├── concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md
│   │   ├── connection-pool-blocking-period-for-azure-sql-databases-is-removed.md
│   │   ├── contentdisposition-datetimes-returns-slightly-different-string.md
│   │   ├── cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md
│   │   ├── cryptographicexception-not-thrown-in-fips-mode.md
│   │   ├── cspparameters_parentwindowhandle-now-expects-hwnd-value.md
│   │   ├── currentculture-flows-across-tasks.md
│   │   ├── currentculture-not-preserved-across-wpf-dispatcher-operations.md
│   │   ├── data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md
│   │   ├── datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md
│   │   ├── dataobject_getdata-now-retrieves-data-as-utf-8.md
│   │   ├── dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md
│   │   ├── deflatestream-uses-native-apis-for-decompression.md
│   │   ├── deserialization-of-objects-across-appdomains-can-fail.md
│   │   ├── different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md
│   │   ├── ef-no-longer-throws-for-queryviews-with-specific-characteristics.md
│   │   ├── ef-version-must-match-netfx-version.md
│   │   ├── encoderparameter-ctor-is-obsolete.md
│   │   ├── entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md
│   │   ├── enumerable_empty-always-returns-cached-instance.md
│   │   ├── error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md
│   │   ├── etw-event-names-cannot-differ-only-by-suffix.md
│   │   ├── etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md
│   │   ├── eventlistener-truncates-strings-with-embedded-nulls.md
│   │   ├── eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md
│   │   ├── exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md
│   │   ├── exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md
│   │   ├── flowdocument-may-show-an-extra-line-of-text.md
│   │   ├── foreach-iterator-variable-is-now-scoped-within-the-iteration.md
│   │   ├── glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md
│   │   ├── gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md
│   │   ├── horizontal-scrolling-and-virtualization.md
│   │   ├── htmltextwriter-does-not-render-br-element-correctly.md
│   │   ├── httprequest_contentencoding-property-prohibits-utf7.md
│   │   ├── httputility_javascriptstringencode-escapes-ampersand.md
│   │   ├── iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md
│   │   ├── icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md
│   │   ├── il-ret-not-allowed-in-a-try-region.md
│   │   ├── incorrect-code-generation-when-passing-and-comparing-uint16-values.md
│   │   ├── incorrect-implementation-of-memberdescriptor_equals.md
│   │   ├── intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md
│   │   ├── interop-enable-winrt-iagileobject.md
│   │   ├── interop-event-handlers-safearray.md
│   │   ├── ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md
│   │   ├── item-scrolling-a-flat-list-with-items-of-different-pixel-height.md
│   │   ├── items_clear-does-not-remove-duplicates-from-selecteditems.md
│   │   ├── keytips-behavior-improved-in-wpf.md
│   │   ├── linq-to-ef-join-throws-argumentoutofrangeexception.md
│   │   ├── list_foreach-can-throw-exception-when-modifying-list-item.md
│   │   ├── list_sort-algorithm-changed.md
│   │   ├── listboxitem-isselected-binding-issue-with-observablecollection_move.md
│   │   ├── log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md
│   │   ├── long-path-support.md
│   │   ├── machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md
│   │   ├── managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md
│   │   ├── marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md
│   │   ├── mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md
│   │   ├── minfreememorypercentagetoactiveservice-is-now-respected.md
│   │   ├── missing-target-framework-moniker-results-in-4_0-behavior.md
│   │   ├── multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md
│   │   ├── multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md
│   │   ├── netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md
│   │   ├── new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md
│   │   ├── new-64-bit-jit-compiler.md
│   │   ├── new-enum-values-in-wpf's-pagerangeselection.md
│   │   ├── no-longer-able-to-set-enableviewstatemac-to-false.md
│   │   ├── non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md
│   │   ├── null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md
│   │   ├── objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md
│   │   ├── objectdisposedexception-thrown-by-wpf-spellchecker.md
│   │   ├── obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md
│   │   ├── only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md
│   │   ├── operationcontext-current-returns-null-in-a-using-clause.md
│   │   ├── opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md
│   │   ├── page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md
│   │   ├── path-colon-checks-are-stricter.md
│   │   ├── persian-calendar-now-uses-the-hijri-solar-algorithm.md
│   │   ├── previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md
│   │   ├── product-versioning-changes-in-net-framework-4-6-and-later.md
│   │   ├── profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md
│   │   ├── reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md
│   │   ├── remove-ssl3-from-the-wcf-transportdefaults.md
│   │   ├── resgen-block-mark-of-the-web-content.md
│   │   ├── resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md
│   │   ├── ribbongroup-background-is-set-to-transparent-in-localized-builds.md
│   │   ├── right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md
│   │   ├── rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md
│   │   ├── rsacng_verifyhash-now-returns-false-for-any-verification-failure.md
│   │   ├── scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md
│   │   ├── serialization-deserialization-of-mailmessage-objects.md
│   │   ├── serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md
│   │   ├── servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md
│   │   ├── sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md
│   │   ├── soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md
│   │   ├── some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md
│   │   ├── some-workflow-drag-and-drop-apis-are-obsolete.md
│   │   ├── sql-server-database-connection-that-resolves-to-localhost.md
│   │   ├── sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md
│   │   ├── sqlbulkcopy-uses-destination-column-encoding-for-strings.md
│   │   ├── sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md
│   │   ├── sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md
│   │   ├── sslstream-support-for-tls-alerts.md
│   │   ├── system_activities-is-now-aptca.md
│   │   ├── system_net_peertopeer_collaboration-unavailable-on-windows-8.md
│   │   ├── system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md
│   │   ├── system_threading_monitor_lock_acquisition_scalability_improvement.md
│   │   ├── system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md
│   │   ├── system_threading_timer_lock_contention_improvement.md
│   │   ├── system_uri-escaping-now-supports-rfc-3986.md
│   │   ├── system_uri-parsing-adheres-to-rfc-3987.md
│   │   ├── system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md
│   │   ├── targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md
│   │   ├── the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md
│   │   ├── the-replace-method-in-odata-urls-is-disabled-by-default.md
│   │   ├── throttle-concurrent-requests-per-session.md
│   │   ├── tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md
│   │   ├── two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md
│   │   ├── type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md
│   │   ├── unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md
│   │   ├── unicode-data-now-support-standard-v8_0-categories.md
│   │   ├── uri-reserved-characters-consistent.md
│   │   ├── uri-unc-shares-normalized.md
│   │   ├── uri-unicode-bidirectional-characters.md
│   │   ├── uri-unicode-scheme-only-relative.md
│   │   ├── vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md
│   │   ├── wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md
│   │   ├── wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md
│   │   ├── wcf-binding-with-the-transportwithmessagecredential-security-mode.md
│   │   ├── wcf-deadlock-results-when-using-reentrant-services.md
│   │   ├── wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md
│   │   ├── wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md
│   │   ├── wcf-transport-security-supports-certificates-stored-using-cng.md
│   │   ├── webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md
│   │   ├── webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md
│   │   ├── wf-serializes-expressions_literal-datetimes-differently.md
│   │   ├── windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md
│   │   ├── winform's-DomainUpDownControl-button's-actions-in-sync.md
│   │   ├── winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md
│   │   ├── winforms-ContextMenuStrip-SourceControl-property-change.md
│   │   ├── winforms-PrivateFontCollection-Font-handle-leak-fix.md
│   │   ├── winforms-accessibility-changes-471.md
│   │   ├── winforms-accessibility-changes-472.md
│   │   ├── winforms-accessibility-changes-48.md
│   │   ├── winforms-hdpi-changes-48.md
│   │   ├── winrt-stream-adapters-no-long-call-flushasync-automatically-on-close.md
│   │   ├── workflow-3_0-types-are-obsolete.md
│   │   ├── workflow-checksums-changed-from-md5-to-sha1.md
│   │   ├── workflow-designer-accessibility-4-8.md
│   │   ├── workflow-designer-accessibility.md
│   │   ├── workflow-now-throws-original-exception-instead-of-nullreferenceexception-in-some-cases.md
│   │   ├── workflow-sql-persistence-adds-primary-key-clusters-and-disallows-null-values-in-some-columns.md
│   │   ├── workflow-xaml-checksums-for-symbols-changed-from-sha1-to-sha256.md
│   │   ├── workflow-xoml-definition-and-sqltrackingservice-caches-changed-from-md5-to-sha256.md
│   │   ├── workflow-xoml-file-checksums-changed-from-md5-to-sha256.md
│   │   ├── workflowdesigner_load-doesn't-remove-symbol-property.md
│   │   ├── wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md
│   │   ├── wpf-HwndHost-child-hwnd-correct-size-during-DPI-changes.md
│   │   ├── wpf-KB-focus-now-moves-correctly-across-hosting-scenarios.md
│   │   ├── wpf-MarkupCompiler-default-hash-algorithm-is-now-SHA256.md
│   │   ├── wpf-MasterDetail-ADOdata-PrimaryKey.md
│   │   ├── wpf-PackageDigitalSignatureManager.DefaultHashAlgorithm-is-now-SHA256.md
│   │   ├── wpf-SelectionTextBrush-property-for-non-adorner-selection.md
│   │   ├── wpf-TextBox-PasswordBox-text-selection-does-not-follow-system-colors.md
│   │   ├── wpf-accessibility-improvements-48.md
│   │   ├── wpf-accessibility-improvements.MD
│   │   ├── wpf-aero2-and-aerolite-themes-toggle-button-doesn't-show-any-state.md
│   │   ├── wpf-chained-popups-with-StaysOpen-false.md
│   │   ├── wpf-databinding-should-use-key-not-indexer.md
│   │   ├── wpf-datatemplate-elements-are-now-visible-to-uia.md
│   │   ├── wpf-dispatchersynchronizationcontext_createcopy-now-returns-a-new-copy-instead-of-the-current-instance.md
│   │   ├── wpf-focus-visual-for-radiobutton-and-checkbox-displays-correctly-when-there-is-no-content.md
│   │   ├── wpf-grid-allocation-of-space-to-star-columns.md
│   │   ├── wpf-grid-row-size-allocation-with-collapsed-element.md
│   │   ├── wpf-hang-listbox-duplicate-valuetypes.md
│   │   ├── wpf-hang-when-resizing-a-grid.md
│   │   ├── wpf-keyboard-navigation-listbox-hyperlink.md
│   │   ├── wpf-layout-rounding-of-margins-has-changed.md
│   │   ├── wpf-nullreferenceexception-in-exception-handling-code-from-imagesourceconverter_convertfrom.md
│   │   ├── wpf-pencontext-disable-method-calls-on-touch-enabled-systems-may-throw-argumentexception.md
│   │   ├── wpf-performace-improvement-grouping-automation.md
│   │   ├── wpf-pointer-based-touch-stack.md
│   │   ├── wpf-printing-stack-update.md
│   │   ├── wpf-selector-crash-when-removing-item-from-custom-collection.md
│   │   ├── wpf-selector-selectionchanged-and-selectedvalue.md
│   │   ├── wpf-spawns-a-wisptis_exe-process-which-can-freeze-the-mouse.md
│   │   ├── wpf-spell-checking-fail-in-unexpected-ways.md
│   │   ├── wpf-spell-checking-in-text-enabled-controls-will-not-work-in-windows-10-for-languages-not-in-the-input-language-list.md
│   │   ├── wpf-tabcontrol-selectionchanged-and-selectedcontent.md
│   │   ├── wpf-textbox-defaults-to-undo-limit-of-100.md
│   │   ├── wpf-textbox-selected-text-appears-a-different-color-when-the-text-box-is-inactive.md
│   │   ├── wpf-textbox_text-can-be-out-of-sync-with-databinding.md
│   │   ├── wpf-treeviewitem-must-be-used-within-a-treeview.md
│   │   ├── wpf-windows-are-rendered-without-clipping-when-extending-outside-a-single-monitor.md
│   │   ├── x509certificate2_tostring(bool)-does-not-throw-now-when-dotnet-cannot-handle-the-certificate.md
│   │   ├── x509certificateclaimset_findclaims-considers-all-claimtypes.md
│   │   ├── xml-documents-are-now-consider-invalid-if-they-contains-transforms-that-are-not-allowed-on-digital-signatures.md
│   │   ├── xml-schema-validation-is-stricter.md
│   │   ├── xmlschemaexception-now-sets-line-positions-properly.md
│   │   ├── xmlserializer-fails-while-serializing-a-type-that-hides-an-accessible-member-with-an-inaccessible-one.md
│   │   ├── xmlserializer-serializes-fields-differently-in-4_5.md
│   │   ├── xmltextreader-dtd-entity-expansion-is-limited-to-10000000-characters.md
│   │   ├── xmlwriter-throws-on-invalid-surrogate-pairs.md
│   │   ├── xsd-schema-validation-now-correctly-detects-violations-of-unique-constraints-if-compound-keys-are-used-and-one-key-is-empty.md
│   │   ├── xslt-forward-compat-now-works.md
│   │   └── xslt-style-sheet-exception-message-changed.md
│   └── testing-with-ryujit.md
├── LICENSE
├── README.md
├── SECURITY.md
├── data/
│   └── platforms.json
├── docs/
│   ├── ecosystem-issues.md
│   └── testing-with-ryujit.md
├── dotnet-consumer-projects.md
├── dotnet-developer-projects.md
├── dotnet-free-oss-services.md
├── releases/
│   ├── README.md
│   ├── UWP/
│   │   ├── LICENSE.TXT
│   │   ├── README.md
│   │   ├── net-native1.4/
│   │   │   └── README.md
│   │   ├── net-native1.6/
│   │   │   └── README.md
│   │   ├── net-native1.7/
│   │   │   └── README.md
│   │   ├── net-native2.0/
│   │   │   ├── README.md
│   │   │   ├── funceval.md
│   │   │   └── incremental-compilation.md
│   │   ├── net-native2.1/
│   │   │   └── README.md
│   │   └── net-native2.2/
│   │       └── README.md
│   ├── net45/
│   │   └── README.md
│   ├── net451/
│   │   └── README.md
│   ├── net452/
│   │   └── README.md
│   ├── net46/
│   │   ├── README.md
│   │   ├── dotnet46-api-changes.html
│   │   ├── dotnet46-api-changes.md
│   │   └── dotnet46-changes.md
│   ├── net461/
│   │   ├── README.md
│   │   ├── dotnet461-api-changes.md
│   │   └── dotnet461-changes.md
│   ├── net462/
│   │   ├── README.md
│   │   ├── dotnet462-api-changes.md
│   │   └── dotnet462-changes.md
│   ├── net47/
│   │   ├── README.md
│   │   ├── dotnet47-api-changes.md
│   │   └── dotnet47-changes.md
│   ├── net471/
│   │   ├── KnownIssues/
│   │   │   ├── 470006-GC Crashes with high rate of large object allocation.md
│   │   │   ├── 479874-WPF Touch Stops Working After Prolonged Use of Popups.md
│   │   │   ├── 481090-WPF Touch generates NullReferenceException in ProcessInputReport.md
│   │   │   ├── 489937-WPF Touch and Stylus AccessViolation in GetPenEventMultiple.md
│   │   │   ├── 493108-WPF InvalidCastException when displaying a checked MenuItem.md
│   │   │   ├── 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md
│   │   │   ├── 514195-Targeting .NET Framework 4.7.1 copies extra files to your bin directory.md
│   │   │   ├── 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md
│   │   │   ├── 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md
│   │   │   ├── 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md
│   │   │   ├── 523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md
│   │   │   ├── 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md
│   │   │   ├── 534719-Networking.ServicePoint.ConnectionLimit default behavior changed.md
│   │   │   ├── 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md
│   │   │   └── 623552-BCL Higher assembly versions that 4.0.0.0 for System.IO.Compression.ZipFile cannot be loaded without a binding redirect.md
│   │   ├── README.md
│   │   ├── dotnet471-api-changes.md
│   │   ├── dotnet471-changes.md
│   │   └── dotnet471-known-issues.md
│   ├── net472/
│   │   ├── KnownIssues/
│   │   │   ├── 405199 - WPF Non-Adorner TextSelection Occludes Text.md
│   │   │   ├── 504055 - WPF May Not Show Touch Keyboard In All Scenarios on Windows 10 April 2018 Update.md
│   │   │   ├── 560016-XBAP Applications targeting .NET 2.0,3.5 select wrong runtime version.md
│   │   │   ├── 593963 - WPF Exceptions during AppDomain or process shutdown.md
│   │   │   ├── 599936 - Narrator does not annouce the ReadOnly Status for DataGridView TextBox column with the TextBox column Readonly property set as true.md
│   │   │   ├── 611802 - SQLConnection.ConnectionString throws NullReferenceException .md
│   │   │   ├── 613745 - Single-name references are removed by the SDK when targeting 4.7.2.md
│   │   │   ├── 669153 - Remoting calls made within a transaction can lead to Transaction.Current incorrectly returning null.md
│   │   │   ├── 695400 - Setup fails to install the product after migrating OS from Windows 7 or Windows Server 2008 R2.md
│   │   │   └── 706819 - Winforms applications may have problems rendering UI on latest Operating Systems.md
│   │   ├── README.md
│   │   ├── dotnet472-api-changes.md
│   │   ├── dotnet472-changes.md
│   │   └── dotnet472-known-issues.md
│   ├── net48/
│   │   ├── KnownIssues/
│   │   │   ├── 776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md
│   │   │   └── wpf-pma-window-drag.md
│   │   ├── README.md
│   │   ├── dotnet48-api-changes.md
│   │   ├── dotnet48-changes.md
│   │   └── dotnet48-known-issues.md
│   ├── net481/
│   │   ├── KnownIssues/
│   │   │   └── 4.x WCF optional components.md
│   │   ├── README.md
│   │   ├── dotnet481-changes.md
│   │   └── dotnet481-known-issues.md
│   └── reference-assemblies/
│       └── README.md
├── src/
│   └── bc-readme-gen/
│       ├── Program.cs
│       ├── README-template.md
│       ├── README.md
│       └── bcreadgen.csproj
└── tools/
    └── DrainNGENQueue/
        ├── DrainNGenQueue.ps1
        └── DrainNGenQueue.wsf
Download .txt
SYMBOL INDEX (3 symbols across 1 files)

FILE: src/bc-readme-gen/Program.cs
  class Program (line 8) | class Program
    method Main (line 10) | static void Main(string[] args)
  class BreakingChange (line 123) | public class BreakingChange
Condensed preview — 351 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,390K chars).
[
  {
    "path": ".gitattributes",
    "chars": 3053,
    "preview": "###############################################################################\n# Set default behavior to automatically "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 2187,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Issue with .NET Framework\n    url:  https://developercommunity.visu"
  },
  {
    "path": ".gitignore",
    "chars": 4833,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "Documentation/KnownIssues/776516-InvalidOperationException in System_Web_ni!System.Web.Hosting.RecycleLimitMonitor+RecycleLimitMonitorSingleton.AlertProxyMonitors.md",
    "chars": 1489,
    "preview": "# InvalidOperationException in ASP.Net-RecycleLimitMonitor-AlertProxyMonitors\n\n## Symptoms\nASP.Net applications may cras"
  },
  {
    "path": "Documentation/KnownIssues/README.md",
    "chars": 972,
    "preview": "# .NET Framework Known Issues\n\nThe following links provide the known issues about the various .NET Framework versions at"
  },
  {
    "path": "Documentation/KnownIssues/Template/NETFXKnownIssuesTemplate.md",
    "chars": 1086,
    "preview": "# [|Known Issue Title|]\n// There is no built-in way to do comments in Markdown, so this template uses a C#-style comment"
  },
  {
    "path": "Documentation/KnownIssues/wpf-binding-issue.md",
    "chars": 2785,
    "preview": "# WPF Binding stops working after an item container leaves the visual tree\n\n## Symptoms\nThis issue affects bindings whos"
  },
  {
    "path": "Documentation/KnownIssues/wpf-pma-window-drag.md",
    "chars": 488,
    "preview": "# Per-Monitor DPI-aware WPF applications position mouse cursor incorrectly when dragging between monitors\n\n## Symptoms\nA"
  },
  {
    "path": "Documentation/README.md",
    "chars": 702,
    "preview": "# Documentation\n\nThe following documents are available in this repo:\n\n- [.NET Framework Application Compatibility](compa"
  },
  {
    "path": "Documentation/compatibility/! Template.md",
    "chars": 2627,
    "preview": "## [|Breaking Change Title|]\n\n// There is no built in way to do comments in Markdown, so this C# style comment used to m"
  },
  {
    "path": "Documentation/compatibility/!categories.md",
    "chars": 441,
    "preview": "| Category|\n|---------|\n|ADO.NET|\n|ASP.NET|\n|C#|\n|ClickOnce|\n|Core|\n|Data|\n|Debugger|\n|Entity Framework|\n|Globalization|"
  },
  {
    "path": "Documentation/compatibility/ASPNET-accessibility-improvement.md",
    "chars": 2246,
    "preview": "## ASP.NET Accessibility Improvements in .NET Framework 4.7.1\n\n### Scope\nMinor\n\n\n### Version Introduced\n4.7.1\n\n\n### Sour"
  },
  {
    "path": "Documentation/compatibility/Change-SignedXML-and-SignedCMS-default-algorithms-to-SHA256.md",
    "chars": 1957,
    "preview": "## Default SignedXML and SignedXMS algorithms changed to SHA256\n\n### Scope\nMinor\n\n### Version Introduced\n4.7.1\n\n### Sour"
  },
  {
    "path": "Documentation/compatibility/GetECDsaPublicKey-correctly-handles-brainpool-curves.md",
    "chars": 1069,
    "preview": "## ECDsaCertificateExtensions.GetECDsaPublicKey correctly handles Brainpool curves\n\n### Scope\nEdge\n\n### Version Introduc"
  },
  {
    "path": "Documentation/compatibility/README.md",
    "chars": 37688,
    "preview": "# .NET Framework Application Compatibility\n\nThe following documents provide information on .NET Framework application co"
  },
  {
    "path": "Documentation/compatibility/RSACng-and-DSACng-not-usable-in-Partial-Trust-scenarios.md",
    "chars": 2338,
    "preview": "## RSACng and DSACng are once again usable in Partial Trust scenarios\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n###"
  },
  {
    "path": "Documentation/compatibility/SerialPort-background-thread-exceptions.md",
    "chars": 1604,
    "preview": "## SerialPort background thread exceptions\n\n### Scope\nMinor\n\n### Version Introduced\n4.7.1\n\n### Source Analyzer Status\nNo"
  },
  {
    "path": "Documentation/compatibility/ServiceBase-doesnt-propagate-OnStart-exceptions.md",
    "chars": 1630,
    "preview": "## ServiceBase doesn't propagate OnStart exceptions\n\n### Scope\n\nMinor\n\n### Version Introduced\n4.7.1\n\n### Source Analyzer"
  },
  {
    "path": "Documentation/compatibility/SignedXml.GetPublicKey-returns-RSACng-on-net462.md",
    "chars": 1524,
    "preview": "## SignedXml.GetPublicKey returns RSACng on net462 (or lightup) without retargeting change\n\n### Scope\nEdge\n\n### Version "
  },
  {
    "path": "Documentation/compatibility/Stack-traces-obtained-when-using-portable-PDBs-now-include-source-file-and-line-information-if-requested.md",
    "chars": 1753,
    "preview": "## Stack traces obtained when using portable PDBs now include source file and line information if requested\n   \n### Scop"
  },
  {
    "path": "Documentation/compatibility/WCF-AddressHeaderCollection-now-throws-an-ArgumentException-if-an-addressHeader-element-is-null.md",
    "chars": 1344,
    "preview": "## WCF AddressHeaderCollection now throws an ArgumentException if an addressHeader element is null\n\n### Scope\nMinor\n\n###"
  },
  {
    "path": "Documentation/compatibility/WCF-Improved-WCF-chain-trust-certificate-validation-for-Net.Tcp-certificate-authentication.md",
    "chars": 1680,
    "preview": "## Improved WCF chain trust certificate validation for Net.Tcp certificate authentication\n\n### Scope\nMinor\n\n### Version "
  },
  {
    "path": "Documentation/compatibility/WCF-MsmqSecureHashAlgorithm-default-value-is-now-SHA256.md",
    "chars": 1067,
    "preview": "## WCF MsmqSecureHashAlgorithm default value is now SHA256\n\n### Scope\nMinor\n### Version Introduced\n4.7.1\n### Source Anal"
  },
  {
    "path": "Documentation/compatibility/WCF-PipeConnection.GetHashAlgorithm-now-uses-SHA256.md",
    "chars": 1056,
    "preview": "## WCF PipeConnection.GetHashAlgorithm now uses SHA256\n\n### Scope\nMinor\n### Version Introduced\n4.7.1\n### Source Analyzer"
  },
  {
    "path": "Documentation/compatibility/WCFSDKToolsAccessibilityChangesIn4.7.1.md",
    "chars": 1192,
    "preview": "## Improved accessibility for some .NET SDK tools\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.1\n\n### Source Analyzer Sta"
  },
  {
    "path": "Documentation/compatibility/a-concurrentdictionary-serialized-in-_net-4_5-with-netdatacontractserializer-cannot-be-deserialized-by-_net-4_5_1-or-4_5_2.md",
    "chars": 1912,
    "preview": "## A ConcurrentDictionary serialized in .NET Framework 4.5 with NetDataContractSerializer cannot be deserialized by .NET"
  },
  {
    "path": "Documentation/compatibility/accessing-a-wpf-datagrid's-selected-items-from-a-handler-of-the-datagrid's-unloadingrow-event-can-cause-a-nullreferenceexception.md",
    "chars": 1139,
    "preview": "## Accessing a WPF DataGrid's selected items from a handler of the DataGrid's UnloadingRow event can cause a NullReferen"
  },
  {
    "path": "Documentation/compatibility/ado_net-now-attempts-to-automatically-reconnect-broken-sql-connections.md",
    "chars": 1966,
    "preview": "## ADO.NET now attempts to automatically reconnect broken SQL connections\n\n### Scope\nEdge\n\n### Version Introduced\n4.5.1\n"
  },
  {
    "path": "Documentation/compatibility/aescryptoserviceprovider-decryptor-provides-a-reusable-transform.md",
    "chars": 2254,
    "preview": "## AesCryptoServiceProvider decryptor provides a reusable transform\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### "
  },
  {
    "path": "Documentation/compatibility/appdomainsetup_dynamicbase-is-no-longer-randomized-by-userandomizedstringhashalgorithm.md",
    "chars": 1280,
    "preview": "## AppDomainSetup.DynamicBase is no longer randomized by UseRandomizedStringHashAlgorithm\n\n### Scope\nEdge\n\n### Version I"
  },
  {
    "path": "Documentation/compatibility/application_filtermessage-no-longer-throws-for-re-entrant-implementations-of-imessagefilter_prefiltermessage.md",
    "chars": 2269,
    "preview": "## Application.FilterMessage no longer throws for re-entrant implementations of IMessageFilter.PreFilterMessage\n\n### Sco"
  },
  {
    "path": "Documentation/compatibility/apps-published-with-clickonce-that-use-a-sha-256-code-signing-certificate-may-fail-on-windows-2003.md",
    "chars": 1450,
    "preview": "## Apps published with ClickOnce that use a SHA-256 code-signing certificate may fail on Windows 2003\n\n### Scope\nEdge\n\n#"
  },
  {
    "path": "Documentation/compatibility/asp-net-httpruntime-appdomainapppath-throws-nullreferenceexception.md",
    "chars": 1065,
    "preview": "## HttpRuntime.AppDomainAppPath Throws a NullReferenceException\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### Versi"
  },
  {
    "path": "Documentation/compatibility/asp_net-mvc-now-escapes-spaces-in-strings-passed-in-via-route-parameters.md",
    "chars": 957,
    "preview": "## ASP.NET MVC now escapes spaces in strings passed in via route parameters\n\n### Scope\nMinor\n\n### Version Introduced\n4.5"
  },
  {
    "path": "Documentation/compatibility/aspnet-472-compat-doc.md",
    "chars": 1594,
    "preview": "## \"dataAnnotations:dataTypeAttribute:disableRegEx\" app setting is on by default in .NET Framework 4.7.2\n\n### Scope\nMino"
  },
  {
    "path": "Documentation/compatibility/aspnet-asp.net-validationcontext.membername-is-null-sometimes.md",
    "chars": 1241,
    "preview": "## ASP.NET ValidationContext.MemberName is not NULL when using custom DataAnnotations.ValidationAttribute\n\n### Version I"
  },
  {
    "path": "Documentation/compatibility/aspnet-fix-handling-input-and-label-attributes-for-webforms-checkbox-control.md",
    "chars": 1199,
    "preview": "## ASP.NET Fix handling of InputAttributes and LabelAttributes for WebForms CheckBox control\n\n### Version Introduced\n4.8"
  },
  {
    "path": "Documentation/compatibility/aspnet-invalid-results-from-httprequest.getattributefromheader.md",
    "chars": 1376,
    "preview": "## ASP.NET Incorrect multipart handling may result in lost form data.\n\n### Version Introduced\n4.8\n\n### Change Descriptio"
  },
  {
    "path": "Documentation/compatibility/assemblies-compiled-with-regex_compiletoassembly-breaks-between-4_0-and-4_5.md",
    "chars": 1310,
    "preview": "## Assemblies compiled with Regex.CompileToAssembly breaks between 4.0 and 4.5\n\n### Scope\nMinor\n\n### Version Introduced\n"
  },
  {
    "path": "Documentation/compatibility/binaryformatter-can-fail-to-find-type-from-loadfrom-context.md",
    "chars": 2270,
    "preview": "## BinaryFormatter can fail to find type from LoadFrom context\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source A"
  },
  {
    "path": "Documentation/compatibility/binding-a-wpf-selector-property-(such-as-'selecteditem')-to-a-static-property-does-not-work.md",
    "chars": 1357,
    "preview": "## Binding a WPF selector property (such as 'SelectedItem') to a static property does not work\n\n### Scope\nMinor\n\n### Ver"
  },
  {
    "path": "Documentation/compatibility/blockingcollection_trytakefromany-does-not-throw-anymore.md",
    "chars": 1971,
    "preview": "## BlockingCollection&lt;T&gt;.TryTakeFromAny does not throw anymore\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### S"
  },
  {
    "path": "Documentation/compatibility/building-an-entity-framework-edmx-with-visual-studio-2013-can-fail-with-error-msb4062-if-using-the-entitydeploysplit-or-entityclean-tasks.md",
    "chars": 1403,
    "preview": "## Building an Entity Framework edmx with Visual Studio 2013 can fail with error MSB4062 if using the EntityDeploySplit "
  },
  {
    "path": "Documentation/compatibility/calling-attribute_getcustomattributes-on-an-indexer-property-no-longer-throws-ambiguousmatchexception.md",
    "chars": 2649,
    "preview": "## Calling Attribute.GetCustomAttributes on an indexer property no longer throws AmbiguousMatchException if the ambiguit"
  },
  {
    "path": "Documentation/compatibility/calling-createdefaultauthorizationcontext-with-a-null-argument-has-changed.md",
    "chars": 1540,
    "preview": "## Calling CreateDefaultAuthorizationContext with a null argument has changed\n\n### Scope\nMinor\n\n### Version Introduced\n4"
  },
  {
    "path": "Documentation/compatibility/calling-datagrid_commitedit-from-a-celleditending-handler-drops-focus.md",
    "chars": 1169,
    "preview": "## Calling DataGrid.CommitEdit from a CellEditEnding handler drops focus\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n##"
  },
  {
    "path": "Documentation/compatibility/calling-items_refresh-on-a-wpf-listbox-or-listview-or-datagrid-with-items-selected-can-cause-duplicate-items-to-appear-in-the-element.md",
    "chars": 1461,
    "preview": "## Calling Items.Refresh on a WPF ListBox, ListView, or DataGrid with items selected can cause duplicate items to appear"
  },
  {
    "path": "Documentation/compatibility/calls-to-claimsidentity-constructors.md",
    "chars": 2721,
    "preview": "## Calls to ClaimsIdentity constructors\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer Status\nInvest"
  },
  {
    "path": "Documentation/compatibility/certificate-eku-oid-validation.md",
    "chars": 1580,
    "preview": "## Certificate EKU OID validation\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Source Analyzer Status\nNotPlanned\n\n#"
  },
  {
    "path": "Documentation/compatibility/change-in-behavior-for-task_waitall-methods-with-time-out-arguments.md",
    "chars": 2005,
    "preview": "## Change in behavior for Task.WaitAll methods with time-out arguments\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n###"
  },
  {
    "path": "Documentation/compatibility/change-in-behavior-in-data-definition-language-(ddl)-apis.md",
    "chars": 2062,
    "preview": "## Change in behavior in Data Definition Language (DDL) APIs\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Source An"
  },
  {
    "path": "Documentation/compatibility/change-in-path-separator-character-in-zip-files.md",
    "chars": 3195,
    "preview": "## Change in path separator character in FullName property of ZipArchiveEntry objects\n\n### Scope\nEdge\n\n### Version Intro"
  },
  {
    "path": "Documentation/compatibility/changes-in-path-normalization.md",
    "chars": 2505,
    "preview": "## Changes in path normalization\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer Status\nInvestigatin"
  },
  {
    "path": "Documentation/compatibility/changing-the-isenabled-property-of-the-parent-of-a-textblock-control-affects-any-child-controls.md",
    "chars": 1280,
    "preview": "## Changing the IsEnabled property of the parent of a TextBlock control affects any child controls\n\n### Scope\nMinor\n\n###"
  },
  {
    "path": "Documentation/compatibility/clickonce-supports-sha-256-on-4_0-targeted-apps.md",
    "chars": 865,
    "preview": "## ClickOnce supports SHA-256 on 4.0-targeted apps\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Source Analyzer Sta"
  },
  {
    "path": "Documentation/compatibility/clr_critical_section_spin_wait_removal.md",
    "chars": 1182,
    "preview": "## CLR critical section spin-wait removal\n\n### Scope\n\nTransparent\n\n### Version Introduced\n4.8\n\n### Source Analyzer Statu"
  },
  {
    "path": "Documentation/compatibility/code-contracts-and-string-isnullorempty-compiler-warning.md",
    "chars": 1431,
    "preview": "## Contract.Invariant or Contract.Requires\\<TException> do not consider String.IsNullOrEmpty to be pure\n\n### Scope\nMinor"
  },
  {
    "path": "Documentation/compatibility/coerceisselectionboxhighlighted.md",
    "chars": 685,
    "preview": "## CoerceIsSelectionBoxHighlighted\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Version Reverted\n4.6.2\n\n### Source "
  },
  {
    "path": "Documentation/compatibility/compiler-support-for-type-forwarding-when-multi-targeting-mscorlib.md",
    "chars": 815,
    "preview": "## Compiler support for type forwarding when multi-targeting mscorlib\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### S"
  },
  {
    "path": "Documentation/compatibility/concurrentqueue_trypeek-can-return-an-erroneous-null-via-its-out-parameter.md",
    "chars": 922,
    "preview": "## ConcurrentQueue&lt;T&gt;.TryPeek can return an erroneous null via its out parameter\n\n### Scope\nMajor\n\n### Version Int"
  },
  {
    "path": "Documentation/compatibility/connection-pool-blocking-period-for-azure-sql-databases-is-removed.md",
    "chars": 2794,
    "preview": "## Connection pool blocking period for Azure SQL databases is removed\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n##"
  },
  {
    "path": "Documentation/compatibility/contentdisposition-datetimes-returns-slightly-different-string.md",
    "chars": 1410,
    "preview": "## ContentDisposition DateTimes returns slightly different string\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Sour"
  },
  {
    "path": "Documentation/compatibility/cor_prf_gc_root_handles-are-not-being-enumerated-by-profilers.md",
    "chars": 991,
    "preview": "## COR_PRF_GC_ROOT_HANDLEs are not being enumerated by profilers\n\n### Scope\nMinor\n\n### Version Introduced\n4.5.1\n\n### Ver"
  },
  {
    "path": "Documentation/compatibility/cryptographicexception-not-thrown-in-fips-mode.md",
    "chars": 3153,
    "preview": "## Managed cryptography classes do not throw a CryptographyException in FIPS mode\n\n### Scope\nEdge\n\n### Version Introduce"
  },
  {
    "path": "Documentation/compatibility/cspparameters_parentwindowhandle-now-expects-hwnd-value.md",
    "chars": 2545,
    "preview": "## CspParameters.ParentWindowHandle now expects HWND value\n\n### Scope\nMinor\n\n### Version Introduced\n4.7\n\n### Source Anal"
  },
  {
    "path": "Documentation/compatibility/currentculture-flows-across-tasks.md",
    "chars": 2770,
    "preview": "## CurrentCulture and CurrentUICulture flow across tasks\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Version Rever"
  },
  {
    "path": "Documentation/compatibility/currentculture-not-preserved-across-wpf-dispatcher-operations.md",
    "chars": 3957,
    "preview": "## CurrentCulture is not preserved across WPF Dispatcher operations\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Ve"
  },
  {
    "path": "Documentation/compatibility/data-written-to-printsystemjobinfo-jobstream-must-be-in-xps-format.md",
    "chars": 1120,
    "preview": "## Data written to PrintSystemJobInfo.JobStream must be in XPS format\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### "
  },
  {
    "path": "Documentation/compatibility/datagridcellspanel_bringintoview-throws-argumentoutofrangeexception.md",
    "chars": 1182,
    "preview": "## DataGridCellsPanel.BringIndexIntoView throws ArgumentOutOfRangeException\n\n### Scope\nEdge\n\n### Version Introduced\n4.6."
  },
  {
    "path": "Documentation/compatibility/dataobject_getdata-now-retrieves-data-as-utf-8.md",
    "chars": 1633,
    "preview": "## DataObject.GetData now retrieves data as UTF-8\n\n### Scope\nEdge\n\n### Version Introduced\n4.5.2\n\n### Source Analyzer Sta"
  },
  {
    "path": "Documentation/compatibility/dbparameter_precision-and-dbparameter_scale-are-now-public-virtual-members.md",
    "chars": 1027,
    "preview": "## DbParameter.Precision and DbParameter.Scale are now public virtual members\n\n### Scope\nMinor\n\n### Version Introduced\n4"
  },
  {
    "path": "Documentation/compatibility/deflatestream-uses-native-apis-for-decompression.md",
    "chars": 2011,
    "preview": "## DeflateStream uses native APIs for decompression\n\n### Scope\nMinor\n\n### Version Introduced\n4.7.2\n\n### Source Analyzer "
  },
  {
    "path": "Documentation/compatibility/deserialization-of-objects-across-appdomains-can-fail.md",
    "chars": 680,
    "preview": "## Deserialization of objects across appdomains can fail\n\n### Scope\nEdge\n\n### Version Introduced\n4.5.1\n\n### Source Analy"
  },
  {
    "path": "Documentation/compatibility/different-exception-handling-for-objectcontext_createdatabase-and-dbproviderservices_createdatabase-methods.md",
    "chars": 1322,
    "preview": "## Different exception handling for ObjectContext.CreateDatabase and DbProviderServices.CreateDatabase methods\n\n### Scop"
  },
  {
    "path": "Documentation/compatibility/ef-no-longer-throws-for-queryviews-with-specific-characteristics.md",
    "chars": 1104,
    "preview": "## EF no longer throws for QueryViews with specific characteristics\n\n### Scope\nEdge\n\n### Version Introduced\n4.5.2\n\n### S"
  },
  {
    "path": "Documentation/compatibility/ef-version-must-match-netfx-version.md",
    "chars": 839,
    "preview": "## Entity Framework version must match the .NET Framework version\n\n### Scope\nMajor\n\n### Version Introduced\n4.5\n\n### Sour"
  },
  {
    "path": "Documentation/compatibility/encoderparameter-ctor-is-obsolete.md",
    "chars": 1122,
    "preview": "## EncoderParameter ctor is obsolete\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nAvailable\n"
  },
  {
    "path": "Documentation/compatibility/entityframework-6_0-loads-very-slowly-in-apps-launched-from-visual-studio.md",
    "chars": 624,
    "preview": "## EntityFramework 6.0 loads very slowly in apps launched from Visual Studio\n\n### Scope\nEdge\n\n### Version Introduced\n4.5"
  },
  {
    "path": "Documentation/compatibility/enumerable_empty-always-returns-cached-instance.md",
    "chars": 1171,
    "preview": "## Enumerable.Empty&lt;TResult&gt; always returns cached instance\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Sourc"
  },
  {
    "path": "Documentation/compatibility/error-codes-for-maxrequestlength-or-maxreceivedmessagesize-are-different.md",
    "chars": 1122,
    "preview": "## Error codes for maxRequestLength or maxReceivedMessageSize are different\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n"
  },
  {
    "path": "Documentation/compatibility/etw-event-names-cannot-differ-only-by-suffix.md",
    "chars": 992,
    "preview": "## ETW event names cannot differ only by a \"Start\" or \"Stop\" suffix\n\n### Scope\nEdge\n\n### Version Introduced\n4.6\n\n\n### Ve"
  },
  {
    "path": "Documentation/compatibility/etw-eventlisteners-do-not-capture-events-from-providers-with-explicit-keywords.md",
    "chars": 1476,
    "preview": "## ETW EventListeners do not capture events from providers with explicit keywords (like the TPL provider)\n\n### Scope\nEdg"
  },
  {
    "path": "Documentation/compatibility/eventlistener-truncates-strings-with-embedded-nulls.md",
    "chars": 1521,
    "preview": "## EventListener truncates strings with embedded nulls\n\n### Scope\nEdge\n\n### Version Introduced\n4.5.1\n\n### Source Analyze"
  },
  {
    "path": "Documentation/compatibility/eventsource_writeevent-impls-must-pass-writeevent-the-same-parameters-that-it-received-(plus-id).md",
    "chars": 1007,
    "preview": "## EventSource.WriteEvent impls must pass WriteEvent the same parameters that it received (plus ID)\n\n### Scope\nMinor\n\n##"
  },
  {
    "path": "Documentation/compatibility/exception-message-has-changed-for-failed-datacontract-serialization-in-case-of-an-unknown-type.md",
    "chars": 5279,
    "preview": "## Exception message has changed for failed DataContract serialization in case of an unknown type\n\n### Scope\nEdge\n\n### V"
  },
  {
    "path": "Documentation/compatibility/exceptions-during-unobserved-processing-in-system_threading_tasks_task-no-longer-propagate-on-finalizer-thread.md",
    "chars": 2106,
    "preview": "## Exceptions during unobserved processing in System.Threading.Tasks.Task no longer propagate on finalizer thread\n\n### S"
  },
  {
    "path": "Documentation/compatibility/flowdocument-may-show-an-extra-line-of-text.md",
    "chars": 1325,
    "preview": "## FlowDocument may show an extra line of text\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nP"
  },
  {
    "path": "Documentation/compatibility/foreach-iterator-variable-is-now-scoped-within-the-iteration.md",
    "chars": 1185,
    "preview": "## Foreach iterator variable is now scoped within the iteration, so closure capturing semantics are different (in C#5)\n\n"
  },
  {
    "path": "Documentation/compatibility/glyphrun-computeinkboundingbox-and-formattedtext-extent-return-different-values-beginning-in-dotnet-4-5.md",
    "chars": 1330,
    "preview": "## GlyphRun.ComputeInkBoundingBox() and FormattedText.Extent return different values beginning in .NET Framework 4.5\n\n##"
  },
  {
    "path": "Documentation/compatibility/gridviews-with-allowcustompaging-set-to-true-may-fire-the-pageindexchanging-event-when-leaving-the-final-page-of-the-view.md",
    "chars": 1613,
    "preview": "## GridViews with AllowCustomPaging set to true may fire the PageIndexChanging event when leaving the final page of the "
  },
  {
    "path": "Documentation/compatibility/horizontal-scrolling-and-virtualization.md",
    "chars": 3218,
    "preview": "## Horizontal scrolling and virtualization\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer Status\nPl"
  },
  {
    "path": "Documentation/compatibility/htmltextwriter-does-not-render-br-element-correctly.md",
    "chars": 1181,
    "preview": "## HtmlTextWriter does not render `<br/>` element correctly\n\n### Scope\nEdge\n\n### Version Introduced\n4.6\n\n### Source Anal"
  },
  {
    "path": "Documentation/compatibility/httprequest_contentencoding-property-prohibits-utf7.md",
    "chars": 928,
    "preview": "## HttpRequest.ContentEncoding property prohibits UTF7\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source Analyzer "
  },
  {
    "path": "Documentation/compatibility/httputility_javascriptstringencode-escapes-ampersand.md",
    "chars": 876,
    "preview": "## HttpUtility.JavaScriptStringEncode escapes ampersand\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Source Analyze"
  },
  {
    "path": "Documentation/compatibility/iasyncresult_completedsynchronously-property-must-be-correct-for-the-resulting-task-to-complete.md",
    "chars": 5383,
    "preview": "## IAsyncResult.CompletedSynchronously property must be correct for the resulting task to complete\n\n### Scope\nEdge\n\n### "
  },
  {
    "path": "Documentation/compatibility/icommand_canexecutechanged-event-behaviour-changed-in-_net-4_5.md",
    "chars": 1310,
    "preview": "## ICommand.CanExecuteChanged event behaviour changed in .NET Framework 4.5\n\n### Scope\nMinor\n\n### Version Introduced\n4.5"
  },
  {
    "path": "Documentation/compatibility/il-ret-not-allowed-in-a-try-region.md",
    "chars": 1049,
    "preview": "## IL ret not allowed in a try region\n\n### Scope\nEdge\n\n### Version Introduced\n4.6\n\n### Source Analyzer Status\nPlanned\n\n#"
  },
  {
    "path": "Documentation/compatibility/incorrect-code-generation-when-passing-and-comparing-uint16-values.md",
    "chars": 889,
    "preview": "## Incorrect code generation when passing and comparing UInt16 values\n\n### Scope\nEdge\n\n### Version Introduced\n4.7\n\n### V"
  },
  {
    "path": "Documentation/compatibility/incorrect-implementation-of-memberdescriptor_equals.md",
    "chars": 2143,
    "preview": "## Incorrect implementation of MemberDescriptor.Equals\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### Source Analyze"
  },
  {
    "path": "Documentation/compatibility/intermittently-unable-to-scroll-to-bottom-item-in-itemscontrols-when-using-customer-datatemplates.md",
    "chars": 1479,
    "preview": "## Intermittently unable to scroll to bottom item in ItemsControls (like ListBox and DataGrid) when using custom DataTem"
  },
  {
    "path": "Documentation/compatibility/interop-enable-winrt-iagileobject.md",
    "chars": 1782,
    "preview": "## .NET Interop will now QueryInterface for IAgileObject (a WinRT interface)\n\n### Scope\nEdge\n\n### Version Introduced\n4.8"
  },
  {
    "path": "Documentation/compatibility/interop-event-handlers-safearray.md",
    "chars": 942,
    "preview": "## .NET COM successfully marshals ByRef SafeArray parameters on events\n\n### Scope\nMinor\n\n### Version Introduced\n4.8\n\n###"
  },
  {
    "path": "Documentation/compatibility/ipad-should-not-be-used-in-custom-capabilities-file-because-it-is-now-a-browser-capability.md",
    "chars": 833,
    "preview": "## IPad should not be used in custom capabilities file because it is now a browser capability\n\n### Scope\nEdge\n\n### Versi"
  },
  {
    "path": "Documentation/compatibility/item-scrolling-a-flat-list-with-items-of-different-pixel-height.md",
    "chars": 2089,
    "preview": "## Item-scrolling a flat list with items of different pixel-height\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.1\n\n### V"
  },
  {
    "path": "Documentation/compatibility/items_clear-does-not-remove-duplicates-from-selecteditems.md",
    "chars": 1354,
    "preview": "## Items.Clear does not remove duplicates from SelectedItems\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Version R"
  },
  {
    "path": "Documentation/compatibility/keytips-behavior-improved-in-wpf.md",
    "chars": 860,
    "preview": "## Keytips behavior improved in WPF\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.2\n\n### Source Analyzer Status\nNotPlanned"
  },
  {
    "path": "Documentation/compatibility/linq-to-ef-join-throws-argumentoutofrangeexception.md",
    "chars": 2717,
    "preview": "## Linq to EF Join throws ArgumentOutOfRangeException\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Version Reverted"
  },
  {
    "path": "Documentation/compatibility/list_foreach-can-throw-exception-when-modifying-list-item.md",
    "chars": 917,
    "preview": "## List&lt;T&gt;.ForEach can throw exception when modifying list item\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### S"
  },
  {
    "path": "Documentation/compatibility/list_sort-algorithm-changed.md",
    "chars": 1555,
    "preview": "## List.Sort algorithm changed\n\n### Scope\nTransparent\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nNot planne"
  },
  {
    "path": "Documentation/compatibility/listboxitem-isselected-binding-issue-with-observablecollection_move.md",
    "chars": 1661,
    "preview": "## ListBoxItem IsSelected binding issue with ObservableCollection&lt;T&gt;.Move\n\n### Scope\nMinor\n\n### Version Introduced"
  },
  {
    "path": "Documentation/compatibility/log-file-name-created-by-the-objectcontext_createdatabase-method-has-changed-to-match-sql-server-specifications.md",
    "chars": 1023,
    "preview": "## Log file name created by the ObjectContext.CreateDatabase method has changed to match SQL Server specifications\n\n### "
  },
  {
    "path": "Documentation/compatibility/long-path-support.md",
    "chars": 1902,
    "preview": "## Long path support\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer Status\nInvestigating\n\n### Chang"
  },
  {
    "path": "Documentation/compatibility/machinekey_encode-and-machinekey_decode-methods-are-now-obsolete.md",
    "chars": 947,
    "preview": "## MachineKey.Encode and MachineKey.Decode methods are now obsolete\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### So"
  },
  {
    "path": "Documentation/compatibility/managed-browser-hosting-controls-from-the-_net-framework-1_1-and-2_0-are-blocked.md",
    "chars": 889,
    "preview": "## Managed browser hosting controls from the .NET Framework 1.1 and 2.0 are blocked\n\n### Scope\nMinor\n\n### Version Introd"
  },
  {
    "path": "Documentation/compatibility/marshal_sizeof-and-marshal_ptrtostructure-overloads-break-dynamic-code.md",
    "chars": 1832,
    "preview": "## Marshal.SizeOf and Marshal.PtrToStructure overloads break dynamic code\n\n### Scope\nMinor\n\n### Version Introduced\n4.5.1"
  },
  {
    "path": "Documentation/compatibility/mef-catalogs-implement-ienumerable-and-therefore-can-no-longer-be-used-to-create-a-serializer.md",
    "chars": 715,
    "preview": "## MEF catalogs implement IEnumerable and therefore can no longer be used to create a serializer\n\n### Scope\nMajor\n\n### V"
  },
  {
    "path": "Documentation/compatibility/minfreememorypercentagetoactiveservice-is-now-respected.md",
    "chars": 930,
    "preview": "## MinFreeMemoryPercentageToActiveService is now respected\n\n### Scope\nMinor\n\n### Version Introduced\n4.5.1\n\n### Source An"
  },
  {
    "path": "Documentation/compatibility/missing-target-framework-moniker-results-in-4_0-behavior.md",
    "chars": 1383,
    "preview": "## Missing Target Framework Moniker results in 4.0 behavior\n\n### Scope\nMajor\n\n### Version Introduced\n4.5\n\n### Source Ana"
  },
  {
    "path": "Documentation/compatibility/multi-line-asp_net-textbox-spacing-changed-when-using-antixssencoder.md",
    "chars": 1177,
    "preview": "## Multi-line ASP.Net TextBox spacing changed when using AntiXSSEncoder\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n##"
  },
  {
    "path": "Documentation/compatibility/multiple-items-in-a-single-tablelayoutpanel-cell-may-be-rearranged.md",
    "chars": 1330,
    "preview": "## Multiple items in a single TableLayoutPanel cell may be rearranged\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### "
  },
  {
    "path": "Documentation/compatibility/netdatacontractserializer-fails-to-deserialize-a-concurrentdictionary-serialized-with-a-different-_net-version.md",
    "chars": 1775,
    "preview": "## NetDataContractSerializer fails to deserialize a ConcurrentDictionary serialized with a different .NET version\n\n### S"
  },
  {
    "path": "Documentation/compatibility/new-(ambiguous)-dispatcher_invoke-overloads-could-result-in-different-behavior.md",
    "chars": 2137,
    "preview": "## New (ambiguous) Dispatcher.Invoke overloads could result in different behavior\n\n### Scope\nMinor\n\n### Version Introduc"
  },
  {
    "path": "Documentation/compatibility/new-64-bit-jit-compiler.md",
    "chars": 4493,
    "preview": "## New 64-bit JIT compiler in the .NET Framework 4.6\n\n### Scope\nEdge\n\n### Version Introduced\n4.6\n\n### Source Analyzer St"
  },
  {
    "path": "Documentation/compatibility/new-enum-values-in-wpf's-pagerangeselection.md",
    "chars": 1167,
    "preview": "## New enum values in WPF's PageRangeSelection\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nA"
  },
  {
    "path": "Documentation/compatibility/no-longer-able-to-set-enableviewstatemac-to-false.md",
    "chars": 919,
    "preview": "## No longer able to set EnableViewStateMac to false\n\n### Scope\nMajor\n\n### Version Introduced\n4.5.2\n\n### Source Analyzer"
  },
  {
    "path": "Documentation/compatibility/non-pooled-sql-connections-will-leak-memory-if-not-explicitly-disposed.md",
    "chars": 1107,
    "preview": "## Non-pooled SQL connections will leak memory if not explicitly disposed\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n#"
  },
  {
    "path": "Documentation/compatibility/null-coalescer-values-are-not-visible-in-debugger-until-one-step-later.md",
    "chars": 964,
    "preview": "## Null coalescer values are not visible in debugger until one step later\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n#"
  },
  {
    "path": "Documentation/compatibility/objectcontext_translate-and-objectcontext_executestorequery-now-support-enum-type.md",
    "chars": 1190,
    "preview": "## ObjectContext.Translate and ObjectContext.ExecuteStoreQuery now support enum type\n\n### Scope\nEdge\n\n### Version Introd"
  },
  {
    "path": "Documentation/compatibility/objectdisposedexception-thrown-by-wpf-spellchecker.md",
    "chars": 891,
    "preview": "## ObjectDisposedException thrown by WPF spellchecker\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.1\n\n### Version Reverte"
  },
  {
    "path": "Documentation/compatibility/obsoleteattribute-exports-as-both-obsoleteattribute-and-deprecatedattribute-in-winmd-scenarios.md",
    "chars": 1173,
    "preview": "## ObsoleteAttribute exports as both ObsoleteAttribute and DeprecatedAttribute in WinMD scenarios\n\n### Scope\nEdge\n\n### V"
  },
  {
    "path": "Documentation/compatibility/only-tls-1_0-1_1-and-1_2-protocols-supported-in-system_net_servicepointmanager-and-system_net_security_sslstream.md",
    "chars": 1505,
    "preview": "## Only Tls 1.0, 1.1 and 1.2 protocols supported in System.Net.ServicePointManager and System.Net.Security.SslStream\n\n##"
  },
  {
    "path": "Documentation/compatibility/operationcontext-current-returns-null-in-a-using-clause.md",
    "chars": 2729,
    "preview": "## OperationContext.Current may return null when called in a using clause\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n"
  },
  {
    "path": "Documentation/compatibility/opt-in-break-to-revert-from-different-4_5-sql-generation-to-simpler-4_0-sql-generation.md",
    "chars": 1097,
    "preview": "## Opt-in break to revert from different 4.5 SQL generation to simpler 4.0 SQL generation\n\n### Scope\nTransparent\n\n### Ve"
  },
  {
    "path": "Documentation/compatibility/page_loadcomplete-event-no-longer-causes-system_web_ui_webcontrols_entitydatasource-control-to-invoke-data-binding.md",
    "chars": 1380,
    "preview": "## Page.LoadComplete event no longer causes System.Web.UI.WebControls.EntityDataSource control to invoke data binding\n\n#"
  },
  {
    "path": "Documentation/compatibility/path-colon-checks-are-stricter.md",
    "chars": 1070,
    "preview": "## Path colon checks are stricter\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer Status\nNotPlanned\n\n"
  },
  {
    "path": "Documentation/compatibility/persian-calendar-now-uses-the-hijri-solar-algorithm.md",
    "chars": 1201,
    "preview": "## Persian calendar now uses the Hijri solar algorithm\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n\n### Source Analyzer"
  },
  {
    "path": "Documentation/compatibility/previewlostkeyboardfocus-is-called-repeatedly-if-its-handler-shows-a-message-box.md",
    "chars": 1895,
    "preview": "## PreviewLostKeyboardFocus is called repeatedly if its handler shows a Windows Forms message box\n\n### Scope\nEdge\n\n### V"
  },
  {
    "path": "Documentation/compatibility/product-versioning-changes-in-net-framework-4-6-and-later.md",
    "chars": 3499,
    "preview": "## Product versioning changes in the .NET Framework 4.6 and later versions\n\n### Scope\nMinor\n\n### Version Introduced\n4.6\n"
  },
  {
    "path": "Documentation/compatibility/profiling-asp_net-mvc4-apps-can-lead-to-fatal-execution-engine-error.md",
    "chars": 849,
    "preview": "## Profiling ASP.Net MVC4 apps can lead to Fatal Execution Engine Error\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n###"
  },
  {
    "path": "Documentation/compatibility/reflection-objects-can-no-longer-be-passed-from-managed-code-to-out-of-process-dcom-clients.md",
    "chars": 1156,
    "preview": "## Reflection objects can no longer be passed from managed code to out-of-process DCOM clients\n\n### Scope\nMinor\n\n### Ver"
  },
  {
    "path": "Documentation/compatibility/remove-ssl3-from-the-wcf-transportdefaults.md",
    "chars": 1359,
    "preview": "## Remove Ssl3 from the WCF TransportDefaults\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer Status\n"
  },
  {
    "path": "Documentation/compatibility/resgen-block-mark-of-the-web-content.md",
    "chars": 867,
    "preview": "## Resgen refuses to load content from the web\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.2\n\n### Source Analyzer Status"
  },
  {
    "path": "Documentation/compatibility/resolveassemblyreference-task-now-warns-of-dependencies-with-the-wrong-architecture.md",
    "chars": 1056,
    "preview": "## ResolveAssemblyReference task now warns of dependencies with the wrong architecture\n\n### Scope\nMinor\n\n### Version Int"
  },
  {
    "path": "Documentation/compatibility/ribbongroup-background-is-set-to-transparent-in-localized-builds.md",
    "chars": 859,
    "preview": "## RibbonGroup background is set to transparent in localized builds\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### V"
  },
  {
    "path": "Documentation/compatibility/right-clicking-on-a-wpf-datagrid-row-header-changes-the-datagrid-selection.md",
    "chars": 942,
    "preview": "## Right clicking on a WPF DataGrid row header changes the DataGrid selection\n\n### Scope\nEdge\n\n### Version Introduced\n4."
  },
  {
    "path": "Documentation/compatibility/rsacng-now-correctly-loads-rsa-keys-of-non-standard-keysize.md",
    "chars": 2156,
    "preview": "## RSACng now correctly loads RSA keys of non-standard key size\n\n### Scope\nEdge\n\n### Version Introduced\n4.6.2\n\n### Sourc"
  },
  {
    "path": "Documentation/compatibility/rsacng_verifyhash-now-returns-false-for-any-verification-failure.md",
    "chars": 1094,
    "preview": "## RSACng.VerifyHash now returns False for any verification failure\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### "
  },
  {
    "path": "Documentation/compatibility/scrolling-a-wpf-treeview-or-grouped-listbox-in-a-virtualizingstackpanel-can-cause-a-hang.md",
    "chars": 1533,
    "preview": "## Scrolling a WPF TreeView or grouped ListBox in a VirtualizingStackPanel can cause an application to become unresponsi"
  },
  {
    "path": "Documentation/compatibility/serialization-deserialization-of-mailmessage-objects.md",
    "chars": 884,
    "preview": "## Deserialization of MailMessage objects serialized under the .NET Framework 4.5 may fail\n\n### Scope\nMinor\n\n### Version"
  },
  {
    "path": "Documentation/compatibility/serialization-of-control-characters-with-datacontractjsonserializer-is-now-compatible-with-ecmascript-v6-and-v8.md",
    "chars": 1565,
    "preview": "## Serialization of control characters with DataContractJsonSerializer is now compatible with ECMAScript V6 and V8\n\n### "
  },
  {
    "path": "Documentation/compatibility/servicepointmanager.securityprotocol-defaults-to-securityprotocoltype.systemdefault.md",
    "chars": 2483,
    "preview": "## Default value of ServicePointManager.SecurityProtocol is SecurityProtocolType.System.Default\n\n### Scope\nMinor\n\n### Ve"
  },
  {
    "path": "Documentation/compatibility/sharing-session-state-with-asp_net-stateserver-requires-all-servers-in-the-web-farm-to-use-the-same-_net-framework-version.md",
    "chars": 1162,
    "preview": "## Sharing session state with Asp.Net StateServer requires all servers in the web farm to use the same .NET Framework ve"
  },
  {
    "path": "Documentation/compatibility/soapformatter-cannot-deserialize-hashtable-and-similar-ordered-collection-objects.md",
    "chars": 1803,
    "preview": "## SoapFormatter cannot deserialize Hashtable and similar ordered collection objects\n\n### Scope\nMinor\n\n### Version Intro"
  },
  {
    "path": "Documentation/compatibility/some-_net-apis-cause-first-chance-(handled)-entrypointnotfoundexceptions.md",
    "chars": 1477,
    "preview": "## Some .NET APIs cause first chance (handled) EntryPointNotFoundExceptions\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n"
  },
  {
    "path": "Documentation/compatibility/some-workflow-drag-and-drop-apis-are-obsolete.md",
    "chars": 1230,
    "preview": "## Some WorkFlow drag-and-drop APIs are obsolete\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Source Analyzer Statu"
  },
  {
    "path": "Documentation/compatibility/sql-server-database-connection-that-resolves-to-localhost.md",
    "chars": 1088,
    "preview": "## Attempting a TCP/IP connection to a SQL Server database that resolves to `localhost` fails\n\n### Scope\nMinor\n\n### Vers"
  },
  {
    "path": "Documentation/compatibility/sql_variant-data-uses-sql_variant-collation-rather-than-database-collation.md",
    "chars": 624,
    "preview": "## Sql_variant data uses sql_variant collation rather than database collation\n\n### Scope\nTransparent\n\n### Version Introd"
  },
  {
    "path": "Documentation/compatibility/sqlbulkcopy-uses-destination-column-encoding-for-strings.md",
    "chars": 1346,
    "preview": "## SqlBulkCopy uses destination column encoding for strings\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source Anal"
  },
  {
    "path": "Documentation/compatibility/sqlconnection-can-no-longer-connect-to-sql-server-1997-or-databases-using-the-via-adapter.md",
    "chars": 1508,
    "preview": "## SqlConnection can no longer connect to SQL Server 1997 or databases using the VIA adapter\n\n### Scope\nEdge\n\n### Versio"
  },
  {
    "path": "Documentation/compatibility/sqlconnection_open-fails-on-windows-7-with-non-ifs-winsock-bsp-or-lsp-present.md",
    "chars": 1384,
    "preview": "## SqlConnection.Open fails on Windows 7 with non-IFS Winsock BSP or LSP present\n\n### Scope\nMinor\n\n### Version Introduce"
  },
  {
    "path": "Documentation/compatibility/sslstream-support-for-tls-alerts.md",
    "chars": 3099,
    "preview": "## SslStream supports TLS Alerts\n\n### Scope\nEdge\n\n### Version Introduced\n4.7\n\n### Source Analyzer Status\nNotPlanned\n\n###"
  },
  {
    "path": "Documentation/compatibility/system_activities-is-now-aptca.md",
    "chars": 747,
    "preview": "## System.Activities is now APTCA\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nAvailable\n\n###"
  },
  {
    "path": "Documentation/compatibility/system_net_peertopeer_collaboration-unavailable-on-windows-8.md",
    "chars": 542,
    "preview": "## System.Net.PeerToPeer.Collaboration unavailable on Windows 8\n\n### Scope\nMajor\n\n### Version Introduced\n4.5\n\n### Source"
  },
  {
    "path": "Documentation/compatibility/system_servicemodel_web_webservicehost-object-no-longer-adds-a-default-endpoint.md",
    "chars": 2606,
    "preview": "## System.ServiceModel.Web.WebServiceHost object no longer adds a default endpoint\n\n### Scope\nMinor\n\n### Version Introdu"
  },
  {
    "path": "Documentation/compatibility/system_threading_monitor_lock_acquisition_scalability_improvement.md",
    "chars": 1983,
    "preview": "## System.Threading.Monitor lock acquision scalability improvement\n\n### Scope\n\nTransparent\n\n### Version Introduced\n4.8\n\n"
  },
  {
    "path": "Documentation/compatibility/system_threading_tasks_task-no-longer-throw-objectdisposedexception-after-object-is-disposed.md",
    "chars": 1276,
    "preview": "## System.Threading.Tasks.Task no longer throw ObjectDisposedException after object is disposed\n\n### Scope\nMinor\n\n### Ve"
  },
  {
    "path": "Documentation/compatibility/system_threading_timer_lock_contention_improvement.md",
    "chars": 886,
    "preview": "## System.Threading.Timer lock contention improvement\n\n### Scope\n\nTransparent\n\n### Version Introduced\n4.8\n\n### Source An"
  },
  {
    "path": "Documentation/compatibility/system_uri-escaping-now-supports-rfc-3986.md",
    "chars": 1487,
    "preview": "## System.Uri escaping now supports RFC 3986\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nAv"
  },
  {
    "path": "Documentation/compatibility/system_uri-parsing-adheres-to-rfc-3987.md",
    "chars": 1796,
    "preview": "## System.Uri parsing adheres to RFC 3987\n\n### Scope\nMajor\n\n### Version Introduced\n4.5\n\n### Source Analyzer Status\nAvail"
  },
  {
    "path": "Documentation/compatibility/system_uri_iswellformeduristring-method-returns-false-for-relative-uris-with-a-colon-char-in-first-segment.md",
    "chars": 1439,
    "preview": "## System.Uri.IsWellFormedUriString method returns false for relative URIs with a colon char in first segment\n\n### Scope"
  },
  {
    "path": "Documentation/compatibility/targetframeworkname-for-default-app-domain-no-longer-defaults-to-null-if-not-set.md",
    "chars": 1188,
    "preview": "## TargetFrameworkName for default app domain no longer defaults to null if not set\n\n### Scope\nEdge\n\n### Version Introdu"
  },
  {
    "path": "Documentation/compatibility/the-_net-framework-4_6-does-not-use-a-4_5_x_x-version-when-registering-itself-in-the-registry.md",
    "chars": 1015,
    "preview": "## The .NET Framework 4.6 does not use a 4.5.x.x version when registering itself in the registry\n\n### Scope\nEdge\n\n### Ve"
  },
  {
    "path": "Documentation/compatibility/the-replace-method-in-odata-urls-is-disabled-by-default.md",
    "chars": 925,
    "preview": "## The Replace method in OData URLs is disabled by default\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n\n### Source Analy"
  },
  {
    "path": "Documentation/compatibility/throttle-concurrent-requests-per-session.md",
    "chars": 1128,
    "preview": "## Throttle concurrent requests per session\n\n### Scope\nEdge\n\n### Version Introduced\n4.7\n\n### Source Analyzer Status\nNotP"
  },
  {
    "path": "Documentation/compatibility/tls-1-x-by-default-passes-sch-send-aux-record-flag-to-the-underlying-schannel-api.md",
    "chars": 1934,
    "preview": "## TLS 1.x by default passes the SCH_SEND_AUX_RECORD flag to the underlying SCHANNEL API\n\n### Scope\nEdge\n\n### Version In"
  },
  {
    "path": "Documentation/compatibility/two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported.md",
    "chars": 1400,
    "preview": "## Two-way data-binding to a property with a non-public setter is not supported\n\n### Scope\nMinor\n\n### Version Introduced"
  },
  {
    "path": "Documentation/compatibility/type_isassignablefrom-returns-wrong-result-for-generic-variables-with-constraints.md",
    "chars": 1067,
    "preview": "## Type.IsAssignableFrom returns wrong result for generic variables with constraints\n\n### Scope\nMinor\n\n### Version Intro"
  },
  {
    "path": "Documentation/compatibility/unexpected-invalidcastexception-from-invokemethod-activity-in-wf4.md",
    "chars": 1145,
    "preview": "## Unexpected InvalidCastException from InvokeMethod activity in WF4\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### V"
  },
  {
    "path": "Documentation/compatibility/unicode-data-now-support-standard-v8_0-categories.md",
    "chars": 1068,
    "preview": "## Unicode standard version 8.0 categories now supported\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### Source Anal"
  },
  {
    "path": "Documentation/compatibility/uri-reserved-characters-consistent.md",
    "chars": 2130,
    "preview": "## Ensure System.Uri uses a consistent reserved character set\n\n### Scope\nMinor\n\n### Version Introduced\n4.7.2\n\n### Source"
  },
  {
    "path": "Documentation/compatibility/uri-unc-shares-normalized.md",
    "chars": 1021,
    "preview": "## Allow Unicode in URIs that resemble UNC shares\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.2\n\n### Source Analyzer Sta"
  },
  {
    "path": "Documentation/compatibility/uri-unicode-bidirectional-characters.md",
    "chars": 1966,
    "preview": "## Allow Unicode Bidirectional Control Characters in URIs\n\n### Scope\nMinor\n\n### Version Introduced\n4.7.2\n\n### Source Ana"
  },
  {
    "path": "Documentation/compatibility/uri-unicode-scheme-only-relative.md",
    "chars": 1467,
    "preview": "## Support special relative URI notation when Unicode is present\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.2\n\n### Sour"
  },
  {
    "path": "Documentation/compatibility/vb_net-no-longer-supports-partial-namespace-qualification-for-system_windows-apis.md",
    "chars": 1027,
    "preview": "## VB.NET no longer supports partial namespace qualification for System.Windows APIs\n\n### Scope\nMinor\n\n### Version Intro"
  },
  {
    "path": "Documentation/compatibility/wcf-accessbility-combobox-high-contrast-issue-in-svcTraceViewer-tool.md",
    "chars": 1438,
    "preview": "## svcTraceViewer ComboBox high contrast change\n\n### Scope\nEdge\n\n### Version Introduced\n4.8\n### Source Analyzer Status\nN"
  },
  {
    "path": "Documentation/compatibility/wcf-avoid-endless-recursion-in-two-iworkflowinstancemanagement-apis.md",
    "chars": 3451,
    "preview": "## Avoiding endless recursion for IWorkflowInstanceManagement.TransactedCancel and IWorkflowInstanceManagement.Transacte"
  },
  {
    "path": "Documentation/compatibility/wcf-binding-with-the-transportwithmessagecredential-security-mode.md",
    "chars": 1437,
    "preview": "## WCF binding with the TransportWithMessageCredential security mode\n\n### Scope\nTransparent\n\n### Version Introduced\n4.6."
  },
  {
    "path": "Documentation/compatibility/wcf-deadlock-results-when-using-reentrant-services.md",
    "chars": 1851,
    "preview": "## Deadlock may result when using Reentrant services\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### Source Analyzer"
  },
  {
    "path": "Documentation/compatibility/wcf-message-security-unable-to-use-tls1_1-and-tls1_2.md",
    "chars": 944,
    "preview": "## WCF message security now is able to use TLS1.1 and TLS1.2\n\n### Scope\nEdge\n\n### Version Introduced\n4.7\n\n### Source Ana"
  },
  {
    "path": "Documentation/compatibility/wcf-services-using-nettcp-with-ssl-security-and-md5-certificate-authentication.md",
    "chars": 2612,
    "preview": "## WCF services that use NETTCP with SSL security and MD5 certificate authentication\n\n### Scope\nMinor\n\n### Version Intro"
  },
  {
    "path": "Documentation/compatibility/wcf-transport-security-supports-certificates-stored-using-cng.md",
    "chars": 1819,
    "preview": "## WCF transport security supports certificates stored using CNG\n\n### Scope\nMinor\n\n### Version Introduced\n4.6.2\n\n### Sou"
  },
  {
    "path": "Documentation/compatibility/webutility_htmldecode-no-longer-decodes-invalid-input-sequences.md",
    "chars": 1239,
    "preview": "## WebUtility.HtmlDecode no longer decodes invalid input sequences\n\n### Scope\nMinor\n\n### Version Introduced\n4.5\n\n### Sou"
  },
  {
    "path": "Documentation/compatibility/webutility_htmlencode-and-webutility_htmldecode-round-trip-bmp-correctly.md",
    "chars": 1277,
    "preview": "## WebUtility.HtmlEncode and WebUtility.HtmlDecode round-trip BMP correctly\n\n### Scope\nEdge\n\n### Version Introduced\n4.5\n"
  },
  {
    "path": "Documentation/compatibility/wf-serializes-expressions_literal-datetimes-differently.md",
    "chars": 1591,
    "preview": "## WF serializes Expressions.Literal&lt;T&gt; DateTimes differently now (breaks custom XAML parsers)\n\n### Scope\nEdge\n\n##"
  },
  {
    "path": "Documentation/compatibility/windows-forms-icon-tobitmap-method-successfully-converts-icons-with-png-frames.md",
    "chars": 1815,
    "preview": "## Icon.ToBitmap successfully converts icons with PNG frames into Bitmap objects\n\n### Scope\nMinor\n\n### Version Introduce"
  },
  {
    "path": "Documentation/compatibility/winform's-DomainUpDownControl-button's-actions-in-sync.md",
    "chars": 1980,
    "preview": "## WinForm's Domain upbutton and downbutton actions are in sync now\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.2\n\n### S"
  },
  {
    "path": "Documentation/compatibility/winform's-checkforoverflowunderflow-property-is-now-true-for-system_drawing.md",
    "chars": 612,
    "preview": "## WinForm's CheckForOverflowUnderflow property is now true for System.Drawing\n\n### Scope\nEdge\n\n### Version Introduced\n4"
  },
  {
    "path": "Documentation/compatibility/winforms-ContextMenuStrip-SourceControl-property-change.md",
    "chars": 1969,
    "preview": "## ContextMenuStrip.SourceControl property contains a valid control in the case of nested ToolStripMenuItems\n\n### Scope\n"
  },
  {
    "path": "Documentation/compatibility/winforms-PrivateFontCollection-Font-handle-leak-fix.md",
    "chars": 2180,
    "preview": "## PrivateFontCollection.AddFontFile method releases Font resources\n\n### Scope\nEdge\n\n### Version Introduced\n4.7.2\n\n### S"
  },
  {
    "path": "Documentation/compatibility/winforms-accessibility-changes-471.md",
    "chars": 13780,
    "preview": "## Accessibility improvements in Windows Forms controls\n\n### Scope\nMajor\n\n### Version Introduced\n4.7.1\n\n### Source Anal"
  }
]

// ... and 151 more files (download for full content)

About this extraction

This page contains the full source code of the microsoft/dotnet GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 351 files (1.3 MB), approximately 326.6k tokens, and a symbol index with 3 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!