diff --git a/docs/architecture/containerized-lifecycle/Microsoft-platform-tools-containerized-apps/index.md b/docs/architecture/containerized-lifecycle/Microsoft-platform-tools-containerized-apps/index.md
index e13432d419b61..843f161ba9888 100644
--- a/docs/architecture/containerized-lifecycle/Microsoft-platform-tools-containerized-apps/index.md
+++ b/docs/architecture/containerized-lifecycle/Microsoft-platform-tools-containerized-apps/index.md
@@ -10,7 +10,7 @@ ms.date: 02/15/2019
Figure 3-1 shows the main pillars in the life cycle of Docker apps classified by the type of work delivered by multiple teams (app-development, DevOps infrastructure processes, and IT management and operations). Usually, in the enterprise, the profiles of "the persona" responsible for each area are different. So are their skills.
:::image type="complex" source="./media/index/microsoft-tools-contanerized-docker-app.png" alt-text="Diagram showing the Microsoft tools needed to maintain Docker apps.":::
-Microsoft tools. For the Develop/Design workload: Docker engine for Windows, VS and VS Code, .NET Core, Azure Kubernetes Service. For the Build/Test/Ship workload: Azure DevOps, Team Foundation Server, Docker CLI, Azure Kubernetes Service. For the Run/Monitor/Manage workload: Azure Monitor, Azure Portal Azure Kubernetes Services, Service Fabric, other orchestrators.
+Microsoft tools. For the Develop/Design workload: Docker engine for Windows, Visual Studio and Visual Studio Code, .NET Core, Azure Kubernetes Service. For the Build/Test/Ship workload: Azure DevOps, Team Foundation Server, Docker CLI, Azure Kubernetes Service. For the Run/Monitor/Manage workload: Azure Monitor, Azure portal, Azure Kubernetes Services, Service Fabric, other orchestrators.
:::image-end:::
**Figure 3-1.** Main pillars in the life cycle for containerized Docker applications with Microsoft platform and tools
diff --git a/docs/architecture/serverless/serverless-business-scenarios.md b/docs/architecture/serverless/serverless-business-scenarios.md
index 3cab0a92946ae..4270e2a2f5c04 100644
--- a/docs/architecture/serverless/serverless-business-scenarios.md
+++ b/docs/architecture/serverless/serverless-business-scenarios.md
@@ -87,13 +87,13 @@ This sample is a generic function (`.csx` file) that can be used to convert any
## Serverless for mobile
-Azure Functions are easy to implement and maintain, and accessible through HTTP. They are a great way to implement an API for a mobile application. Microsoft offers great cross-platform tools for iOS, Android, and Windows with Xamarin. As such, Xamarin and Azure Functions are working great together. This article shows how to implement an Azure Function in the Azure Web Portal or in Visual Studio at first, and build a cross-platform client with Xamarin.Forms, running on Android, iOS, and Windows.
+Azure Functions are easy to implement and maintain, and accessible through HTTP. They are a great way to implement an API for a mobile application. Microsoft offers great cross-platform tools for iOS, Android, and Windows with Xamarin. As such, Xamarin and Azure Functions are working great together. This article shows how to implement an Azure Function in the Azure portal or in Visual Studio at first, and build a cross-platform client with Xamarin.Forms running on Android, iOS, and Windows.
[Implementing a simple Azure Function with a Xamarin.Forms client](https://docs.microsoft.com/samples/azure-samples/functions-xamarin-getting-started/implementing-a-simple-azure-function-with-a-xamarinforms-client/)
## Serverless messaging
-This sample shows how to utilize Durable Functions' fan out pattern to load an arbitrary number of messages across any number of sessions/partitions. It targets Service Bus, Event Hubs, or Storage Queues. The sample also adds the ability to consume those messages with another Azure Function and load the resulting timing data in to another Event Hub. The data is then ingested into analytics services like Azure Data Explorer.
+This sample shows how to utilize Durable Functions' fan-out pattern to load an arbitrary number of messages across any number of sessions/partitions. It targets Service Bus, Event Hubs, or Storage Queues. The sample also adds the ability to consume those messages with another Azure Function and load the resulting timing data in to another Event Hub. The data is then ingested into analytics services like Azure Data Explorer.
[Produce and Consume messages through Service Bus, Event Hubs, and Storage Queues with Azure Functions](https://docs.microsoft.com/samples/azure-samples/durable-functions-producer-consumer/product-consume-messages-az-functions/)
diff --git a/docs/core/compatibility/2.2-3.0.md b/docs/core/compatibility/2.2-3.0.md
index 07ec61f515d94..3ab6de1d526e8 100644
--- a/docs/core/compatibility/2.2-3.0.md
+++ b/docs/core/compatibility/2.2-3.0.md
@@ -267,7 +267,7 @@ If you're migrating from version 2.2 to version 3.0 of .NET Core, ASP.NET Core,
- [Floating point formatting and parsing behavior changes](#floating-point-formatting-and-parsing-behavior-changed)
- [Floating-point parsing operations no longer fail or throw an OverflowException](#floating-point-parsing-operations-no-longer-fail-or-throw-an-overflowexception)
- [InvalidAsynchronousStateException moved to another assembly](#invalidasynchronousstateexception-moved-to-another-assembly)
-- [NET Core 3.0 follows Unicode best practices when replacing ill-formed UTF-8 byte sequences](#net-core-30-follows-unicode-best-practices-when-replacing-ill-formed-utf-8-byte-sequences)
+- [Replacing ill-formed UTF-8 byte sequences follows Unicode guidelines](#replacing-ill-formed-utf-8-byte-sequences-follows-unicode-guidelines)
- [TypeDescriptionProviderAttribute moved to another assembly](#typedescriptionproviderattribute-moved-to-another-assembly)
- [JSON serializer exception type changed from JsonException to NotSupportedException](#json-serializer-exception-type-changed-from-jsonexception-to-notsupportedexception)
- [Change in semantics of (string)null in Utf8JsonWriter](#change-in-semantics-of-stringnull-in-utf8jsonwriter)
diff --git a/docs/core/compatibility/2.2-3.1.md b/docs/core/compatibility/2.2-3.1.md
index 38bef24ac15e0..b5cf5f047a1b2 100644
--- a/docs/core/compatibility/2.2-3.1.md
+++ b/docs/core/compatibility/2.2-3.1.md
@@ -270,7 +270,7 @@ If you're migrating from version 2.2 to version 3.1 of .NET Core, ASP.NET Core,
- [Floating point formatting and parsing behavior changes](#floating-point-formatting-and-parsing-behavior-changed)
- [Floating-point parsing operations no longer fail or throw an OverflowException](#floating-point-parsing-operations-no-longer-fail-or-throw-an-overflowexception)
- [InvalidAsynchronousStateException moved to another assembly](#invalidasynchronousstateexception-moved-to-another-assembly)
-- [NET Core 3.0 follows Unicode best practices when replacing ill-formed UTF-8 byte sequences](#net-core-30-follows-unicode-best-practices-when-replacing-ill-formed-utf-8-byte-sequences)
+- [Replacing ill-formed UTF-8 byte sequences follows Unicode guidelines](#replacing-ill-formed-utf-8-byte-sequences-follows-unicode-guidelines)
- [TypeDescriptionProviderAttribute moved to another assembly](#typedescriptionproviderattribute-moved-to-another-assembly)
- [JSON serializer exception type changed from JsonException to NotSupportedException](#json-serializer-exception-type-changed-from-jsonexception-to-notsupportedexception)
- [Change in semantics of (string)null in Utf8JsonWriter](#change-in-semantics-of-stringnull-in-utf8jsonwriter)
diff --git a/docs/core/compatibility/corefx.md b/docs/core/compatibility/corefx.md
index 9cdeb94366cce..71b92cd9af53a 100644
--- a/docs/core/compatibility/corefx.md
+++ b/docs/core/compatibility/corefx.md
@@ -16,7 +16,7 @@ The following breaking changes are documented on this page:
| [Floating point formatting and parsing behavior changes](#floating-point-formatting-and-parsing-behavior-changed) | 3.0 |
| [Floating-point parsing operations no longer fail or throw an OverflowException](#floating-point-parsing-operations-no-longer-fail-or-throw-an-overflowexception) | 3.0 |
| [InvalidAsynchronousStateException moved to another assembly](#invalidasynchronousstateexception-moved-to-another-assembly) | 3.0 |
-| [NET Core 3.0 follows Unicode best practices when replacing ill-formed UTF-8 byte sequences](#net-core-30-follows-unicode-best-practices-when-replacing-ill-formed-utf-8-byte-sequences) | 3.0 |
+| [Replacing ill-formed UTF-8 byte sequences follows Unicode guidelines](#replacing-ill-formed-utf-8-byte-sequences-follows-unicode-guidelines) | 3.0 |
| [TypeDescriptionProviderAttribute moved to another assembly](#typedescriptionproviderattribute-moved-to-another-assembly) | 3.0 |
| [ZipArchiveEntry no longer handles archives with inconsistent entry sizes](#ziparchiveentry-no-longer-handles-archives-with-inconsistent-entry-sizes) | 3.0 |
| [JSON serializer exception type changed from JsonException to NotSupportedException](#json-serializer-exception-type-changed-from-jsonexception-to-notsupportedexception) | 3.0 |
diff --git a/docs/core/porting/index.md b/docs/core/porting/index.md
index 63c9bf395ebd5..bfd20ada5e752 100644
--- a/docs/core/porting/index.md
+++ b/docs/core/porting/index.md
@@ -27,7 +27,7 @@ The following tools will be used throughout the process:
## Porting a solution
-When there are multiple projects in a solution the porting can seem more complicated because you must address projects in a specific order. The conversion process should be a bottom-up approach, where the projects with no dependencies on other projects in the solution are converted first, and continue up through the whole solution.
+When there are multiple projects in a solution, the porting can seem more complicated because you must address projects in a specific order. The conversion process should be a bottom-up approach, where the projects with no dependencies on other projects in the solution are converted first, and continue up through the whole solution.
In order to identify the order projects should be migrated, you can use the following tools:
@@ -40,7 +40,7 @@ We recommend you use the following process when porting your project to .NET Cor
1. Convert all of your `packages.config` dependencies to the [PackageReference](/nuget/consume-packages/package-references-in-project-files) format with the [conversion tool in Visual Studio](/nuget/consume-packages/migrate-packages-config-to-package-reference).
- This step involves converting your dependencies from the legacy `packages.config` format. `packages.config` doesn't work on .NET Core, so this conversion is required if you have package dependencies. It also only requires the dependencies you are directly using in a project which will make later steps easier by reducing the amount of dependencies you must manage.
+ This step involves converting your dependencies from the legacy `packages.config` format. `packages.config` doesn't work on .NET Core, so this conversion is required if you have package dependencies. It also only requires the dependencies you are directly using in a project, which makes later steps easier by reducing the number of dependencies you must manage.
1. Convert your project file to the new SDK-style files structure. You can create new projects for .NET Core and copy over source files, or attempt to convert your existing project file with a tool.
@@ -60,7 +60,7 @@ We recommend you use the following process when porting your project to .NET Cor
While reading the reports generated by the analyzer, the important information is the actual APIs that are being used and not necessarily the percentage of support for the target platform. Many APIs have equivalent options in .NET Standard/Core, and so understanding the scenarios your library or application needs the API for will help determine the implication for portability.
- There are some cases where APIs are not equivalent and you'll need to do some compiler preprocessor directives (i.e. `#if NET45`) to special case the platforms. At this point, you're project will still be targeting .NET Framework. For each of these targeted cases, it is recommended to use well-known conditionals that can be understood as a scenario. For example, AppDomain support in .NET Core is limited, but for the scenario of loading and unloading assemblies, there is a new API that is not available in .NET Core. A common way to handle this in code would be something like this:
+ There are some cases where APIs are not equivalent and you'll need to do some compiler preprocessor directives (that is, `#if NET45`) to special case the platforms. At this point, your project will still be targeting .NET Framework. For each of these targeted cases, it is recommended to use well-known conditionals that can be understood as a scenario. For example, AppDomain support in .NET Core is limited, but for the scenario of loading and unloading assemblies, there is a new API that's not available in .NET Core. A common way to handle this in code would be something like this:
```csharp
#if FEATURE_APPDOMAIN_LOADING
@@ -78,7 +78,7 @@ We recommend you use the following process when porting your project to .NET Cor
1. At this point, you can switch to targeting .NET Core (generally for applications) or .NET Standard (for libraries).
- The choice between .NET Core and .NET Standard is largely dependent on where the project will be run. If it is a library that will be consumed by other applications or distributed via NuGet, the preference is usually to target .NET Standard. However, there may be APIs that are only available on .NET Core for performance or other reasons; if that's the case, .NET Core should be targeted with potentially a .NET Standard build available as well with reduced performance or funcitonality. By targeting .NET Standard, the project will be ready to run on new platforms (such as WebAssembly). If the project has dependencies on specific app frameworks (such as ASP.NET Core), then the target will be limited by what the dependencies support.
+ The choice between .NET Core and .NET Standard is largely dependent on where the project will be run. If it is a library that will be consumed by other applications or distributed via NuGet, the preference is usually to target .NET Standard. However, there may be APIs that are only available on .NET Core for performance or other reasons; if that's the case, .NET Core should be targeted with potentially a .NET Standard build available as well with reduced performance or functionality. By targeting .NET Standard, the project will be ready to run on new platforms (such as WebAssembly). If the project has dependencies on specific app frameworks (such as ASP.NET Core), then the target will be limited by what the dependencies support.
If there are no preprocessor directives to conditional compile code for .NET Framework or .NET Standard, this will be as simple as finding the following in the project file:
@@ -92,17 +92,17 @@ We recommend you use the following process when porting your project to .NET Cor
netcoreapp3.1
```
- However, if this is a library that you want to continue supporting .NET Framework specific builds for some reason, you can [multi-target](../../standard/library-guidance/cross-platform-targeting.md) by replacing it with the following:
+ However, if this is a library for which you want to continue supporting .NET Framework-specific builds, you can [multi-target](../../standard/library-guidance/cross-platform-targeting.md) by replacing it with the following:
```xml
net472;netstandard2.0
```
- If you're using Windows-specific APIs (such as registry access), you should install the [Windows Compatibility Pack](./windows-compat-pack.md).
+ If you're using Windows-specific APIs (such as registry access), install the [Windows Compatibility Pack](./windows-compat-pack.md).
## Next steps
->[!div class="nextstepaction"]
->[Analyze dependencies](third-party-deps.md)
->[Package NuGet Package](../deploying/creating-nuget-packages.md)
->[ASP.NET to ASP.NET Core Migration](/aspnet/core/migration/proper-to-2x)
+> [!div class="nextstepaction"]
+> [Analyze dependencies](third-party-deps.md)
+> [Package NuGet Package](../deploying/creating-nuget-packages.md)
+> [ASP.NET to ASP.NET Core Migration](/aspnet/core/migration/proper-to-2x)
diff --git a/docs/csharp/misc/cs0200.md b/docs/csharp/misc/cs0200.md
index 691639caa7e22..09d9dde7d020e 100644
--- a/docs/csharp/misc/cs0200.md
+++ b/docs/csharp/misc/cs0200.md
@@ -7,12 +7,14 @@ helpviewer_keywords:
- "CS0200"
ms.assetid: 1990704a-edfa-4dbd-8477-d9c7aae58c96
---
-# Compiler Error CS0200
+# Compiler error CS0200
+
Property or indexer 'property' cannot be assigned to -- it is read only
-An attempt was made to assign a value to a [property](../programming-guide/classes-and-structs/using-properties.md), but the property does not have a set accessor or the assignment was outside of the constructor. Resolve the error by adding a set accessor. For more information, see [How to declare and use read write properties](../programming-guide/classes-and-structs/how-to-declare-and-use-read-write-properties.md).
+An attempt was made to assign a value to a [property](../programming-guide/classes-and-structs/using-properties.md), but the property does not have a set accessor or the assignment was outside of the constructor. Resolve the error by adding a set accessor. For more information, see [How to declare and use read-write properties](../programming-guide/classes-and-structs/how-to-declare-and-use-read-write-properties.md).
## Examples
+
The following sample generates CS0200:
```csharp
@@ -43,7 +45,7 @@ public class Example
}
```
-The following sample uses [auto-implemented properties](../programming-guide/classes-and-structs/auto-implemented-properties.md), [object initializers](../programming-guide/classes-and-structs/object-and-collection-initializers.md), and still generates CS0200:
+The following sample uses [auto-implemented properties](../programming-guide/classes-and-structs/auto-implemented-properties.md) and [object initializers](../programming-guide/classes-and-structs/object-and-collection-initializers.md) and still generates CS0200:
```csharp
// CS0200.cs
@@ -66,7 +68,7 @@ public class Example
}
```
-Assignment to a property or indexer 'property' that is read only, can be achieved through adding a set accessor or by assigning to the property in the object's constructor.
+To assign to a property or indexer 'property' that's read-only, add a set accessor or assign the value in the object's constructor.
```csharp
public class Example
diff --git a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md
index e66e75636fb0b..5b683381cb1ee 100644
--- a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md
+++ b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md
@@ -8,32 +8,33 @@ dev_langs:
- "cpp"
ms.assetid: 359b10eb-ec05-4cc6-ac96-c2b060afc4de
---
-# XML Schema (XSD) Validation with XmlSchemaSet
+# XML schema (XSD) validation with XmlSchemaSet
+
XML documents can be validated against an XML schema definition language (XSD) schema in an .
-## Validating XML Documents
+## Validate XML documents
XML documents are validated by the method of the class. To validate an XML document, construct an object that contains an XML schema definition language (XSD) schema with which to validate the XML document.
> [!NOTE]
> The namespace contains extension methods that make it easy to validate an XML tree against an XSD file when using [LINQ to XML (C#)](../../../csharp/programming-guide/concepts/linq/linq-to-xml-overview.md) and [LINQ to XML (Visual Basic)](../../../visual-basic/programming-guide/concepts/linq/linq-to-xml.md). For more information on validating XML documents with LINQ to XML, see [How to validate using XSD (LINQ to XML) (C#)](../../../csharp/programming-guide/concepts/linq/how-to-validate-using-xsd-linq-to-xml.md) and [How to: Validate Using XSD (LINQ to XML) (Visual Basic)](../../../visual-basic/programming-guide/concepts/linq/how-to-validate-using-xsd-linq-to-xml.md).
- An individual schema or a set of schemas (as an ) can be added to an by passing either one as a parameter to the method of . Note that when validating a document the target namespace of the document must match the target namespace of the schema in the schema set.
+ An individual schema or a set of schemas (as an ) can be added to an by passing either one as a parameter to the method of . When validating a document the target namespace of the document must match the target namespace of the schema in the schema set.
The following is an example XML document.
- [!code-xml[XSDInference Examples#5](../../../../samples/snippets/xml/VS_Snippets_Data/XSDInference Examples/XML/contosoBooks.xml#5)]
+ [!code-xml[XSDInference Examples #5](../../../../samples/snippets/xml/VS_Snippets_Data/XSDInference Examples/XML/contosoBooks.xml#5)]
The following is the schema that validates the example XML document.
- [!code-xml[XSDInference Examples#6](../../../../samples/snippets/xml/VS_Snippets_Data/XSDInference Examples/XML/contosoBooks.xsd#6)]
+ [!code-xml[XSDInference Examples #6](../../../../samples/snippets/xml/VS_Snippets_Data/XSDInference Examples/XML/contosoBooks.xsd#6)]
In the code example that follows, the schema above is added to the property of the object. The object is passed as a parameter to the method of the object, which validates the XML document above.
The property of the object is set to `Schema` to enforce validation of the XML document by the method of the object. A is added to the object to handle any or events raised by errors found during the validation process of both the XML document and the schema.
- [!code-cpp[XmlSchemaSetOverall Example#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaSetOverall Example/CPP/xmlschemasetexample.cpp#1)]
- [!code-csharp[XmlSchemaSetOverall Example#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaSetOverall Example/CS/xmlschemasetexample.cs#1)]
- [!code-vb[XmlSchemaSetOverall Example#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaSetOverall Example/VB/xmlschemasetexample.vb#1)]
+ [!code-cpp[XmlSchemaSetOverall Example #1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaSetOverall Example/CPP/xmlschemasetexample.cpp#1)]
+ [!code-csharp[XmlSchemaSetOverall Example #1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaSetOverall Example/CS/xmlschemasetexample.cs#1)]
+ [!code-vb[XmlSchemaSetOverall Example #1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaSetOverall Example/VB/xmlschemasetexample.vb#1)]
## See also
diff --git a/docs/standard/memory-and-spans/memory-t-usage-guidelines.md b/docs/standard/memory-and-spans/memory-t-usage-guidelines.md
index ac423069b8bf8..465f659492266 100644
--- a/docs/standard/memory-and-spans/memory-t-usage-guidelines.md
+++ b/docs/standard/memory-and-spans/memory-t-usage-guidelines.md
@@ -17,7 +17,7 @@ Since buffers can be passed around between APIs, and since buffers can sometimes
- **Ownership**. The owner of a buffer instance is responsible for lifetime management, including destroying the buffer when it's no longer in use. All buffers have a single owner. Generally the owner is the component that created the buffer or that received the buffer from a factory. Ownership can also be transferred; **Component-A** can relinquish control of the buffer to **Component-B**, at which point **Component-A** may no longer use the buffer, and **Component-B** becomes responsible for destroying the buffer when it's no longer in use.
-- **Consumption**. The consumer of a buffer instance is allowed to use the buffer instance by reading from it and possibly writing to it. Buffers can have one consumer at a time unless some external synchronization mechanism is provided. Note that the active consumer of a buffer isn't necessarily the buffer's owner.
+- **Consumption**. The consumer of a buffer instance is allowed to use the buffer instance by reading from it and possibly writing to it. Buffers can have one consumer at a time unless some external synchronization mechanism is provided. The active consumer of a buffer isn't necessarily the buffer's owner.
- **Lease**. The lease is the length of time that a particular component is allowed to be the consumer of the buffer.
@@ -80,7 +80,7 @@ In this code:
- The `WriteInt32ToBuffer` and `DisplayBufferToConsole` methods accept as a public API. Therefore, they are consumers of the buffer. And they only consume it one at a time.
-Although the `WriteInt32ToBuffer` method is intended to write a value to the buffer, the `DisplayBufferToConsole` method isn't. To reflect this, it could have accepted an argument of type . For additional information on , see [Rule #2: Use ReadOnlySpan\ or ReadOnlyMemory\ if the buffer should be read-only](#rule-2).
+Although the `WriteInt32ToBuffer` method is intended to write a value to the buffer, the `DisplayBufferToConsole` method isn't. To reflect this, it could have accepted an argument of type . For more information on , see [Rule #2: Use ReadOnlySpan\ or ReadOnlyMemory\ if the buffer should be read-only](#rule-2).
### "Ownerless" Memory\ instances
@@ -104,7 +104,7 @@ Because a memory block is owned but is intended to be passed to multiple compone
- While the stack-allocated nature of optimizes performance and makes the preferred type for operating on a memory block, it also subjects to some major restrictions. It is important to know when to use a and when to use .
-The following are our recommendations for successfully using and its related types. Note that guidance that applies to and also applies to and unless we explicitly note otherwise.
+The following are our recommendations for successfully using and its related types. Guidance that applies to and also applies to and unless we explicitly note otherwise.
**Rule #1: For a synchronous API, use Span\ instead of Memory\ as a parameter if possible.**
diff --git a/docs/whats-new/2019-10.md b/docs/whats-new/2019-10.md
index 7d0b26646fc11..2058d475761bf 100644
--- a/docs/whats-new/2019-10.md
+++ b/docs/whats-new/2019-10.md
@@ -10,7 +10,7 @@ Welcome to what's new in .NET docs for October 2019. This article lists some of
## Architecture guides
-- [Modules, handlers, and middleware](../architecture/blazor-for-web-forms-developers/middleware.md) - Add middleware chapter to blazor ebook
+- [Modules, handlers, and middleware](../architecture/blazor-for-web-forms-developers/middleware.md) - Add middleware chapter to Blazor ebook
## .NET Core
@@ -36,8 +36,8 @@ Welcome to what's new in .NET docs for October 2019. This article lists some of
### New articles
-- [Reference assemblies](../standard/assembly/reference-assemblies.md) - Add reference assemblies topic
-- [System.IO.Pipelines in .NET](../standard/io/pipelines.md) - pipeline doc -
+- [Reference assemblies](../standard/assembly/reference-assemblies.md) - Add reference assemblies article
+- [System.IO.Pipelines in .NET](../standard/io/pipelines.md) - Pipeline article
### Updated articles
diff --git a/includes/core-changes/corefx/3.0/move-invalidasynchronousstateexception.md b/includes/core-changes/corefx/3.0/move-invalidasynchronousstateexception.md
index 46b16b52d2865..9bf4214c72e00 100644
--- a/includes/core-changes/corefx/3.0/move-invalidasynchronousstateexception.md
+++ b/includes/core-changes/corefx/3.0/move-invalidasynchronousstateexception.md
@@ -14,7 +14,7 @@ Starting with .NET Core 3.0, it is found in the *System.ComponentModel.Primitive
#### Recommended action
-This change only affects applications that use reflection to load the by calling a method such as or an overload of that assumes the type is in a particular assembly. If that is the case, the assembly the assembly referenced in the method call should be updated to reflect the type's new assembly location.
+This change only affects applications that use reflection to load the by calling a method such as or an overload of that assumes the type is in a particular assembly. If that is the case, update the assembly referenced in the method call to reflect the type's new assembly location.
#### Category
diff --git a/includes/core-changes/corefx/3.0/net-core-3-0-follows-unicode-utf8-best-practices.md b/includes/core-changes/corefx/3.0/net-core-3-0-follows-unicode-utf8-best-practices.md
index 11397b213485d..b7f50eae6a04f 100644
--- a/includes/core-changes/corefx/3.0/net-core-3-0-follows-unicode-utf8-best-practices.md
+++ b/includes/core-changes/corefx/3.0/net-core-3-0-follows-unicode-utf8-best-practices.md
@@ -1,6 +1,6 @@
-### .NET Core 3.0 follows Unicode best practices when replacing ill-formed UTF-8 byte sequences
+### Replacing ill-formed UTF-8 byte sequences follows Unicode guidelines
-When the class encounters an ill-formed UTF-8 byte sequence during a byte-to-character transcoding operation, it will replace that sequence with a '�' (U+FFFD REPLACEMENT CHARACTER) character in the output string. .NET Core 3.0 differs from previous versions of .NET Core and the .NET Framework by following the Unicode best practice for performing this replacement during the transcoding operation.
+When the class encounters an ill-formed UTF-8 byte sequence during a byte-to-character transcoding operation, it replaces that sequence with a '�' (U+FFFD REPLACEMENT CHARACTER) character in the output string. .NET Core 3.0 differs from previous versions of .NET Core and the .NET Framework by following the Unicode best practice for performing this replacement during the transcoding operation.
This is part of a larger effort to improve UTF-8 handling throughout .NET, including by the new and types. The type was given improved error handling mechanics so that it produces output consistent with the newly introduced types.
@@ -8,15 +8,15 @@ This is part of a larger effort to improve UTF-8 handling throughout .NET, inclu
Starting with .NET Core 3.0, when transcoding bytes to characters, the class performs character substitution based on Unicode best practices. The substitution mechanism used is described by [The Unicode Standard, Version 12.0, Sec. 3.9 (PDF)](https://www.unicode.org/versions/Unicode12.0.0/ch03.pdf) in the heading titled _U+FFFD Substitution of Maximal Subparts_.
-This behavior _only_ applies when the input byte sequence contains ill-formed UTF-8 data. Additionally, if the instance has been constructed with `throwOnInvalidBytes: true` (see the [UTF8Encoding constructor documentation](, the `UTF8Encoding` instance will continue to throw on invalid input rather than perform U+FFFD replacement.
+This behavior _only_ applies when the input byte sequence contains ill-formed UTF-8 data. Additionally, if the instance has been constructed with `throwOnInvalidBytes: true`, the `UTF8Encoding` instance will continue to throw on invalid input rather than perform U+FFFD replacement. For more information about the `UTF8Encoding` constructor, see .
-The following illustrates the impact of this change with an invalid 3-byte input:
+The following table illustrates the impact of this change with an invalid 3-byte input:
-|Ill-formed 3-byte input|Output before .NET Core 3.0|Output starting with .NET Core 3.0|
-|---|---|---|
-| `[ ED A0 90 ]` | `[ FFFD FFFD ]` (2-character output)| `[ FFFD FFFD FFFD ]` (3-character output)|
+| Ill-formed 3-byte input | Output before .NET Core 3.0 | Output starting with .NET Core 3.0 |
+|-------------------------|--------------------------------------|-------------------------------------------|
+| `[ ED A0 90 ]` | `[ FFFD FFFD ]` (2-character output) | `[ FFFD FFFD FFFD ]` (3-character output) |
-This 3-char output is the preferred output, according to _Table 3-9_ of the previously linked Unicode Standard PDF.
+The 3-char output is the preferred output, according to _Table 3-9_ of the previously linked Unicode Standard PDF.
#### Version introduced