-
Notifications
You must be signed in to change notification settings - Fork 6k
.NET Core breaking changes #12805
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
.NET Core breaking changes #12805
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
9366c66
Began documenting
b47d6fc
Additional changes
bd5652d
Another commit
9f27c3f
Additional changes
fbee128
Finished breaking changes
865d674
Minor changes, updated TOC
9b001ef
Corrected build warnings
e615f9d
Fixed broken links, changed header levels
371ed58
Apply suggestions from code review
8cae034
Minor change
a3e1081
Addressed review comments
d4d9bfb
Apply suggestions from code review
c03399e
Replaced numbered list items with headings
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
--- | ||
title: Breaking change categories - .NET Core | ||
description: Learn about the ways in which breaking changes are categorized in .NET Core. | ||
author: rpetrusha | ||
ms.author: ronpet | ||
ms.date: 06/10/2019 | ||
--- | ||
# Breaking change categories | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should you add an intro saying what this article is about? |
||
*Compatibility* refers to the ability to compile or execute code on a version of a .NET implementation other than the one with which the code was originally developed. A particular change can affect compatibility in six different ways. The [individual kinds of changes that are considered when evaluating compatibility](index.md) fall into the first five categories. | ||
|
||
## Behavioral change | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should this be a numbered list instead? |
||
|
||
A behavioral change represents a change to the behavior of a member. The change may be externally visible (for example, a method may throw a different exception), or it may represent a changed implementation (for example, a change in the way a return value is calculated, the addition or removal of internal method calls, or even a significant performance improvement). | ||
|
||
When behavioral changes are externally visible and modify a type's public contract, they are easy to evaluate since they affect binary compatibility. Implementation changes are much more difficult to evaluate; depending on the nature of the change and the frequency and patterns of use of the API, the impact of a change can range from severe to innocuous. | ||
|
||
## Binary compatibility | ||
|
||
Binary compatibility refers to the ability of a consumer of an API to use the API on a newer version without recompilation. Such changes as adding methods or adding a new interface implementation to a type do not affect binary compatibility. However, removing or altering an assembly's public signatures so that consumers can no longer access the same interface exposed by the assembly does affect binary compatibility. A change of this kind is termed a *binary incompatible change*. | ||
|
||
rpetrusha marked this conversation as resolved.
Show resolved
Hide resolved
|
||
## Source compatibility | ||
|
||
Source compatibility refers to the ability of existing consumers of an API to recompile against a newer version without any source changes. A *source incompatible change* occurs when a consumer needs to modify source code for it to build successfully against a newer version of an API. | ||
|
||
## Design-time compatibility | ||
|
||
Design-time compatibility refers to preserving the design-time experience across versions of Visual Studio and other design-time environments. While this can involve the behavior or the UI of designers, the most important aspect of design-time compatibility concerns project compatibility. A project or solution must be able to be opened and used on a newer version of the design-time environment. | ||
|
||
## Backwards compatibility | ||
|
||
Backwards compatibility refers to the ability of an existing consumer of an API to run against a new version while behaving in the same way. Both behavioral changes and changes in binary compatibility affect backwards compatibility. If a consumer is not able to run or behaves differently when running against the newer version of the API, the API is *backwards incompatible*. | ||
|
||
Changes that affect backwards compatibility are strongly discouraged since developers by default expect backwards compatibility in newer versions of an API. | ||
|
||
## Forward compatibility | ||
|
||
Forward compatibility refers to the ability of an existing consumer of an API to run against an older version while exhibiting the same behavior. If a consumer is not able to run or behaves differently when run against an older version of the API, the API is *forward incompatible*. | ||
|
||
Maintaining forward compatibility virtually precludes any changes or additions from version to version, since those changes prevent a consumer that targets a later version from running under an earlier version. Developers expect that a consumer that relies on a newer API may not function correctly against the older API. | ||
|
||
Maintaining forward compatibility is not a goal of .NET Core. | ||
|
||
## See also | ||
|
||
[Evaluate breaking changes in .NET Core](index.md) |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't need the
- .NET Core
on the title.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's better to have @Thraka - that's why I suggested to add it. It's part of the SEO guidelines to have a brand suffix.
https://review.docs.microsoft.com/en-us/new-hope/quality/catstestcases/seo-rule?branch=master#title-metadata---title-suffix
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm confused then 😄 I thought this is automatically appended via the docfx file??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Depends on the section of the docs. Not for every folder.