diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index add97bb7064f9..d1ecec325f3b1 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -904,6 +904,11 @@ "redirect_url": "/dotnet/standard/net-standard", "redirect_document_id": true }, + { + "source_path": "docs/standard/microservices-architecture/architect-microservice-container-applications/communication-between-microservices.md", + "redirect_url": "/dotnet/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture", + "redirect_document_id": true + }, { "source_path": "docs/standard/serialization/marshal-by-value.md", "redirect_url": "/dotnet/standard/serialization-concepts" diff --git a/api/index.md b/api/index.md index 65e8ef0d7846a..bb3b12d274e8d 100644 --- a/api/index.md +++ b/api/index.md @@ -2,7 +2,7 @@ layout: ApiBrowserPage hide_bc: true title: .NET API Browser -quickFilterColumn1: netframework-4.7,netcore-2.0,netstandard-2.0 +quickFilterColumn1: netframework-4.7.1,netcore-2.0,netstandard-2.0 quickFilterColumn2: xamarinios-10.8,xamarinandroid-7.1,xamarinmac-3.0 quickFilterColumn3: azuremgmtresourcemanager-1.5.0-preview,appinsights-2.3.0-beta3,aspnetcore-2.0 --- diff --git a/docs/core/deploying/runtime-store.md b/docs/core/deploying/runtime-store.md index 4ef6a409e384e..ed44ad9285833 100644 --- a/docs/core/deploying/runtime-store.md +++ b/docs/core/deploying/runtime-store.md @@ -81,9 +81,9 @@ The following *artifact.xml* file is produced after running the previous example ```xml - - - + + + ``` diff --git a/docs/core/windows-prerequisites.md b/docs/core/windows-prerequisites.md index a2284684930c6..a8d8fd01caf70 100644 --- a/docs/core/windows-prerequisites.md +++ b/docs/core/windows-prerequisites.md @@ -35,7 +35,7 @@ See [.NET Core 1.x Supported OS Versions](https://github.com/dotnet/core/blob/ma .NET Core 1.1 and earlier requires the Visual C++ Redistributable when running on Windows versions earlier than Windows 10 and Windows Server 2016. This dependency is automatically installed by the .NET Core installer. -[Microsoft Visual C++ 2015 Redistributable Update 3](https://www.microsoft.com/en-us/download/details.aspx?id=52685) must be manually installed when: +[Microsoft Visual C++ 2015 Redistributable Update 3](https://www.microsoft.com/download/details.aspx?id=52685) must be manually installed when: * Installing .NET Core with the [installer script](./tools/dotnet-install-script.md). * Deploying a self-contained .NET Core application. diff --git a/docs/csharp/language-reference/keywords/interpolated-strings.md b/docs/csharp/language-reference/keywords/interpolated-strings.md index 73b82de15913a..80e8ef8e7ba1b 100644 --- a/docs/csharp/language-reference/keywords/interpolated-strings.md +++ b/docs/csharp/language-reference/keywords/interpolated-strings.md @@ -1,6 +1,6 @@ --- title: "Interpolated Strings (C#)" -ms.date: "09/27/2017" +ms.date: "10/18/2017" ms.prod: .net ms.technology: - "devlang-csharp" @@ -17,12 +17,12 @@ Used to construct strings. An interpolated string looks like a template string The arguments of an interpolated string are easier to understand than a [composite format string](../../../standard/base-types/composite-formatting.md#composite-format-string). For example, the interpolated string ```csharp -Console.WriteLine($"Name = {name}, hours = {date:hh}"); +Console.WriteLine($"Name = {name}, hours = {hours:hh}"); ``` -contains two interpolated expressions, '{name}' and '{date:hh}'. The equivalent composite format string is: +contains two interpolated expressions, '{name}' and '{hour:hh}'. The equivalent composite format string is: ```csharp -Console.WriteLine("Name = {0}, hours = {1:hh}", name, date); +Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours); ``` The structure of an interpolated string is: @@ -48,7 +48,7 @@ If the interpolated string contains other characters with special meaning in an [!code-cs[interpolated-strings4](../../../../samples/snippets/csharp/language-reference/keywords/interpolated-strings4.cs#1)] -Verbatim interpolated strings use the `$` character followed by the `@` character. For more information about verbatim strings, see the [string](strings.md) topic. The following code is a modified version of the previous snippet using a verbatim interpolated string: +Verbatim interpolated strings use the `$` character followed by the `@` character. For more information about verbatim strings, see the [string](string.md) topic. The following code is a modified version of the previous snippet using a verbatim interpolated string: [!code-cs[interpolated-strings4](../../../../samples/snippets/csharp/language-reference/keywords/interpolated-strings5.cs#1)] diff --git a/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md b/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md index d53aa4ed67b76..d8ca1afaf515f 100644 --- a/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md +++ b/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md @@ -44,7 +44,8 @@ When the C# compiler encounters an `#if` directive, followed eventually by an [# ```csharp // preprocessor_if.cs -#define DEBUG#define MYTEST +#define DEBUG +#define MYTEST using System; public class MyClass { diff --git a/docs/csharp/misc/cs0636.md b/docs/csharp/misc/cs0636.md index b06fc8bbb2f3a..eef5724ca5b81 100644 --- a/docs/csharp/misc/cs0636.md +++ b/docs/csharp/misc/cs0636.md @@ -17,7 +17,7 @@ ms.author: "wiwagn" # Compiler Error CS0636 The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit) - You must use the **StructLayout(LayoutKind.Explicit)** attribute on the struct declaration, if it contains any members marked with the **FieldOffset** attribute. For more information, see [FieldOffset](xref:System​.Runtime​.InteropServices.FieldOffsetAttribute). + You must use the **StructLayout(LayoutKind.Explicit)** attribute on the struct declaration, if it contains any members marked with the **FieldOffset** attribute. For more information, see [FieldOffset](xref:System.Runtime.InteropServices.FieldOffsetAttribute). The following sample generates CS0636: diff --git a/docs/csharp/programming-guide/classes-and-structs/codesnippet/CSharp/named-and-optional-arguments_1.cs b/docs/csharp/programming-guide/classes-and-structs/codesnippet/CSharp/named-and-optional-arguments_1.cs index 069d2c86740f8..07203a13de157 100644 --- a/docs/csharp/programming-guide/classes-and-structs/codesnippet/CSharp/named-and-optional-arguments_1.cs +++ b/docs/csharp/programming-guide/classes-and-structs/codesnippet/CSharp/named-and-optional-arguments_1.cs @@ -3,22 +3,32 @@ class NamedExample static void Main(string[] args) { // The method can be called in the normal way, by using positional arguments. - Console.WriteLine(CalculateBMI(123, 64)); + PrintOrderDetails("Gift Shop", 31, "Red Mug"); - // Named arguments can be supplied for the parameters in either order. - Console.WriteLine(CalculateBMI(weight: 123, height: 64)); - Console.WriteLine(CalculateBMI(height: 64, weight: 123)); + // Named arguments can be supplied for the parameters in any order. + PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop"); + PrintOrderDetails(productName: "Red Mug", sellerName: "Gift Shop", orderNum: 31); - // Positional arguments cannot follow named arguments. - // The following statement causes a compiler error. - //Console.WriteLine(CalculateBMI(weight: 123, 64)); + // Named arguments mixed with positional arguments are valid + // as long as they are used in their correct position. + PrintOrderDetails("Gift Shop", 31, productName: "Red Mug"); + PrintOrderDetails(sellerName: "Gift Shop", 31, productName: "Red Mug"); // C# 7.2 onwards + PrintOrderDetails("Gift Shop", orderNum: 31, "Red Mug"); // C# 7.2 onwards - // Named arguments can follow positional arguments. - Console.WriteLine(CalculateBMI(123, height: 64)); + // However, mixed arguments are invalid if used out-of-order. + // The following statements will cause a compiler error. + // PrintOrderDetails(productName: "Red Mug", 31, "Gift Shop"); + // PrintOrderDetails(31, sellerName: "Gift Shop", "Red Mug"); + // PrintOrderDetails(31, "Red Mug", sellerName: "Gift Shop"); } - static int CalculateBMI(int weight, int height) + static void PrintOrderDetails(string sellerName, int orderNum, string productName) { - return (weight * 703) / (height * height); + if (string.IsNullOrWhiteSpace(sellerName)) + { + throw new ArgumentException(message: "Seller name cannot be null or empty.", paramName: nameof(sellerName)); + } + + Console.WriteLine($"Seller: {sellerName}, Order #: {orderNum}, Product: {productName}"); } - } \ No newline at end of file + } diff --git a/docs/csharp/programming-guide/classes-and-structs/named-and-optional-arguments.md b/docs/csharp/programming-guide/classes-and-structs/named-and-optional-arguments.md index dd3bb59712d71..42b37dbc81181 100644 --- a/docs/csharp/programming-guide/classes-and-structs/named-and-optional-arguments.md +++ b/docs/csharp/programming-guide/classes-and-structs/named-and-optional-arguments.md @@ -29,28 +29,37 @@ ms.author: "wiwagn" Named and optional parameters, when used together, enable you to supply arguments for only a few parameters from a list of optional parameters. This capability greatly facilitates calls to COM interfaces such as the Microsoft Office Automation APIs. ## Named Arguments - Named arguments free you from the need to remember or to look up the order of parameters in the parameter lists of called methods. The parameter for each argument can be specified by parameter name. For example, a function that calculates body mass index (BMI) can be called in the standard way by sending arguments for weight and height by position, in the order defined by the function. + Named arguments free you from the need to remember or to look up the order of parameters in the parameter lists of called methods. The parameter for each argument can be specified by parameter name. For example, a function that prints order details (such as, seller name, order number & product name) can be called in the standard way by sending arguments by position, in the order defined by the function. - `CalculateBMI(123, 64);` + `PrintOrderDetails("Gift Shop", 31, "Red Mug");` - If you do not remember the order of the parameters but you do know their names, you can send the arguments in either order, weight first or height first. + If you do not remember the order of the parameters but know their names, you can send the arguments in any order. - `CalculateBMI(weight: 123, height: 64);` + `PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop");` - `CalculateBMI(height: 64, weight: 123);` + `PrintOrderDetails(productName: "Red Mug", sellerName: "Gift Shop", orderNum: 31);` - Named arguments also improve the readability of your code by identifying what each argument represents. + Named arguments also improve the readability of your code by identifying what each argument represents. In the example method below, the `sellerName` cannot be null or whitespace. As both `sellerName` and `productName` are string types, instead of sending arguments by position, it makes sense to use named arguments to disambiguate the two and reduce confusion for anyone reading the code. - A named argument can follow positional arguments, as shown here. + Named arguments, when used with positional arguments, are valid as long as + +- they're not followed by any positional arguments, or + + `PrintOrderDetails("Gift Shop", 31, productName: "Red Mug");` + +- _starting with C# 7.2_, they're used in the correct position. In the example below, the parameter `orderNum` is in the correct position but isn't explicitly named. + + `PrintOrderDetails(sellerName: "Gift Shop", 31, productName: "Red Mug");` - `CalculateBMI(123, height: 64);` - - However, a positional argument cannot follow a named argument. The following statement causes a compiler error. - - `//CalculateBMI(weight: 123, 64);` + However, out-of-order named arguments are invalid if they're followed by positional arguments. + + ```csharp + // This generates CS1738: Named argument specifications must appear after all fixed arguments have been specified. + PrintOrderDetails(productName: "Red Mug", 31, "Gift Shop"); + ``` ## Example - The following code implements the examples from this section. + The following code implements the examples from this section along with some additional ones. [!code-cs[csProgGuideNamedAndOptional#1](../../../csharp/programming-guide/classes-and-structs/codesnippet/CSharp/named-and-optional-arguments_1.cs)] diff --git a/docs/csharp/tutorials/console-teleprompter.md b/docs/csharp/tutorials/console-teleprompter.md index 9e005f18b6f8a..cef32ba247a7f 100644 --- a/docs/csharp/tutorials/console-teleprompter.md +++ b/docs/csharp/tutorials/console-teleprompter.md @@ -105,7 +105,7 @@ using System.IO; ``` The `IEnumerable` interface is defined in the -`System.Collections.Generic` namespace. The @System.IO.File class is defined in the +`System.Collections.Generic` namespace. The class is defined in the `System.IO` namespace. This method is a special type of C# method called an *Enumerator method*. @@ -123,7 +123,7 @@ indicates that there are no more items. There are two other C# syntax elements that may be new to you. The `using` statement in this method manages resource cleanup. The variable that is initialized in the `using` statement (`reader`, in this example) must -implement the `IDisposable` interface. The @System.IDisposable interface +implement the `IDisposable` interface. The interface defines a single method, `Dispose`, that should be called when the resource should be released. The compiler generates that call when execution reaches the closing brace of the `using` statement. The @@ -134,8 +134,8 @@ statement. The `reader` variable is defined using the `var` keyword. `var` defines an *implicitly typed local variable*. That means the type of the variable is determined by the compile time type of the object assigned to the -variable. Here, that is the return value from @System.IO.File.OpenText, which is -a @System.IO.StreamReader object. +variable. Here, that is the return value from the method, which is +a object. Now, let’s fill in the code to read the file in the `Main` method: @@ -228,7 +228,7 @@ In this final step, you’ll add the code to write the output asynchronously in one task, while also running another task to read input from the user if they want to speed up or slow down the text display. This has a few steps in it and by the end, you’ll have all the updates that you need. -The first step is to create an asynchronous @System.Threading.Tasks.Task returning method that +The first step is to create an asynchronous returning method that represents the code you’ve created so far to read and display the file. Add this method to your `Program` class (it’s taken from the body of your @@ -250,7 +250,7 @@ private static async Task ShowTeleprompter() ``` You’ll notice two changes. First, in the body of the method, instead of -calling @System.Threading.Tasks.Task.Wait to synchronously wait for a task to finish, this version +calling to synchronously wait for a task to finish, this version uses the `await` keyword. In order to do that, you need to add the `async` modifier to the method signature. This method returns a `Task`. Notice that there are no return statements that return a `Task` object. Instead, that @@ -300,9 +300,9 @@ private static async Task GetInput() } ``` -This creates a lambda expression to represent an @System.Action delegate that reads a key +This creates a lambda expression to represent an delegate that reads a key from the Console and modifies a local variable representing the delay when -the user presses the ‘<’ or ‘>’ keys. This method uses @System.Console.ReadKey +the user presses the ‘<’ or ‘>’ keys. This method uses to block and wait for the user to press a key. To finish this feature, you need to create a new `async Task` returning @@ -368,7 +368,7 @@ private static async Task RunTeleprompter() } ``` -The one new method here is the @System.Threading.Tasks.Task.WhenAny(System.Threading.Tasks.Task[]) call. That creates a `Task` +The one new method here is the call. That creates a `Task` that finishes as soon as any of the tasks in its argument list completes. Next, you need to update both the `ShowTeleprompter` and `GetInput` methods to diff --git a/docs/framework/get-started/system-requirements.md b/docs/framework/get-started/system-requirements.md index 3827627b247ef..f90148a243fa3 100644 --- a/docs/framework/get-started/system-requirements.md +++ b/docs/framework/get-started/system-requirements.md @@ -71,6 +71,7 @@ The .NET Framework requires administrator privileges for installation. If you do | Operating system | Supported editions | Preinstalled with the OS | Installable separately | | ---------------- | ------------------ | ------------------------ | ---------------------- | +| Windows Server, version 1709 | 64-bit | .NET Framework 4.7.1 | -- | | Windows Server 2016 | 64-bit | [!INCLUDE[net_v462](../../../includes/net-v462-md.md)] | .NET Framework 4.7

.NET Framework 4.7.1 | | Windows Server 2012 R2 | 64-bit | [!INCLUDE[net_v451](../../../includes/net-v451-md.md)] | [!INCLUDE[net_v452](../../../includes/net-v452-md.md)]

[!INCLUDE[net_v46](../../../includes/net-v46-md.md)]

[!INCLUDE[net_v461](../../../includes/net-v461-md.md)]

[!INCLUDE[net_v462](../../../includes/net-v462-md.md)]

.NET Framework 4.7

.NET Framework 4.7.1 | | Windows Server 2012 (64-bit edition) | 64-bit| [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] | [!INCLUDE[net_v451](../../../includes/net-v451-md.md)]

[!INCLUDE[net_v452](../../../includes/net-v452-md.md)]

[!INCLUDE[net_v46](../../../includes/net-v46-md.md)]

[!INCLUDE[net_v461](../../../includes/net-v461-md.md)]

[!INCLUDE[net_v462](../../../includes/net-v462-md.md)]

.NET Framework 4.7

.NET Framework 4.7.1 | diff --git a/docs/framework/install/guide-for-developers.md b/docs/framework/install/guide-for-developers.md index 08bc01cb872e7..00ff897f11ec7 100644 --- a/docs/framework/install/guide-for-developers.md +++ b/docs/framework/install/guide-for-developers.md @@ -34,7 +34,7 @@ Use the following table for quick links, or read further for details. To view th |.NET Framework version|Developer installation|Redistributable installation|Platform support| |----------------------------|----------------------------|----------------------------------|----------------------| -|**4.7.1**|[NET Framework 4.7.1 Dev Pack](http://go.microsoft.com/fwlink/?LinkId=852105)|[Download page for 4.7.1 web installer](http://go.microsoft.com/fwlink/?LinkId=852095)

[Download page for 4.7.1 offline installer](http://go.microsoft.com/fwlink/?LinkId=852107)|Included in:
Windows 10 Fall Creators Update

You can install on:
Windows 10 Creators Update
Windows 10 Anniversary Update
Windows 8.1 and earlier
Windows Server 2012 R2 and earlier
(for a full list, see [system requirements](~/docs/framework/get-started/system-requirements.md))|| +|**4.7.1**|[NET Framework 4.7.1 Dev Pack](http://go.microsoft.com/fwlink/?LinkId=852105)|[Download page for 4.7.1 web installer](http://go.microsoft.com/fwlink/?LinkId=852095)

[Download page for 4.7.1 offline installer](http://go.microsoft.com/fwlink/?LinkId=852107)|Included in:
Windows 10 Fall Creators Update
Windows Server, version 1709

You can install on:
Windows 10 Creators Update
Windows 10 Anniversary Update
Windows 8.1 and earlier
Windows Server 2012 R2 and earlier
(for a full list, see [system requirements](~/docs/framework/get-started/system-requirements.md))|| |**4.7**|[NET Framework 4.7 Dev Pack](http://go.microsoft.com/fwlink/?LinkId=825319)|[Download page for 4.7 web installer](http://go.microsoft.com/fwlink/?LinkId=825299)

[Download page for 4.7 offline installer](http://go.microsoft.com/fwlink/?LinkId=825303)|Included in:
Windows 10 Creators Update

You can install on:
Windows 10 Anniversary Update
Windows 8.1 and earlier
Windows Server 2012 R2 and earlier
(for a full list, see [system requirements](~/docs/framework/get-started/system-requirements.md))|| |**4.6.2**|[NET Framework 4.6.2 Dev Pack](http://go.microsoft.com/fwlink/?LinkId=780617)|[Download page for 4.6.2 web installer](http://go.microsoft.com/fwlink/?LinkId=780597)

[Download page for 4.6.2 offline installer](http://go.microsoft.com/fwlink/?LinkId=780601)|Included in:
Windows 10 Anniversary Edition

You can install on:
Windows 10
Windows 8.1 and earlier
Windows Server 2012 R2 and earlier
(for a full list, see [system requirements](~/docs/framework/get-started/system-requirements.md))| |**4.6.1**|[NET Framework 4.6.1 Dev Pack](http://go.microsoft.com/fwlink/?LinkId=690706)|[Download page for 4.6.1 web installer](http://go.microsoft.com/fwlink/?LinkId=671729)

[Download page for 4.6.1 offline installer](http://go.microsoft.com/fwlink/?LinkId=671744)|You can install on:
Windows 10
Windows 8.1 and earlier
Windows Server 2012 R2 and earlier
(for a full list, see [system requirements](~/docs/framework/get-started/system-requirements.md))| diff --git a/docs/framework/migration-guide/retargeting/index.md b/docs/framework/migration-guide/retargeting/index.md index 4834a2c7a6106..1b39e09a6ae3d 100644 --- a/docs/framework/migration-guide/retargeting/index.md +++ b/docs/framework/migration-guide/retargeting/index.md @@ -13,7 +13,7 @@ ms.author: "ronpet" manager: "wpickett" --- -# "Retargeting Changes in the .NET Framework" +# Retargeting Changes in the .NET Framework [!include[introduction](../../../../includes/migration-guide/retargeting/introduction.md)] ## Usage diff --git a/docs/framework/migration-guide/runtime/index.md b/docs/framework/migration-guide/runtime/index.md index fca4bb055aa53..5909dd9a9c2ac 100644 --- a/docs/framework/migration-guide/runtime/index.md +++ b/docs/framework/migration-guide/runtime/index.md @@ -13,7 +13,7 @@ ms.author: "ronpet" manager: "wpickett" --- -# "Runtime Changes in the .NET Framework" +# Runtime Changes in the .NET Framework [!include[introduction](../../../../includes/migration-guide/runtime/introduction.md)] ## Usage diff --git a/docs/framework/wpf/advanced/printing-overview.md b/docs/framework/wpf/advanced/printing-overview.md index decf0c8c555b4..7da27595b7d96 100644 --- a/docs/framework/wpf/advanced/printing-overview.md +++ b/docs/framework/wpf/advanced/printing-overview.md @@ -69,7 +69,7 @@ With [!INCLUDE[TLA#tla_winfx](../../../../includes/tlasharptla-winfx-md.md)], ap - Print Schema. The public schema is updated regularly and enables rapid extension of device capabilities. (See **PrintTicket and PrintCapabilities** below.) -- Extensible Filter Pipeline. The [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] printer driver (XPSDrv) filter pipeline was designed to enable both direct and scalable printing of [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] documents. (Lookup "XPSDrv" in the [Windows Driver Development Kit](https://msdn.microsoft.com/library/windows/hardware/ff557573.aspx).) +- Extensible Filter Pipeline. The [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] printer driver (XPSDrv) filter pipeline was designed to enable both direct and scalable printing of [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] documents. (Lookup "XPSDrv" in the [Windows Driver Kit](https://msdn.microsoft.com/library/windows/hardware/ff557573.aspx).) ### Print Path Architecture While both [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] and [!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] applications support [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)], [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] and [!INCLUDE[TLA2#tla_winforms](../../../../includes/tla2sharptla-winforms-md.md)] applications use a [!INCLUDE[TLA2#tla_gdi](../../../../includes/tla2sharptla-gdi-md.md)] to [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] conversion in order to create [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] formatted content for the [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] printer driver (XPSDrv). These applications are not required to use the [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] print path, and can continue to use [!INCLUDE[TLA#tla_emf](../../../../includes/tlasharptla-emf-md.md)] based printing. However, most [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] features and enhancements are only available to applications that target the [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] print path. @@ -122,7 +122,7 @@ With [!INCLUDE[TLA#tla_winfx](../../../../includes/tlasharptla-winfx-md.md)], ap For applications that do not require [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] functionality or support, the current [!INCLUDE[TLA2#tla_gdi](../../../../includes/tla2sharptla-gdi-md.md)] print path remains unchanged. -- For additional reference material on the [!INCLUDE[TLA2#tla_gdi](../../../../includes/tla2sharptla-gdi-md.md)] print path and the various [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] conversion options, see [Microsoft XPS Document Converter (MXDC)](https://msdn.microsoft.com/library/windows/desktop/ff686803.aspx) and "XPSDrv" in the [Windows Driver Development Kit](https://msdn.microsoft.com/library/windows/hardware/ff557573.aspx). +- For additional reference material on the [!INCLUDE[TLA2#tla_gdi](../../../../includes/tla2sharptla-gdi-md.md)] print path and the various [!INCLUDE[TLA2#tla_metro](../../../../includes/tla2sharptla-metro-md.md)] conversion options, see [Microsoft XPS Document Converter (MXDC)](https://msdn.microsoft.com/library/windows/desktop/ff686803.aspx) and "XPSDrv" in the [Windows Driver Kit](https://msdn.microsoft.com/library/windows/hardware/ff557573.aspx). ## XPSDrv Driver Model diff --git a/docs/fsharp/tutorials/type-providers/accessing-a-sql-database-entities.md b/docs/fsharp/tutorials/type-providers/accessing-a-sql-database-entities.md index c9456b443db6e..45e4e6c7f1c16 100644 --- a/docs/fsharp/tutorials/type-providers/accessing-a-sql-database-entities.md +++ b/docs/fsharp/tutorials/type-providers/accessing-a-sql-database-entities.md @@ -122,7 +122,7 @@ In this step, you set up a type provider with a data connection and obtain a dat type private EntityConnection = SqlEntityConnection ``` - This action sets up a type provider with the database connection that you created earlier. The property `MultipleActiveResultSets` is needed when you use the ADO.NET Entity Framework because this property allows multiple commands to execute asynchronously on the database in one connection, which can occur frequently in ADO.NET Entity Framework code. For more information, see [Multiple Active Result Sets (MARS)](http://go.microsoft.com/fwlink/?LinkId=236929). + This action sets up a type provider with the database connection that you created earlier. The property `MultipleActiveResultSets` is needed when you use the ADO.NET Entity Framework because this property allows multiple commands to execute asynchronously on the database in one connection, which can occur frequently in ADO.NET Entity Framework code. For more information, see [Multiple Active Result Sets (MARS)](/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars).
2. Get the data context, which is an object that contains the database tables as properties and the database stored procedures and functions as methods. diff --git a/docs/fsharp/tutorials/type-providers/accessing-a-sql-database.md b/docs/fsharp/tutorials/type-providers/accessing-a-sql-database.md index c776cdc4e74d7..1a9eff4f5f343 100644 --- a/docs/fsharp/tutorials/type-providers/accessing-a-sql-database.md +++ b/docs/fsharp/tutorials/type-providers/accessing-a-sql-database.md @@ -53,7 +53,7 @@ On a server that's running SQL Server, create a database for testing purposes. Y #### To prepare a test database -To run the MyDatabase Create Script, open the **View** menu, and then choose **SQL Server Object Explorer** or choose the Ctrl+\, Ctrl+S keys. In **SQL Server Object Explorer** window, open the shortcut menu for the appropriate instance, choose **New Query**, copy the script at the bottom of this page, and then paste the script into the editor. To run the SQL script, choose the toolbar icon with the triangular symbol, or choose the Ctrl+Q keys. For more information about **SQL Server Object Explorer**, see [Connected Database Development](http://go.microsoft.com/fwlink/?LinkId=237128). +To run the MyDatabase Create Script, open the **View** menu, and then choose **SQL Server Object Explorer** or choose the Ctrl+\, Ctrl+S keys. In **SQL Server Object Explorer** window, open the shortcut menu for the appropriate instance, choose **New Query**, copy the script at the bottom of this page, and then paste the script into the editor. To run the SQL script, choose the toolbar icon with the triangular symbol, or choose the Ctrl+Q keys. For more information about **SQL Server Object Explorer**, see [Connected Database Development](https://msdn.microsoft.com/library/hh272679(VS.103).aspx). ## Creating the project diff --git a/docs/fsharp/tutorials/type-providers/creating-a-type-provider.md b/docs/fsharp/tutorials/type-providers/creating-a-type-provider.md index 82ec637ccec6c..c0e3703a07f8c 100644 --- a/docs/fsharp/tutorials/type-providers/creating-a-type-provider.md +++ b/docs/fsharp/tutorials/type-providers/creating-a-type-provider.md @@ -52,7 +52,7 @@ Type providers are best suited to situations where the schema is stable at runti ## A Simple Type Provider -This sample is Samples.HelloWorldTypeProvider in the `SampleProviders\Providers` directory of the [F# 3.0 Sample Pack](http://go.microsoft.com/fwlink/?LinkId=236999) on the Codeplex website. The provider makes available a "type space" that contains 100 erased types, as the following code shows by using F# signature syntax and omitting the details for all except `Type1`. For more information about erased types, see [Details About Erased Provided Types](https://msdn.microsoft.com/library/#BK_Erased) later in this topic. +This sample is Samples.HelloWorldTypeProvider in the `SampleProviders\Providers` directory of the [F# 3.0 Sample Pack](http://fsharp3sample.codeplex.com) on the Codeplex website. The provider makes available a "type space" that contains 100 erased types, as the following code shows by using F# signature syntax and omitting the details for all except `Type1`. For more information about erased types, see [Details About Erased Provided Types](https://msdn.microsoft.com/library/#BK_Erased) later in this topic. ```fsharp namespace Samples.HelloWorldTypeProvider @@ -495,7 +495,7 @@ Note the following points: - Each named group results in a provided property, and accessing the property results in a use of an indexer on a match’s `Groups` collection.
-The following code is the core of the logic to implement such a provider, and this example omits the addition of all members to the provided type. For information about each added member, see the appropriate section later in this topic. For the full code, download the sample from the [F# 3.0 Sample Pack](http://go.microsoft.com/fwlink/?LinkId=236999) on the Codeplex website. +The following code is the core of the logic to implement such a provider, and this example omits the addition of all members to the provided type. For information about each added member, see the appropriate section later in this topic. For the full code, download the sample from the [F# 3.0 Sample Pack](http://fsharp3sample.codeplex.com) on the Codeplex website. ```fsharp namespace Samples.FSharp.RegexTypeProvider diff --git a/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md b/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md index 4063729cd2337..d9fd89ab36c88 100644 --- a/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md +++ b/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md @@ -52,7 +52,7 @@ The following example uses a regular expression to verify that a string is in va [!code-csharp[RegularExpressions.Examples.Email#7](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.Email/cs/example4.cs#7)] [!code-vb[RegularExpressions.Examples.Email#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.Email/vb/example4.vb#7)] - In this example, the regular expression pattern ``^(?(")(".+?(? flag. + In this example, the regular expression pattern ``^(?(")(".+?(? flag. |Pattern|Description| |-------------|-----------------| @@ -67,7 +67,7 @@ The following example uses a regular expression to verify that a string is in va |`(?<=[0-9a-z])`|Continue the match if the character that precedes the @ character is A through Z, a through z, or 0 through 9. The `(?<=[0-9a-z])` construct defines a zero-width positive lookbehind assertion.| |`(?(\[)`|Check whether the character that follows @ is an opening bracket.| |`(\[(\d{1,3}\.){3}\d{1,3}\])`|If it is an opening bracket, match the opening bracket followed by an IP address (four sets of one to three digits, with each set separated by a period) and a closing bracket.| -|`|(([0-9a-z][-\w]*[0-9a-z]*\.)+`|If the character that follows @ is not an opening bracket, match one alphanumeric character with a value of A-Z, a-z, or 0-9, followed by zero or more occurrences of a word character or a hyphen, followed by zero or one alphanumeric character with a value of A-Z, a-z, or 0-9, followed by a period. This pattern can be repeated one or more times, and must be followed by the top-level domain name.| +|`|(([0-9a-z][-0-9a-z]*[0-9a-z]*\.)+`|If the character that follows @ is not an opening bracket, match one alphanumeric character with a value of A-Z, a-z, or 0-9, followed by zero or more occurrences of a hyphen, followed by zero or one alphanumeric character with a value of A-Z, a-z, or 0-9, followed by a period. This pattern can be repeated one or more times, and must be followed by the top-level domain name.| |`[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))`|The top-level domain name must begin and end with an alphanumeric character (a-z, A-Z, and 0-9). It can also include from zero to 22 ASCII characters that are either alphanumeric or hyphens.| |`$`|End the match at the end of the string.| diff --git a/docs/standard/language-independence-and-language-independent-components.md b/docs/standard/language-independence-and-language-independent-components.md index b62dbaedea522..e3b47720c5117 100644 --- a/docs/standard/language-independence-and-language-independent-components.md +++ b/docs/standard/language-independence-and-language-independent-components.md @@ -507,7 +507,7 @@ The .NET Framework is language independent. This means that, as a developer, you - To ensure that the component library's public interface exposes only program elements that are CLS-compliant. If elements are not CLS-compliant, compilers will generally issue a warning. > [!WARNING] -> In some cases, language compilers enforce CLS-compliant rules regardless of whether the attribute is used. For example, defining a static member in an interface violates a CLS rule. However, if you define a `static` (in C#) or `Shared` (in Visual Basic) member in an interface, both the C# and Visual Basic compilers display an error message and fail to compile the app. +> In some cases, language compilers enforce CLS-compliant rules regardless of whether the attribute is used. For example, defining a static member in an interface violates a CLS rule. In this regard, if you define a `static` (in C#) or `Shared` (in Visual Basic) member in an interface, both the C# and Visual Basic compilers display an error message and fail to compile the app. The attribute is marked with an attribute that has a value of . This value allows you to apply the attribute to any program element, including assemblies, modules, types (classes, structures, enumerations, interfaces, and delegates), type members (constructors, methods, properties, fields, and events), parameters, generic parameters, and return values. However, in practice, you should apply the attribute only to assemblies, types, and type members. Otherwise, compilers ignore the attribute and continue to generate compiler warnings whenever they encounter a non-compliant parameter, generic parameter, or return value in your library's public interface. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md index d8026ecaa88cb..416d586c2e938 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md @@ -27,13 +27,13 @@ There are two kinds of asynchronous messaging communication: single receiver mes Message-based asynchronous communication with a single receiver means there is point-to-point communication that delivers a message to exactly one of the consumers that is reading from the channel, and that the message is processed just once. However, there are special situations. For instance, in a cloud system that tries to automatically recover from failures, the same message could be sent multiple times. Due to network or other failures, the client has to be able to retry sending messages, and the server has to implement an operation to be idempotent in order to process a particular message just once. -Single-receiver message-based communication is especially well suited for sending asynchronous commands from one microservice to another as shown in Figure 4-17 that illustrates this approach. +Single-receiver message-based communication is especially well suited for sending asynchronous commands from one microservice to another as shown in Figure 4-18 that illustrates this approach. Once you start sending message-based communication (either with commands or events), you should avoid mixing message-based communication with synchronous HTTP communication. -![](./media/image17.PNG) +![](./media/image18.PNG) -**Figure 4-17**. A single microservice receiving an asynchronous message +**Figure 4-18**. A single microservice receiving an asynchronous message Note that when the commands come from client applications, they can be implemented as HTTP synchronous commands. You should use message-based commands when you need higher scalability or when you are already in a message-based business process. @@ -51,11 +51,11 @@ If a system uses eventual consistency driven by integration events, it is recomm As noted earlier in the [Challenges and solutions for distributed data management](#challenges-and-solutions-for-distributed-data-management) section, you can use integration events to implement business tasks that span multiple microservices. Thus you will have eventual consistency between those services. An eventually consistent transaction is made up of a collection of distributed actions. At each action, the related microservice updates a domain entity and publishes another integration event that raises the next action within the same end-to-end business task. -An important point is that you might want to communicate to multiple microservices that are subscribed to the same event. To do so, you can use publish/subscribe messaging based on event-driven communication, as shown in Figure 4-18. This publish/subscribe mechanism is not exclusive to the microservice architecture. It is similar to the way [Bounded Contexts](http://martinfowler.com/bliki/BoundedContext.html) in DDD should communicate, or to the way you propagate updates from the write database to the read database in the [Command and Query Responsibility Segregation (CQRS)](http://martinfowler.com/bliki/CQRS.html) architecture pattern. The goal is to have eventual consistency between multiple data sources across your distributed system. +An important point is that you might want to communicate to multiple microservices that are subscribed to the same event. To do so, you can use publish/subscribe messaging based on event-driven communication, as shown in Figure 4-19. This publish/subscribe mechanism is not exclusive to the microservice architecture. It is similar to the way [Bounded Contexts](http://martinfowler.com/bliki/BoundedContext.html) in DDD should communicate, or to the way you propagate updates from the write database to the read database in the [Command and Query Responsibility Segregation (CQRS)](http://martinfowler.com/bliki/CQRS.html) architecture pattern. The goal is to have eventual consistency between multiple data sources across your distributed system. -![](./media/image18.png) +![](./media/image19.png) -**Figure 4-18**. Asynchronous event-driven message communication +**Figure 4-19**. Asynchronous event-driven message communication Your implementation will determine what protocol to use for event-driven, message-based communications. [AMQP](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) can help achieve reliable queued communication. @@ -106,5 +106,5 @@ Additional topics to consider when using asynchronous communication are message >[!div class="step-by-step"] -[Previous] (communication-between-microservices.md) +[Previous] (communication-in-microservice-architecture.md) [Next] (maintain-microservice-apis.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-between-microservices.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md similarity index 85% rename from docs/standard/microservices-architecture/architect-microservice-container-applications/communication-between-microservices.md rename to docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md index af5d6444040d7..3baac3f834164 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-between-microservices.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md @@ -1,17 +1,17 @@ --- -title: Communication between microservices -description: .NET Microservices Architecture for Containerized .NET Applications | Communication between microservices -keywords: Docker, Microservices, ASP.NET, Container +title: Communication in a microservice architecture +description: .NET Microservices Architecture for Containerized .NET Applications | Communication in a microservice architecture architectures +keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article --- -# Communication between microservices +# Communication in a microservice architecture -In a monolithic application running on a single process, components invoke one another using language-level method or function calls. These can be strongly coupled if you are creating objects with code (for example, new ClassName()), or can be invoked in a decoupled way if you are using Dependency Injection by referencing abstractions rather than concrete object instances. Either way, the objects are running within the same process. The biggest challenge when changing from a monolithic application to a microservices-based application lies in changing the communication mechanism. A direct conversion from in-process method calls into RPC calls to services will cause a chatty and not efficient communication that will not perform well in distributed environments. The challenges of designing distributed system properly are well enough known that there is even a canon known as the [The fallacies of distributed computing](https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing) that lists assumptions that developers often make when moving from monolithic to distributed designs. +In a monolithic application running on a single process, components invoke one another using language-level method or function calls. These can be strongly coupled if you are creating objects with code (for example, `new ClassName()`), or can be invoked in a decoupled way if you are using Dependency Injection by referencing abstractions rather than concrete object instances. Either way, the objects are running within the same process. The biggest challenge when changing from a monolithic application to a microservices-based application lies in changing the communication mechanism. A direct conversion from in-process method calls into RPC calls to services will cause a chatty and not efficient communication that will not perform well in distributed environments. The challenges of designing distributed system properly are well enough known that there is even a canon known as the [The fallacies of distributed computing](https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing) that lists assumptions that developers often make when moving from monolithic to distributed designs. There is not one solution, but several. One solution involves isolating the business microservices as much as possible. You then use asynchronous communication between the internal microservices and replace fine-grained communication that is typical in intra-process communication between objects with coarser-grained communication. You can do this by grouping calls, and by returning data that aggregates the results of multiple internal calls, to the client. @@ -41,13 +41,19 @@ A microservice-based application will often use a combination of these communica These axes are good to know so you have clarity on the possible communication mechanisms, but they are not the important concerns when building microservices. The asynchronous nature of client thread execution not even the asynchronous nature of the selected protocol are the important points when integrating microservices. What *is* important is being able to integrate your microservices asynchronously while maintaining the independence of microservices, as explained in the following section. -## Asynchronous microservice integration enforce microservice’s autonomy +## Asynchronous microservice integration enforces microservice’s autonomy As mentioned, the important point when building a microservices-based application is the way you integrate your microservices. Ideally, you should try to minimize the communication between the internal microservices. The less communications between microservices, the better. But of course, in many cases you will have to somehow integrate the microservices. When you need to do that, the critical rule here is that the communication between the microservices should be asynchronous. That does not mean that you have to use a specific protocol (for example, asynchronous messaging versus synchronous HTTP). It just means that the communication between microservices should be done only by propagating data asynchronously, but try not to depend on other internal microservices as part of the initial service’s HTTP request/response operation. If possible, never depend on synchronous communication (request/response) between multiple microservices, not even for queries. The goal of each microservice is to be autonomous and available to the client consumer, even if the other services that are part of the end-to-end application are down or unhealthy. If you think you need to make a call from one microservice to other microservices (like performing an HTTP request for a data query) in order to be able to provide a response to a client application, you have an architecture that will not be resilient when some microservices fail. -Moreover, having dependencies between microservices (like performing HTTP requests between them for querying data) not only makes your microservices not autonomous. In addition, their performance will be impacted. The more you add synchronous dependencies (like query requests) between microservices, the worse the overall response time will get for the client apps. +Moreover, having HTTP dependencies between microservices, like when creating long request/response cycles with HTTP request chains, as shown in the first part of the Figure 4-15, not only makes your microservices not autonomous but also their performance is impacted as soon as one of the services in that chain is not performing well. + +The more you add synchronous dependencies between microservices, such as query requests, the worse the overall response time gets for the client apps. + +![](./media/image15.png) + +**Figure 4-15**. Anti-patterns and patterns in communication between microservices If your microservice needs to raise an additional action in another microservice, if possible, do not perform that action synchronously and as part of the original microservice request and reply operation. Instead, do it asynchronously (using asynchronous messaging or integration events, queues, etc.). But, as much as possible, do not invoke the action synchronously as part of the original synchronous request and reply operation. @@ -67,11 +73,11 @@ There are also multiple message formats like JSON or XML, or even binary formats ### Request/response communication with HTTP and REST -When a client uses request/response communication, it sends a request to a service, then the service processes the request and sends back a response. Request/response communication is especially well suited for querying data for a real-time UI (a live user interface) from client apps. Therefore, in a microservice architecture you will probably use this communication mechanism for most queries, as shown in Figure 4-15. +When a client uses request/response communication, it sends a request to a service, then the service processes the request and sends back a response. Request/response communication is especially well suited for querying data for a real-time UI (a live user interface) from client apps. Therefore, in a microservice architecture you will probably use this communication mechanism for most queries, as shown in Figure 4-16. -![](./media/image15.png) +![](./media/image16.png) -**Figure 4-15**. Using HTTP request/response communication (synchronous or asynchronous) +**Figure 4-16**. Using HTTP request/response communication (synchronous or asynchronous) When a client uses request/response communication, it assumes that the response will arrive in a short time, typically less than a second, or a few seconds at most. For delayed responses, you need to implement asynchronous communication based on [messaging patterns](https://docs.microsoft.com/azure/architecture/patterns/category/messaging) and [messaging technologies](https://en.wikipedia.org/wiki/Message-oriented_middleware), which is a different approach that we explain in the next section. @@ -91,15 +97,15 @@ There is additional value when using HTTP REST services as your interface defini Another possibility (usually for different purposes than REST) is a real-time and one-to-many communication with higher-level frameworks such as [ASP.NET SignalR](https://www.asp.net/signalr) and protocols such as [WebSockets](https://en.wikipedia.org/wiki/WebSocket). -As Figure 4-16 shows, real-time HTTP communication means that you can have server code pushing content to connected clients as the data becomes available, rather than having the server wait for a client to request new data. +As Figure 4-17 shows, real-time HTTP communication means that you can have server code pushing content to connected clients as the data becomes available, rather than having the server wait for a client to request new data. -![](./media/image16.png) +![](./media/image17.png) -**Figure 4-16**. One-to-one real-time asynchronous message communication +**Figure 4-17**. One-to-one real-time asynchronous message communication Since communication is in real time, client apps show the changes almost instantly. This is usually handled by a protocol such as WebSockets, using many WebSockets connections (one per client). A typical example is when a service communicates a change in the score of a sports game to many client web apps simultaneously. >[!div class="step-by-step"] -[Previous] (identify-microservice-domain-model-boundaries.md) +[Previous] (direct-client-to-microservice-communication-versus-the-api-gateway-pattern.md) [Next] (asynchronous-message-based-communication.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md index d27bf45a14cd2..65805498cbfcf 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md @@ -15,7 +15,7 @@ An important rule for microservices architecture is that each microservice must This means that the conceptual model of the domain will differ between subsystems or microservices. Consider enterprise applications, where customer relationship management (CRM) applications, transactional purchase subsystems, and customer support subsystems each call on unique customer entity attributes and data, and where each employs a different Bounded Context (BC). -This principle is similar in [domain-driven design (DDD)](https://en.wikipedia.org/wiki/Domain-driven_design), where each [Bounded Context](https://martinfowler.com/bliki/BoundedContext.html) or autonomous subsystem or service must own its domain model (data plus logic and behavior). Each DDD Bounded Context correlates to one business microservice (one or several services). (We expand on this point about the Bounded Context pattern in the next section.) +This principle is similar in [Domain-driven design (DDD)](https://en.wikipedia.org/wiki/Domain-driven_design), where each [Bounded Context](https://martinfowler.com/bliki/BoundedContext.html) or autonomous subsystem or service must own its domain model (data plus logic and behavior). Each DDD Bounded Context correlates to one business microservice (one or several services). (We expand on this point about the Bounded Context pattern in the next section.) On the other hand, the traditional (monolithic data) approach used in many applications is to have a single centralized database or just a few databases. This is often a normalized SQL database that is used for the whole application and all its internal subsystems, as shown in Figure 4-7. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md new file mode 100644 index 0000000000000..fe5ca96a56b4f --- /dev/null +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md @@ -0,0 +1,121 @@ +--- +title: Direct client-to-microservice communication versus the API Gateway pattern +description: .NET Microservices Architecture for Containerized .NET Applications | Direct client-to-microservice communication versus the API Gateway pattern +keywords: Docker, Microservices, ASP.NET, Container, API Gateway +author: CESARDELATORRE +ms.author: wiwagn +ms.date: 10/18/2017 +ms.prod: .net-core +ms.technology: dotnet-docker +ms.topic: article +--- +# Direct client-to-microservice communication versus the API Gateway pattern + +In a microservices architecture, each microservice exposes a set of (typically) fine‑grained endpoints. This fact can impact the client‑to‑microservice communication, as explained in this section. + +## Direct client-to-microservice communication + +A possible approach is to use a direct client-to-microservice communication architecture. In this approach, a client app can make requests directly to some of the microservices, as shown in Figure 4-12. + +![](./media/image12.png) + +**Figure 4-12**. Using a direct client-to-microservice communication architecture + +In this approach. each microservice has a public endpoint, sometimes with a different TCP port for each microservice. An example of a URL for a particular service could be the following URL in Azure: + + + +In a production environment based on a cluster, that URL would map to the load balancer used in the cluster, which in turn distributes the requests across the microservices. In production environments, you could have an Application Delivery Controller (ADC) like [Azure Application Gateway](https://docs.microsoft.com/azure/application-gateway/application-gateway-introduction) between your microservices and the Internet. This acts as a transparent tier that not only performs load balancing, but secures your services by offering SSL termination. This improves the load of your hosts by offloading CPU-intensive SSL termination and other routing duties to the Azure Application Gateway. In any case, a load balancer and ADC are transparent from a logical application architecture point of view. + +A direct client-to-microservice communication architecture could be good enough for a small microservice-based application, especially if the client app is a server-side web application like an ASP.NET MVC app. However, when you build large and complex microservice-based applications (for example, when handling dozens of microservice types), and especially when the client apps are remote mobile apps or SPA web applications, that approach faces a few issues. + +Consider the following questions when developing a large application based on microservices: + +- *How can client apps minimize the number of requests to the backend and reduce chatty communication to multiple microservices?* + +Interacting with multiple microservices to build a single UI screen increases the number of roundtrips across the Internet. This increases latency and complexity on the UI side. Ideally, responses should be efficiently aggregated in the server side—this reduces latency, since multiple pieces of data come back in parallel and some UI can show data as soon as it is ready. + +- *How can you handle cross-cutting concerns such as authorization, data transformations, and dynamic request dispatching?* + +Implementing security and cross-cutting concerns like security and authorization on every microservice can require significant development effort. A possible approach is to have those services within the Docker host or internal cluster, in order to restrict direct access to them from the outside, and to implement those cross-cutting concerns in a centralized place, like an API Gateway. + +- *How can client apps communicate with services that use non-Internet-friendly protocols?* + +Protocols used on the server side (like AMQP or binary protocols) are usually not supported in client apps. Therefore, requests must be performed through protocols like HTTP/HTTPS and translated to the other protocols afterwards. A *man-in-the-middle* approach can help in this situation. + +- *How can you shape a façade especially made for mobile apps? * + +The API of multiple microservices might not be well designed for the needs of different client applications. For instance, the needs of a mobile app might be different than the needs of a web app. For mobile apps, you might need to optimize even further so that data responses can be more efficient. You might do this by aggregating data from multiple microservices and returning a single set of data, and sometimes eliminating any data in the response that is not needed by the mobile app. And, of course, you might compress that data. Again, a façade or API in between the mobile app and the microservices can be convenient for this scenario. + +## Using an API Gateway + +When you design and build large or complex microservice-based applications with multiple client apps, a good approach to consider can be an [API Gateway](http://microservices.io/patterns/apigateway.html). This is a service that provides a single entry point for certain groups of microservices. It is similar to the [Facade pattern](https://en.wikipedia.org/wiki/Facade_pattern) from object‑oriented design, but in this case, it is part of a distributed system. +The API Gateway pattern is also sometimes known as the “backend for frontend” [(BFF)](http://samnewman.io/patterns/architectural/bff/) because you build it while thinking about the needs of the client app. + +Figure 4-13 shows how a custom API Gateway can fit into a microservice-based architecture. +It is important to highlight that in that diagram, you would be using a single custom API Gateway service facing multiple and different client apps. That fact can be an important risk because your API Gateway service will be growing and evolving based on many different requirements from the client apps. Eventually, it will be bloated because of those different needs and effectively it could be pretty similar to a monolithic application or monolithic service. That is why it is very much recommended to split the API Gateway in multiple services or multiple smaller API Gateways, one per form-factor type, for instance. + +![](./media/image13.png) + +**Figure 4-13**. Using an API Gateway implemented as a custom Web API service + +In this example, the API Gateway would be implemented as a custom Web API service running as a container. + +As mentioned, you should implement several API Gateways so that you can have a different façade for the needs of each client app. Each API Gateway can provide a different API tailored for each client app, possibly even based on the client form factor by implementing specific adapter code which underneath calls multiple internal microservices. + +Since a custom API Gateway is usually a data aggregator, you need to be careful with it. Usually it isn't a good idea to have a single API Gateway aggregating all the internal microservices of your application. If it does, it acts as a monolithic aggregator or orchestrator and violates microservice autonomy by coupling all the microservices. Therefore, the API Gateways should be segregated based on business boundaries and not act as an aggregator for the whole application. + +Sometimes a granular API Gateway can also be a microservice by itself, and even have a domain or business name and related data. Having the API Gateway’s boundaries dictated by the business or domain will help you to get a better design. + +Granularity in the API Gateway tier can be especially useful for more advanced composite UI applications based on microservices, because the concept of a fine-grained API Gateway is similar to a UI composition service. We discuss this later in the [Creating composite UI based on microservices](#creating-composite-ui-based-on-microservices-including-visual-ui-shape-and-layout-generated-by-multiple-microservices). + +Therefore, for many medium- and large-size applications, using a custom-built API Gateway is usually a good approach, but not as a single monolithic aggregator or unique central custom API Gateway. + +Another approach is to use a product like [Azure API Management](https://azure.microsoft.com/services/api-management/) as shown in Figure 4-14. This approach not only solves your API Gateway needs, but provides features like gathering insights from your APIs. If you are using an API management solution, an API Gateway is only a component within that full API management solution. + +![](./media/image14.png) + +**Figure 4-14**. Using Azure API Management for your API Gateway + +In this case, when using a product like Azure API Management, the fact that you might have a single API Gateway is not so risky because these kinds of API Gateways are "thinner", meaning that you don't implement custom C# code that could evolve towards a monolithic component. + +This type of product acts more like a reverse proxy for ingress communication, where you can also filter the APIs from the internal microservices plus apply authorization to the published APIs in this single tier. + +The insights available from an API Management system help you get an understanding of how your APIs are being used and how they are performing. They do this by letting you view near real-time analytics reports and identifying trends that might impact your business. Plus, you can have logs about request and response activity for further online and offline analysis. + +With Azure API Management, you can secure your APIs using a key, a token, and IP filtering. These features let you enforce flexible and fine-grained quotas and rate limits, modify the shape and behavior of your APIs using policies, and improve performance with response caching. + +In this guide and the reference sample application (eShopOnContainers), we are limiting the architecture to a simpler and custom-made containerized architecture in order to focus on plain containers without using PaaS products like Azure API Management. But for large microservice-based applications that are deployed into Microsoft Azure, we encourage you to review and adopt Azure API Management as the base for your API Gateways. + +## Drawbacks of the API Gateway pattern + +- The most important drawback is that when you implement an API Gateway, you are coupling that tier with the internal microservices. Coupling like this might introduce serious difficulties for your application. Clemens Vaster, architect at the Azure Service Bus team, refers to this potential difficulty as “the new ESB” in his "[Messaging and Microservices](https://www.youtube.com/watch?v=rXi5CLjIQ9k)" session at GOTO 2016. + +- Using a microservices API Gateway creates an additional possible single point of failure. + +- An API Gateway can introduce increased response time due to the additional network call. However, this extra call usually has less impact than having a client interface that is too chatty directly calling the internal microservices. + +- If not scaled out properly, the API Gateway can become a bottleneck. + +- An API Gateway requires additional development cost and future maintenance if it includes custom logic and data aggregation. Developers must update the API Gateway in order to expose each microservice’s endpoints. Moreover, implementation changes in the internal microservices might cause code changes at the API Gateway level. However, if the API Gateway is just applying security, logging, and versioning (as when using Azure API Management), this additional development cost might not apply. + +- If the API Gateway is developed by a single team, there can be a development bottleneck. This is another reason why a better approach is to have several fined-grained API Gateways that respond to different client needs. You could also segregate the API Gateway internally into multiple areas or layers that are owned by the different teams working on the internal microservices. + +## Additional resources + +- **Charles Richardson. Pattern: API Gateway / Backend for Front-End** + [*http://microservices.io/patterns/apigateway.html*](http://microservices.io/patterns/apigateway.html) + +- **Azure API Management** + [*https://azure.microsoft.com/services/api-management/*](https://azure.microsoft.com/services/api-management/) + +- **Udi Dahan. Service Oriented Composition**\ + [*http://udidahan.com/2014/07/30/service-oriented-composition-with-video/*](http://udidahan.com/2014/07/30/service-oriented-composition-with-video/) + +- **Clemens Vasters. Messaging and Microservices at GOTO 2016** (video) + [*https://www.youtube.com/watch?v=rXi5CLjIQ9k*](https://www.youtube.com/watch?v=rXi5CLjIQ9k) + + +>[!div class="step-by-step"] +[Previous] (identify-microservice-domain-model-boundaries.md) +[Next] (communication-in-microservice-architecture.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md index d883c3b90a6df..a6bc51673c3c5 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md @@ -53,7 +53,7 @@ The Ordering microservice should not update the Products table directly, because As stated by the [CAP theorem](https://en.wikipedia.org/wiki/CAP_theorem), you need to choose between availability and ACID strong consistency. Most microservice-based scenarios demand availability and high scalability as opposed to strong consistency. Mission-critical applications must remain up and running, and developers can work around strong consistency by using techniques for working with weak or eventual consistency. This is the approach taken by most microservice-based architectures. -Moreover, ACID-style or two-phase commit transactions are not just against microservices principles; most NoSQL databases (like Azure Document DB, MongoDB, etc.) do not support two-phase commit transactions. However, maintaining data consistency across services and databases is essential. This challenge is also related to the question of how to propagate changes across multiple microservices when certain data needs to be redundant—for example, when you need to have the product’s name or description in the Catalog microservice and the Basket microservice. +Moreover, ACID-style or two-phase commit transactions are not just against microservices principles; most NoSQL databases (like Azure Cosmos DB, MongoDB, etc.) do not support two-phase commit transactions. However, maintaining data consistency across services and databases is essential. This challenge is also related to the question of how to propagate changes across multiple microservices when certain data needs to be redundant—for example, when you need to have the product’s name or description in the Catalog microservice and the Basket microservice. A good solution for this problem is to use eventual consistency between microservices articulated through event-driven communication and a publish-and-subscribe system. These topics are covered in the section [Asynchronous event-driven communication](#async_event_driven_communication) later in this guide. @@ -63,7 +63,7 @@ Communicating across microservice boundaries is a real challenge. In this contex In a distributed system like a microservices-based application, with so many artifacts moving around and with distributed services across many servers or hosts, components will eventually fail. Partial failure and even larger outages will occur, so you need to design your microservices and the communication across them taking into account the risks common in this type of distributed system. -A popular approach is to implement HTTP (REST)- based microservices, due to their simplicity. An HTTP-based approach is perfectly acceptable; the issue here is related to how you use it. If you use HTTP requests and responses just to interact with your microservices from client applications or from API Gateways, that is fine. But if create long chains of synchronous HTTP calls across microservices, communicating across their boundaries as if the microservices were objects in a monolithic application, your application will eventually run into problems. +A popular approach is to implement HTTP (REST)- based microservices, due to their simplicity. An HTTP-based approach is perfectly acceptable; the issue here is related to how you use it. If you use HTTP requests and responses just to interact with your microservices from client applications or from API Gateways, that is fine. But if you create long chains of synchronous HTTP calls across microservices, communicating across their boundaries as if the microservices were objects in a monolithic application, your application will eventually run into problems. For instance, imagine that your client application makes an HTTP API call to an individual microservice like the Ordering microservice. If the Ordering microservice in turn calls additional microservices using HTTP within the same request/response cycle, you are creating a chain of HTTP calls. It might sound reasonable initially. However, there are important points to consider when going down this path: diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/docker-application-state-data.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/docker-application-state-data.md index 954af6dc63e9d..5f2b1c6cc2386 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/docker-application-state-data.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/docker-application-state-data.md @@ -1,10 +1,10 @@ --- title: State and data in Docker applications description: .NET Microservices Architecture for Containerized .NET Applications | State and data in Docker applications -keywords: Docker, Microservices, ASP.NET, Container +keywords: Docker, Microservices, ASP.NET, Container, SQL, CosmosDB, Docker author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -23,10 +23,10 @@ The following solutions are used to manage persistent data in Docker application - [Volume plugins](https://docs.docker.com/engine/tutorials/dockervolumes/) that mount volumes to remote services, providing long-term persistence. -- Remote data sources like SQL or NoSQL databases, or cache services like [Redis](https://redis.io/). - - [Azure Storage](https://docs.microsoft.com/azure/storage/), which provides geo-distributable storage, providing a good long-term persistence solution for containers. +- Remote relational databases like [Azure SQL Database](https://azure.microsoft.com/services/sql-database/) or NoSQL databases like [Azure Cosmos DB](https://docs.microsoft.com/azure/cosmos-db/introduction), or cache services like [Redis](https://redis.io/). + The following provides more detail about these options. **Data volumes** are directories mapped from the host OS to directories in containers. When code in the container has access to the directory, that access is actually to a directory on the host OS. This directory is not tied to the lifetime of the container itself, and the directory can be accessed from code running directly on the host OS or by another container that maps the same host directory to itself. Thus, data volumes are designed to persist data independently of the life of the container. If you delete a container or an image from the Docker host, the data persisted in the data volume is not deleted. The data in a volume can be accessed from the host OS as well. @@ -43,9 +43,9 @@ In addition, when Docker containers are managed by an orchestrator, containers m **Volume plugins** like [Flocker](https://clusterhq.com/flocker/) provide data access across all hosts in a cluster. While not all volume plugins are created equally, volume plugins typically provide externalized persistent reliable storage from immutable containers. -**Remote data sources and cache** tools like Azure SQL Database, Azure Document DB, or a remote cache like Redis can be used in containerized applications the same way they are used when developing without containers. This is a proven way to store business application data. +**Remote data sources and cache** tools like Azure SQL Database, Azure Cosmos DB, or a remote cache like Redis can be used in containerized applications the same way they are used when developing without containers. This is a proven way to store business application data. -**Azure Storage.** Business data usually will need to be placed in external resources or databases, like relational databases or NoSQL databases like Azure Storage and DocDB. Azure Storage, in concrete, provides the following services in the cloud: +**Azure Storage.** Business data usually will need to be placed in external resources or databases, like Azure Storage. Azure Storage, in concrete, provides the following services in the cloud: - Blob storage stores unstructured object data. A blob can be any type of text or binary data, such as document or media files (images, audio, and video files). Blob storage is also referred to as Object storage. @@ -53,7 +53,7 @@ In addition, when Docker containers are managed by an orchestrator, containers m - Table storage stores structured datasets. Table storage is a NoSQL key-attribute data store, which allows rapid development and fast access to large quantities of data. -**Relational databases and NoSQL databases.** There are many choices for external databases, from relational databases like SQL Server, PostgreSQL, Oracle, or NoSQL databases like Azure DocDB, MongoDB, etc. These databases are not going to be explained as part of this guide since they are in a completely different subject. +**Relational databases and NoSQL databases.** There are many choices for external databases, from relational databases like SQL Server, PostgreSQL, Oracle, or NoSQL databases like Azure Cosmos DB, MongoDB, etc. These databases are not going to be explained as part of this guide since they are in a completely different subject. >[!div class="step-by-step"] diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/identify-microservice-domain-model-boundaries.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/identify-microservice-domain-model-boundaries.md index c89380a911517..d61bc2f310d9c 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/identify-microservice-domain-model-boundaries.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/identify-microservice-domain-model-boundaries.md @@ -9,7 +9,7 @@ ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article --- -# Identifying domain-model boundaries for each microservice +# Identify domain-model boundaries for each microservice The goal when identifying model boundaries and size for each microservice is not to get to the most granular separation possible, although you should tend toward small microservices if possible. Instead, your goal should be to get to the most meaningful separation guided by your domain knowledge. The emphasis is not on the size, but instead on business capabilities. In addition, if there is clear cohesion needed for a certain area of the application based on a high number of dependencies, that indicates the need for a single microservice, too. Cohesion is a way to identify how to break apart or group together microservices. Ultimately, while you gain more knowledge about the domain, you should adapt the size of your microservice, iteratively. Finding the right size is not a one-shot process. @@ -50,106 +50,6 @@ Basically, there is a shared concept of a user that exists in multiple services There are several benefits to not sharing the same user entity with the same number of attributes across domains. One benefit is to reduce duplication, so that microservice models do not have any data that they do not need. Another benefit is having a master microservice that owns a certain type of data per entity so that updates and queries for that type of data are driven only by that microservice. - -## Direct client-to-microservice communication versus the API Gateway pattern - -In a microservices architecture, each microservice exposes a set of (typically) fine‑grained endpoints. This fact can impact the client‑to‑microservice communication, as explained in this section. - -### Direct client-to-microservice communication - -A possible approach is to use a direct client-to-microservice communication architecture. In this approach, a client app can make requests directly to some of the microservices, as shown in Figure 4-12. - -![](./media/image12.png) - -**Figure 4-12**. Using a direct client-to-microservice communication architecture - -In this approach. each microservice has a public endpoint, sometimes with a different TCP port for each microservice. An example of an URL for a particular service could be the following URL in Azure: - - - -In a production environment based on a cluster, that URL would map to the load balancer used in the cluster, which in turn distributes the requests across the microservices. In production environments, you could have an Application Delivery Controller (ADC) like [Azure Application Gateway](https://docs.microsoft.com/azure/application-gateway/application-gateway-introduction) between your microservices and the Internet. This acts as a transparent tier that not only performs load balancing, but secures your services by offering SSL termination. This improves the load of your hosts by offloading CPU-intensive SSL termination and other routing duties to the Azure Application Gateway. In any case, a load balancer and ADC are transparent from a logical application architecture point of view. - -A direct client-to-microservice communication architecture is good enough for a small microservice-based application. However, when you build large and complex microservice-based applications (for example, when handling dozens of microservice types), that approach faces possible issues. You need to consider the following questions when developing a large application based on microservices: - -- *How can client apps minimize the number of requests to the backend and reduce chatty communication to multiple microservices?* - -Interacting with multiple microservices to build a single UI screen increases the number of roundtrips across the Internet. This increases latency and complexity on the UI side. Ideally, responses should be efficiently aggregated in the server side—this reduces latency, since multiple pieces of data come back in parallel and some UI can show data as soon as it is ready. - -- *How can you handle cross-cutting concerns such as authorization, data transformations, and dynamic request dispatching?* - -Implementing security and cross-cutting concerns like security and authorization on every microservice can require significant development effort. A possible approach is to have those services within the Docker host or internal cluster, in order to restrict direct access to them from the outside, and to implement those cross-cutting concerns in a centralized place, like an API Gateway. - -- *How can client apps communicate with services that use non-Internet-friendly protocols?* - -Protocols used on the server side (like AMQP or binary protocols) are usually not supported in client apps. Therefore, requests must be performed through protocols like HTTP/HTTPS and translated to the other protocols afterwards. A *man-in-the-middle* approach can help in this situation. - -- *How can you shape a façade especially made for mobile apps? * - -The API of multiple microservices might not be well designed for the needs of different client applications. For instance, the needs of a mobile app might be different than the needs of a web app. For mobile apps, you might need to optimize even further so that data responses can be more efficient. You might do this by aggregating data from multiple microservices and returning a single set of data, and sometimes eliminating any data in the response that is not needed by the mobile app. And, of course, you might compress that data. Again, a façade or API in between the mobile app and the microservices can be convenient for this scenario. - -### Using an API Gateway - -When you design and build large or complex microservice-based applications with multiple client apps, a good approach to consider can be an [API Gateway](http://microservices.io/patterns/apigateway.html). This is a service that provides a single entry point for certain groups of microservices. It is similar to the [Facade pattern](https://en.wikipedia.org/wiki/Facade_pattern) from object‑oriented design, but in this case, it is part of a distributed system. The API Gateway pattern is also sometimes known as the “back end for the front end,” because you build it while thinking about the needs of the client app. - -Figure 4-13 shows how an API Gateway can fit into a microservice-based architecture. - -![](./media/image13.png) - -**Figure 4-13**. Using the API Gateway pattern in a microservice-based architecture - -In this example, the API Gateway would be implemented as a custom Web API service running as a container. - -You should implement several API Gateways so that you can have a different façade for the needs of each client app. Each API Gateway can provide a different API tailored for each client app, possibly even based on the client form factor or device by implementing specific adapter code which underneath calls multiple internal microservices. - -Since the API Gateway is actually an aggregator, you need to be careful with it. Usually it is not a good idea to have a single API Gateway aggregating all the internal microservices of your application. If it does, it acts as a monolithic aggregator or orchestrator and violates microservice autonomy by coupling all the microservices. Therefore, the API Gateways should be segregated based on business boundaries and not act as an aggregator for the whole application. - -Sometimes a granular API Gateway can also be a microservice by itself, and even have a domain or business name and related data. Having the API Gateway’s boundaries dictated by the business or domain will help you to get a better design. - -Granularity in the API Gateway tier can be especially useful for more advanced composite UI applications based on microservices, because the concept of a fine-grained API Gateway is similar to an UI composition service. We discuss this later in the [Creating composite UI based on microservices](#creating-composite-ui-based-on-microservices-including-visual-ui-shape-and-layout-generated-by-multiple-microservices). - -Therefore, for many medium- and large-size applications, using a custom-built API Gateway is usually a good approach, but not as a single monolithic aggregator or unique central API Gateway. - -Another approach is to use a product like [Azure API Management](https://azure.microsoft.com/services/api-management/) as shown in Figure 4-14. This approach not only solves your API Gateway needs, but provides features like gathering insights from your APIs. If you are using an API management solution, an API Gateway is only a component within that full API management solution. - -![](./media/image14.png) - -**Figure 4-14**. Using Azure API Management for your API Gateway - -The insights available from an API Management system help you get an understanding of how your APIs are being used and how they are performing. They do this by letting you view near real-time analytics reports and identifying trends that might impact your business. Plus you can have logs about request and response activity for further online and offline analysis. - -With Azure API Management, you can secure your APIs using a key, a token, and IP filtering. These features let you enforce flexible and fine-grained quotas and rate limits, modify the shape and behavior of your APIs using policies, and improve performance with response caching. - -In this guide and the reference sample application (eShopOnContainers) we are limiting the architecture to a simpler and custom-made containerized architecture in order to focus on plain containers without using PaaS products like Azure API Management. But for large microservice-based applications that are deployed into Microsoft Azure, we encourage you to review and adopt Azure API Management as the base for your API Gateways. - -### Drawbacks of the API Gateway pattern - -- The most important drawback is that when you implement an API Gateway, you are coupling that tier with the internal microservices. Coupling like this might introduce serious difficulties for your application. (The cloud architect Clemens Vaster refers to this potential difficulty as “the new ESB” in his "[Messaging and Microservices](https://www.youtube.com/watch?v=rXi5CLjIQ9k)" session from at GOTO 2016.) - -- Using a microservices API Gateway creates an additional possible point of failure. - -- An API Gateway can introduce increased response time due to the additional network call. However, this extra call usually has less impact than having a client interface that is too chatty directly calling the internal microservices. - -- The API Gateway can represent a possible bottleneck if it is not scaled out properly - -- An API Gateway requires additional development cost and future maintenance if it includes custom logic and data aggregation. Developers must update the API Gateway in order to expose each microservice’s endpoints. Moreover, implementation changes in the internal microservices might cause code changes at the API Gateway level. However, if the API Gateway is just applying security, logging, and versioning (as when using Azure API Management), this additional development cost might not apply. - -- If the API Gateway is developed by a single team, there can be a development bottleneck. This is another reason why a better approach is to have several fined-grained API Gateways that respond to different client needs. You could also segregate the API Gateway internally into multiple areas or layers that are owned by the different teams working on the internal microservices. - -## Additional resources - -- **Charles Richardson. Pattern: API Gateway / Backend for Front-End** - [*http://microservices.io/patterns/apigateway.html*](http://microservices.io/patterns/apigateway.html) - -- **Azure API Management** - [*https://azure.microsoft.com/services/api-management/*](https://azure.microsoft.com/services/api-management/) - -- **Udi Dahan. Service Oriented Composition**\ - [*http://udidahan.com/2014/07/30/service-oriented-composition-with-video/*](http://udidahan.com/2014/07/30/service-oriented-composition-with-video/) - -- **Clemens Vasters. Messaging and Microservices at GOTO 2016** (video) - [*https://www.youtube.com/watch?v=rXi5CLjIQ9k*](https://www.youtube.com/watch?v=rXi5CLjIQ9k) - - >[!div class="step-by-step"] [Previous] (distributed-data-management.md) -[Next] (communication-between-microservices.md) +[Next] (direct-client-to-microservice-communication-versus-the-api-gateway-pattern.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/index.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/index.md index 4a3a002e93c35..5cfaaf7265b86 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/index.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/index.md @@ -15,7 +15,7 @@ ms.topic: article Earlier in this guide, you learned basic concepts about containers and Docker. That was the minimum information you need in order to get started with containers. Although, even when containers are enablers and a great fit for microservices, they are not mandatory for a microservice architecture and many architectural concepts in this architecture section could be applied without containers, too. However, this guidance focuses on the intersection of both due to the already introduced importance of containers. -Enterprise applications can be complex and are often composed of multiple services instead of a single service-based application. For those cases, you need to understand additional architectural approaches, such as the microservices and certain domain-driven design (DDD) patterns plus container orchestration concepts. Note that this chapter describes not just microservices on containers, but any containerized application, as well. +Enterprise applications can be complex and are often composed of multiple services instead of a single service-based application. For those cases, you need to understand additional architectural approaches, such as the microservices and certain Domain-Driven Design (DDD) patterns plus container orchestration concepts. Note that this chapter describes not just microservices on containers, but any containerized application, as well. ## Container design principles @@ -23,7 +23,7 @@ In the container model, a container image instance represents a single process. When you design a container image, you will see an [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/) definition in the Dockerfile. This defines the process whose lifetime controls the lifetime of the container. When the process completes, the container lifecycle ends. Containers might represent long-running processes like web servers, but can also represent short-lived processes like batch jobs, which formerly might have been implemented as Azure [WebJobs](https://docs.microsoft.com/azure/app-service-web/websites-webjobs-resources). -If the process fails, the container ends, and the orchestrator takes over. If the orchestrator was configured to keep five instances running and one fails, the orchestrator will create another container instance to replace the failed process. In a batch job, the process is started with parameters. When the process completes, the work is complete. +If the process fails, the container ends, and the orchestrator takes over. If the orchestrator was configured to keep five instances running and one fails, the orchestrator will create another container instance to replace the failed process. In a batch job, the process is started with parameters. When the process completes, the work is complete. This guidance drills-down on orchestrators, later on. You might find a scenario where you want multiple processes running in a single container. For that scenario, since there can be only one entry point per container, you could run a script within the container that launches as many programs as needed. For example, you can use [Supervisor](http://supervisord.org/) or a similar tool to take care of launching multiple processes inside a single container. However, even though you can find architectures that hold multiple processes per container, that approach it is not very common. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image15.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image15.png index 9262d68e033f0..0148310091f99 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image15.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image15.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image16.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image16.png index 6968a6fb0ee48..b9b1bd81db4b1 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image16.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image16.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image17.PNG b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image17.PNG index b30c9fc0a06be..6968a6fb0ee48 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image17.PNG and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image17.PNG differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image18.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image18.png index 6cbd702cbc5b2..b30c9fc0a06be 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image18.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image18.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image19.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image19.png index d405de9d209da..6cbd702cbc5b2 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image19.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image19.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image20.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image20.png index 15adb740f6655..97b3c62f1c0c3 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image20.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image20.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image21.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image21.png index 0ccfef1efba15..15adb740f6655 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image21.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image21.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image22.PNG b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image22.PNG index 70b69020c6d9e..0ccfef1efba15 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image22.PNG and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image22.PNG differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image23.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image23.png index eb88b15e6e5ef..70b69020c6d9e 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image23.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image23.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image24.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image24.png index 40ab685febc8b..b315bb3a8bb29 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image24.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image24.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image25.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image25.png index b315bb3a8bb29..eb88b15e6e5ef 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image25.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image25.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image26.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image26.png index 9bd8222f11182..b6f3e33ceae1b 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image26.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image26.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image27.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image27.png index 8b4a4bd957745..93c08c333de26 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image27.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image27.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image28.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image28.png index 38a888ec50b0d..8b4a4bd957745 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image28.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image28.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image29.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image29.png index 52279c3be5739..38a888ec50b0d 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image29.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image29.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image30.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image30.png index 6678228fe7a03..52279c3be5739 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image30.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image30.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image31.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image31.png index ab7a5614da4fc..6678228fe7a03 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image31.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image31.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image32.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image32.png index e59c1f6f2d9f3..ab7a5614da4fc 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image32.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image32.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image33.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image33.png index e45712e2b056e..e59c1f6f2d9f3 100644 Binary files a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image33.png and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image33.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image34.png b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image34.png new file mode 100644 index 0000000000000..e45712e2b056e Binary files /dev/null and b/docs/standard/microservices-architecture/architect-microservice-container-applications/media/image34.png differ diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md index 4b1d0cbf08e50..1d652f887dea0 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md @@ -13,21 +13,21 @@ ms.topic: article Microservices architecture often starts with the server side handling data and logic. However, a more advanced approach is to design your application UI based on microservices as well. That means having a composite UI produced by the microservices, instead of having microservices on the server and just a monolithic client app consuming the microservices. With this approach, the microservices you build can be complete with both logic and visual representation. -Figure 4-19 shows the simpler approach of just consuming microservices from a monolithic client application. Of course, you could have an ASP.NET MVC service in between producing the HTML and JavaScript. The figure is a simplification that highlights that you have a single (monolithic) client UI consuming the microservices, which just focus on logic and data and not on the UI shape (HTML and JavaScript). +Figure 4-20 shows the simpler approach of just consuming microservices from a monolithic client application. Of course, you could have an ASP.NET MVC service in between producing the HTML and JavaScript. The figure is a simplification that highlights that you have a single (monolithic) client UI consuming the microservices, which just focus on logic and data and not on the UI shape (HTML and JavaScript). -![](./media/image19.png) +![](./media/image20.png) -**Figure 4-19**. A monolithic UI application consuming back-end microservices +**Figure 4-20**. A monolithic UI application consuming back-end microservices In contrast, a composite UI is precisely generated and composed by the microservices themselves. Some of the microservices drive the visual shape of specific areas of the UI. The key difference is that you have client UI components (TS classes, for example) based on templates, and the data-shaping-UI ViewModel for those templates comes from each microservice. At client application start-up time, each of the client UI components (TypeScript classes, for example) registers itself with an infrastructure microservice capable of providing ViewModels for a given scenario. If the microservice changes the shape, the UI changes also. -Figure 4-20 shows a version of this composite UI approach. This is simplified, because you might have other microservices that are aggregating granular parts based on different techniques—it depends on whether you are building a traditional web approach (ASP.NET MVC) or an SPA (Single Page Application). +Figure 4-21 shows a version of this composite UI approach. This is simplified, because you might have other microservices that are aggregating granular parts based on different techniques—it depends on whether you are building a traditional web approach (ASP.NET MVC) or an SPA (Single Page Application). -![](./media/image20.png) +![](./media/image21.png) -**Figure 4-20**. Example of a composite UI application shaped by back-end microservices +**Figure 4-21**. Example of a composite UI application shaped by back-end microservices Each of those UI composition microservices would be similar to a small API Gateway. But in this case each is responsible for a small UI area. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md index f5c32e9a40a9a..c838652287698 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md @@ -41,11 +41,11 @@ A microservice-based application should not try to store the output stream of ev When you create a microservice-based application, you need to deal with complexity. Of course, a single microservice is simple to deal with, but dozens or hundreds of types and thousands of instances of microservices is a complex problem. It is not just about building your microservice architecture—you also need high availability, addressability, resiliency, health, and diagnostics if you intend to have a stable and cohesive system. -![](./media/image21.png) +![](./media/image22.png) -**Figure 4-21**. A Microservice Platform is fundamental for an application’s health management +**Figure 4-22**. A Microservice Platform is fundamental for an application’s health management -The complex problems shown in Figure 4-21 are very hard to solve by yourself. Development teams should focus on solving business problems and building custom applications with microservice-based approaches. They should not focus on solving complex infrastructure problems; if they did, the cost of any microservice-based application would be huge. Therefore, there are microservice-oriented platforms, referred to as orchestrators or microservice clusters, that try to solve the hard problems of building and running a service and using infrastructure resources efficiently. This reduces the complexities of building applications that use a microservices approach. +The complex problems shown in Figure 4-22 are very hard to solve by yourself. Development teams should focus on solving business problems and building custom applications with microservice-based approaches. They should not focus on solving complex infrastructure problems; if they did, the cost of any microservice-based application would be huge. Therefore, there are microservice-oriented platforms, referred to as orchestrators or microservice clusters, that try to solve the hard problems of building and running a service and using infrastructure resources efficiently. This reduces the complexities of building applications that use a microservices approach. Different orchestrators might sound similar, but the diagnostics and health checks offered by each of them differ in features and state of maturity, sometimes depending on the OS platform, as explained in the next section. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md index da9e4b128ba57..b01445fc8d444 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md @@ -4,40 +4,50 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core -ms.technology: dotnet-docker +ms.technology: dotnet-docker, service fabric, kubernetes, azure container service, docker swarm, dc/os ms.topic: article --- # Orchestrating microservices and multi-container applications for high scalability and availability Using orchestrators for production-ready applications is essential if your application is based on microservices or simply split across multiple containers. As introduced previously, in a microservice-based approach, each microservice owns its model and data so that it will be autonomous from a development and deployment point of view. But even if you have a more traditional application that is composed of multiple services (like SOA), you will also have multiple containers or services comprising a single business application that need to be deployed as a distributed system. These kinds of systems are complex to scale out and manage; therefore, you absolutely need an orchestrator if you want to have a production-ready and scalable multi-container application. -Figure 4-22 illustrates deployment into a cluster of an application composed of multiple microservices (containers). +Figure 4-23 illustrates deployment into a cluster of an application composed of multiple microservices (containers). -![](./media/image22.PNG) +![](./media/image23.PNG) -**Figure 4-22**. A cluster of containers +**Figure 4-23**. A cluster of containers It looks like a logical approach. But how are you handling load-balancing, routing, and orchestrating these composed applications? -The Docker CLI meets the needs of managing one container on one host, but it falls short when it comes to managing multiple containers deployed on multiple hosts for more complex distributed applications. In most cases, you need a management platform that will automatically start containers, suspend them or shut them down when needed, and ideally also control how they access resources like the network and data storage. +The plain Docker Engine in single Docker hosts meets the needs of managing single image instances on one host, but it falls short when it comes to managing multiple containers deployed on multiple hosts for more complex distributed applications. In most cases, you need a management platform that will automatically start containers, scale-out containers with multiple instances per image, suspend them or shut them down when needed, and ideally also control how they access resources like the network and data storage. To go beyond the management of individual containers or very simple composed apps and move toward larger enterprise applications with microservices, you must turn to orchestration and clustering platforms. From an architecture and development point of view, if you are building large enterprise composed of microservices-based applications, it is important to understand the following platforms and products that support advanced scenarios: -**Clusters and orchestrators**. When you need to scale out applications across many Docker hosts, as when a large microservice-based application, it is critical to be able to manage all those hosts as a single cluster by abstracting the complexity of the underlying platform. That is what the container clusters and orchestrators provide. Examples of orchestrators are Docker Swarm, Mesosphere DC/OS, Kubernetes (the first three available through Azure Container Service) and Azure Service Fabric. +**Clusters and orchestrators**. When you need to scale out applications across many Docker hosts, as when a large microservice-based application, it is critical to be able to manage all those hosts as a single cluster by abstracting the complexity of the underlying platform. That is what the container clusters and orchestrators provide. Examples of orchestrators are Azure Service Fabric, Kubernetes, Docker Swarm and Mesosphere DC/OS. The last three open-source orchestrators are available in Azure through Azure Container Service. **Schedulers**. *Scheduling* means to have the capability for an administrator to launch containers in a cluster so they also provide a UI. A cluster scheduler has several responsibilities: to use the cluster’s resources efficiently, to set the constraints provided by the user, to efficiently load-balance containers across nodes or hosts, and to be robust against errors while providing high availability. -The concepts of a cluster and a scheduler are closely related, so the products provided by different vendors often provide both sets of capabilities. The following list shows the most important platform and software choices you have for clusters and schedulers. These clusters are generally offered in public clouds like Azure. +The concepts of a cluster and a scheduler are closely related, so the products provided by different vendors often provide both sets of capabilities. The following list shows the most important platform and software choices you have for clusters and schedulers. These orchestrators are generally offered in public clouds like Azure. ## Software platforms for container clustering, orchestration, and scheduling +Kubernetes + +![https://pbs.twimg.com/media/Bt\_pEfqCAAAiVyz.png](./media/image24.png) + +> Kubernetes is an open-source product that provides functionality that ranges from cluster infrastructure and container scheduling to orchestrating capabilities. It lets you automate deployment, scaling, and operations of application containers across clusters of hosts. +> +> Kubernetes provides a container-centric infrastructure that groups application containers into logical units for easy management and discovery. +> +> Kubernetes is mature in Linux, less mature in Windows. + Docker Swarm -![http://rancher.com/wp-content/themes/rancher-2016/assets/images/swarm.png?v=2016-07-10-am](./media/image23.png) +![http://rancher.com/wp-content/themes/rancher-2016/assets/images/swarm.png?v=2016-07-10-am](./media/image25.png) > Docker Swarm lets you cluster and schedule Docker containers. By using Swarm, you can turn a pool of Docker hosts into a single, virtual Docker host. Clients can make API requests to Swarm the same way they do to hosts, meaning that Swarm makes it easy for applications to scale to multiple hosts. > @@ -47,29 +57,24 @@ Docker Swarm Mesosphere DC/OS -![https://mesosphere.com/wp-content/uploads/2016/04/logo-horizontal-styled.png](./media/image24.png) +![https://mesosphere.com/wp-content/uploads/2016/04/logo-horizontal-styled.png](./media/image26.png) > Mesosphere Enterprise DC/OS (based on Apache Mesos) is a production-ready platform for running containers and distributed applications. > > DC/OS works by abstracting a collection of the resources available in the cluster and making those resources available to components built on top of it. Marathon is usually used as a scheduler integrated with DC/OS. - -Google Kubernetes - -![https://pbs.twimg.com/media/Bt\_pEfqCAAAiVyz.png](./media/image25.png) - -> Kubernetes is an open-source product that provides functionality that ranges from cluster infrastructure and container scheduling to orchestrating capabilities. It lets you automate deployment, scaling, and operations of application containers across clusters of hosts. > -> Kubernetes provides a container-centric infrastructure that groups application containers into logical units for easy management and discovery. +> DC/OS is mature in Linux, less mature in Windows. Azure Service Fabric -![https://azure.microsoft.com/svghandler/service-fabric?width=600&height=315](./media/image26.png) +![https://azure.microsoft.com/svghandler/service-fabric?width=600&height=315](./media/image27.png) -> [Service Fabric](https://docs.microsoft.com/azure/service-fabric/service-fabric-overview) is a Microsoft microservices platform for building applications. It is an [orchestrator](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-resource-manager-introduction) of services and creates clusters of machines. By default, Service Fabric deploys and activates services as processes, but Service Fabric can deploy services in Docker container images. More importantly, you can mix services in processes with services in containers in the same application. +> [Service Fabric](https://docs.microsoft.com/azure/service-fabric/service-fabric-overview) is a Microsoft microservices platform for building applications. It is an [orchestrator](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-resource-manager-introduction) of services and creates clusters of machines. Service Fabric can deploy services as containers or as plain processes. It can even mix services in processes with services in containers within the same application and cluster. > -> As of May 2017, the feature of Service Fabric that supports deploying services as Docker containers is in preview state. +> Service Fabric provides additional and optional prescriptive [Service Fabric programming models ](https://docs.microsoft.com/azure/service-fabric/service-fabric-choose-framework) like [stateful services](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-introduction) and [Reliable Actors](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-actors-introduction). > -> Service Fabric services can be developed in many ways, from using the [Service Fabric programming models ](https://docs.microsoft.com/azure/service-fabric/service-fabric-choose-framework)to deploying [guest executables](https://docs.microsoft.com/azure/service-fabric/service-fabric-deploy-existing-app) as well as containers. Service Fabric supports prescriptive application models like [stateful services](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-introduction) and [Reliable Actors](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-actors-introduction). +> Service Fabric is mature in Windows (years evolving in Windows), less mature in Linux. +> Both, Linux Containers and Windows Containers are already released as GA since 2017. ## Using container-based orchestrators in Microsoft Azure @@ -79,25 +84,25 @@ Another choice is to use Microsoft Azure Service Fabric (a microservices platfor ## Using Azure Container Service -A Docker cluster pools multiple Docker hosts and exposes them as a single virtual Docker host, so you can deploy multiple containers into the cluster. The cluster will handle all the complex management plumbing, like scalability, health, and so forth. Figure 4-23 represents how a Docker cluster for composed applications maps to Azure Container Service (ACS). +A Docker cluster pools multiple Docker hosts and exposes them as a single virtual Docker host, so you can deploy multiple containers into the cluster. The cluster will handle all the complex management plumbing, like scalability, health, and so forth. Figure 4-24 represents how a Docker cluster for composed applications maps to Azure Container Service (ACS). ACS provides a way to simplify the creation, configuration, and management of a cluster of virtual machines that are preconfigured to run containerized applications. Using an optimized configuration of popular open-source scheduling and orchestration tools, ACS enables you to use your existing skills or draw on a large and growing body of community expertise to deploy and manage container-based applications on Microsoft Azure. Azure Container Service optimizes the configuration of popular Docker clustering open source tools and technologies specifically for Azure. You get an open solution that offers portability for both your containers and your application configuration. You select the size, the number of hosts, and the orchestrator tools, and Container Service handles everything else. -![](./media/image27.png) +![](./media/image28.png) -**Figure 4-23**. Clustering choices in Azure Container Service +**Figure 4-24**. Clustering choices in Azure Container Service ACS leverages Docker images to ensure that your application containers are fully portable. It supports your choice of open-source orchestration platforms like DC/OS (powered by Apache Mesos), Kubernetes (originally created by Google), and Docker Swarm, to ensure that these applications can be scaled to thousands or even tens of thousands of containers. The Azure Container service enables you to take advantage of the enterprise-grade features of Azure while still maintaining application portability, including at the orchestration layers. -![](./media/image28.png) +![](./media/image29.png) -**Figure 4-24**. Orchestrators in ACS +**Figure 4-25**. Orchestrators in ACS -As shown in Figure 4-24, Azure Container Service is simply the infrastructure provided by Azure in order to deploy DC/OS, Kubernetes or Docker Swarm, but ACS does not implement any additional orchestrator. Therefore, ACS is not an orchestrator as such, only an infrastructure that leverages existing open-source orchestrators for containers. +As shown in Figure 4-25, Azure Container Service is simply the infrastructure provided by Azure in order to deploy DC/OS, Kubernetes or Docker Swarm, but ACS does not implement any additional orchestrator. Therefore, ACS is not an orchestrator as such, only an infrastructure that leverages existing open-source orchestrators for containers. From a usage perspective, the goal of Azure Container Service is to provide a container hosting environment by using popular open-source tools and technologies. To this end, it exposes the standard API endpoints for your chosen orchestrator. By using these endpoints, you can leverage any software that can talk to those endpoints. For example, in the case of the Docker Swarm endpoint, you might choose to use the Docker command-line interface (CLI). For DC/OS, you might choose to use the DC/OS CLI. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/service-oriented-architecture.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/service-oriented-architecture.md index 6e704bbac9bcc..c2c5366191e66 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/service-oriented-architecture.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/service-oriented-architecture.md @@ -17,9 +17,9 @@ Those services can now be deployed as Docker containers, which solves deployment Docker containers are useful (but not required) for both traditional service-oriented architectures and the more advanced microservices architectures. -Microservices derive from SOA, but SOA is different from microservices architecture. Features like big central brokers, central orchestrators at the organization level, and the [Enterprise Service Bus (ESB)](https://en.wikipedia.org/wiki/Enterprise_service_bus) are typical in SOA. But in most cases these are anti-patterns in the microservice community. In fact, some people argue that “The microservice architecture is SOA done right.” +Microservices derive from SOA, but SOA is different from microservices architecture. Features like big central brokers, central orchestrators at the organization level, and the [Enterprise Service Bus (ESB)](https://en.wikipedia.org/wiki/Enterprise_service_bus) are typical in SOA. But in most cases, these are anti-patterns in the microservice community. In fact, some people argue that “The microservice architecture is SOA done right.” -This guide focuses on microservices, because an SOA approach is less prescriptive than the requirements and techniques used in a microservice architecture. If you know how to build a microservice-based application, you also know how to build a simpler service-oriented application. +This guide focuses on microservices, because a SOA approach is less prescriptive than the requirements and techniques used in a microservice architecture. If you know how to build a microservice-based application, you also know how to build a simpler service-oriented application. diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/using-azure-service-fabric.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/using-azure-service-fabric.md index d4d1e8f7ac254..c2ef9945e86d0 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/using-azure-service-fabric.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/using-azure-service-fabric.md @@ -4,14 +4,14 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article --- # Using Azure Service Fabric -Azure Service Fabric arose from Microsoft’s transition from delivering box products, which were typically monolithic in style, to delivering services. The experience of building and operating large services at scale, such as Azure SQL Database, Azure Document DB, Azure Service Bus, or Cortana’s Backend, shaped Service Fabric. The platform evolved over time as more and more services adopted it. Importantly, Service Fabric had to run not only in Azure but also in standalone Windows Server deployments. +Azure Service Fabric arose from Microsoft’s transition from delivering box products, which were typically monolithic in style, to delivering services. The experience of building and operating large services at scale, such as Azure SQL Database, Azure Cosmos DB, Azure Service Bus, or Cortana’s Backend, shaped Service Fabric. The platform evolved over time as more and more services adopted it. Importantly, Service Fabric had to run not only in Azure but also in standalone Windows Server deployments. The aim of Service Fabric is to solve the hard problems of building and running a service and utilizing infrastructure resources efficiently, so that teams can solve business problems using a microservices approach. @@ -23,67 +23,68 @@ Service Fabric provides two broad areas to help you build applications that use Service Fabric is agnostic with respect to how you build your service, and you can use any technology. However, it provides built-in programming APIs that make it easier to build microservices. -As shown in Figure 4-25, you can create and run microservices in Service Fabric either as simple processes or as Docker containers. It is also possible to mix container-based microservices with process-based microservices within the same Service Fabric cluster. +As shown in Figure 4-26, you can create and run microservices in Service Fabric either as simple processes or as Docker containers. It is also possible to mix container-based microservices with process-based microservices within the same Service Fabric cluster. -![](./media/image29.png) +![](./media/image30.png) -**Figure 4-25**. Deploying microservices as processes or as containers in Azure Service Fabric +**Figure 4-26**. Deploying microservices as processes or as containers in Azure Service Fabric -Service Fabric clusters based on Linux and Windows hosts can run Docker Linux containers and Windows Containers. +Service Fabric clusters based on Linux and Windows hosts can run Docker Linux containers and Windows Containers, respectively. For up-to-date information about containers support in Azure Service Fabric, see [Service Fabric and containers](https://docs.microsoft.com/azure/service-fabric/service-fabric-containers-overview). -Service Fabric is a good example of a platform where you can define a different logical architecture (business microservices or Bounded Contexts) than the physical implementation that were introduced in the [Logical architecture versus physical architecture](#logical-architecture-versus-physical-architecture) section. For example, if you implement [Stateful Reliable Services](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-introduction) in [Azure Service Fabric](https://docs.microsoft.com/azure/service-fabric/service-fabric-overview), which are introduced in the section [Stateless versus stateful microservices](#stateless-versus-stateful-microservices) later, you have a business microservice concept with multiple physical services. +Service Fabric is a good example of a platform where you can define a different logical architecture (business microservices or Bounded Contexts) than the physical implementation that were introduced in the [Logical architecture versus physical architecture](#logical-architecture-versus-physical-architecture) section. For example, if you implement [Stateful Reliable Services](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-introduction) in [Azure Service Fabric](https://docs.microsoft.com/azure/service-fabric/service-fabric-overview), which are introduced in the section [Stateless versus stateful microservices](#stateless-versus-stateful-microservices) later, you can have a business microservice concept with multiple physical services. -As shown in Figure 4-26, and thinking from a logical/business microservice perspective, when implementing a Service Fabric Stateful Reliable Service, you usually will need to implement two tiers of services. The first is the back-end stateful reliable service, which handles multiple partitions. The second is the front-end service, or Gateway service, in charge of routing and data aggregation across multiple partitions or stateful service instances. That Gateway service also handles client-side communication with retry loops accessing the backend service used in conjunction with the Service Fabric [reverse proxy](https://docs.microsoft.com/azure/service-fabric/service-fabric-reverseproxy). +As shown in Figure 4-27, and thinking from a logical/business microservice perspective, when implementing a Service Fabric Stateful Reliable Service, you usually will need to implement two tiers of services. The first is the back-end stateful reliable service, which handles multiple partitions (each partition is a stateful service). The second is the front-end service, or Gateway service, in charge of routing and data aggregation across multiple partitions or stateful service instances. That Gateway service also handles client-side communication with retry loops accessing the backend service. +It is called Gateway service if you implement your custom service, or alternatevely you can also use the out-of-the-box Service Fabric [Reverse Proxy service](https://docs.microsoft.com/azure/service-fabric/service-fabric-reverseproxy). -![](./media/image30.png) +![](./media/image31.png) -**Figure 4-26**. Business microservice with several stateful and stateless services in Service Fabric +**Figure 4-27**. Business microservice with several stateful service instances and a custom gateway front-end In any case, when you use Service Fabric Stateful Reliable Services, you also have a logical or business microservice (Bounded Context) that is usually composed of multiple physical services. Each of them, the Gateway service and Partition service could be implemented as ASP.NET Web API services, as shown in Figure 4-26. -In Service Fabric, you can group and deploy groups of services as a [Service Fabric Application](https://docs.microsoft.com/azure/service-fabric/service-fabric-application-model), which is the unit of packaging and deployment for the orchestrator or cluster. Therefore, the Service Fabric Application could be mapped to this autonomous business and logical microservice boundary or Bounded Context, as well. +In Service Fabric, you can group and deploy groups of services as a [Service Fabric Application](https://docs.microsoft.com/azure/service-fabric/service-fabric-application-model), which is the unit of packaging and deployment for the orchestrator or cluster. Therefore, the Service Fabric Application could be mapped to this autonomous business and logical microservice boundary or Bounded Context, as well, so you could deploy these services autonomously. ## Service Fabric and containers -With regard to containers in Service Fabric, you can also deploy services in container images within a Service Fabric cluster. As Figure 4-27 shows, most of the time there will only be one container per service. +With regard to containers in Service Fabric, you can also deploy services in container images within a Service Fabric cluster. As Figure 4-28 shows, most of the time there will only be one container per service. -![](./media/image31.png) +![](./media/image32.png) -**Figure 4-27**. Business microservice with several services (containers) in Service Fabric +**Figure 4-28**. Business microservice with several services (containers) in Service Fabric However, so-called “sidecar” containers (two containers that must be deployed together as part of a logical service) are also possible in Service Fabric. The important thing is that a business microservice is the logical boundary around several cohesive elements. In many cases, it might be a single service with a single data model, but in some other cases you might have physical several services as well. -As of this writing (April 2017), in Service Fabric you cannot deploy SF Reliable Stateful Services on containers—you can only deploy guest containers, stateless services, or actor services in containers. But note that you can mix services in processes and services in containers in the same Service Fabric application, as shown in Figure 4-28. +As of mid-2017, in Service Fabric you cannot deploy SF Reliable Stateful Services on containers—you can only deploy stateless services and actor services in containers. But note that you can mix services in processes and services in containers in the same Service Fabric application, as shown in Figure 4-29. -![](./media/image32.png) +![](./media/image33.png) -**Figure 4-28**. Business microservice mapped to a Service Fabric application with containers and stateful services +**Figure 4-29**. Business microservice mapped to a Service Fabric application with containers and stateful services -Support is also different depending on whether you are using Docker containers on Linux or Windows Containers. Support for containers in Service Fabric will be expanding in upcoming releases. For up-to-date news about container support in Azure Service Fabric, see [Service Fabric and containers](https://docs.microsoft.com/azure/service-fabric/service-fabric-containers-overview) on the Azure website. +For up-to-date news about container support in Azure Service Fabric, see [Service Fabric and containers](https://docs.microsoft.com/azure/service-fabric/service-fabric-containers-overview). ## Stateless versus stateful microservices -As mentioned earlier, each microservice (logical Bounded Context) must own its domain model (data and logic). In the case of stateless microservices, the databases will be external, employing relational options like SQL Server, or NoSQL options like MongoDB or Azure Document DB. +As mentioned earlier, each microservice (logical Bounded Context) must own its domain model (data and logic). In the case of stateless microservices, the databases will be external, employing relational options like SQL Server, or NoSQL options like MongoDB or Azure Cosmos DB. -But the services themselves can also be stateful, which means that the data resides within the microservice. This data might exist not just on the same server, but within the microservice process, in memory and persisted on hard drives and replicated to other nodes. Figure 4-29 shows the different approaches. +But the services themselves can also be stateful in Service Fabric, which means that the data resides within the microservice. This data might exist not just on the same server, but within the microservice process, in memory and persisted on hard drives and replicated to other nodes. Figure 4-30 shows the different approaches. -![](./media/image33.png) +![](./media/image34.png) -**Figure 4-29**. Stateless versus stateful microservices +**Figure 4-30**. Stateless versus stateful microservices A stateless approach is perfectly valid and is easier to implement than stateful microservices, since the approach is similar to traditional and well-known patterns. But stateless microservices impose latency between the process and data sources. They also involve more moving pieces when you are trying to improve performance with additional cache and queues. The result is that you can end up with complex architectures that have too many tiers. In contrast, [stateful microservices](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-introduction#when-to-use-reliable-services-apis) can excel in advanced scenarios, because there is no latency between the domain logic and data. Heavy data processing, gaming back ends, databases as a service, and other low-latency scenarios all benefit from stateful services, which enable local state for faster access. -Stateless and stateful services are complementary. For instance, you can see in Figure 4-20 that a stateful service could be split into multiple partitions. To access those partitions, you might need a stateless service acting as a gateway service that knows how to address each partition based on partition keys. +Stateless and stateful services are complementary. For instance, you can see in Figure 4-30, at the right diagram, that a stateful service could be split into multiple partitions. To access those partitions, you might need a stateless service acting as a gateway service that knows how to address each partition based on partition keys. Stateful services do have drawbacks. They impose a level of complexity that allows to scale out. Functionality that would usually be implemented by external database systems must be addressed for tasks such as data replication across stateful microservices and data partitioning. However, this is one of the areas where an orchestrator like [Azure Service Fabric](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-platform-architecture) with its [stateful reliable services](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-services-introduction#when-to-use-reliable-services-apis) can help the most—by simplifying the development and lifecycle of stateful microservices using the [Reliable Services API](https://docs.microsoft.com/azure/service-fabric/service-fabric-work-with-reliable-collections) and [Reliable Actors](https://docs.microsoft.com/azure/service-fabric/service-fabric-reliable-actors-introduction). Other microservice frameworks that allow stateful services, that support the Actor pattern, and that improve fault tolerance and latency between business logic and data are Microsoft [Orleans](https://github.com/dotnet/orleans), from Microsoft Research, and [Akka.NET](http://getakka.net/). Both frameworks are currently improving their support for Docker. -Note that Docker containers are themselves stateless. If you want to implement a stateful service, you need one of the additional prescriptive and higher-level frameworks noted earlier. However, at the time of this writing, stateful services in Azure Service Fabric are not supported as containers, only as plain microservices. Reliable services support in containers will be available in upcoming versions of Service Fabric. +Note that Docker containers are themselves stateless. If you want to implement a stateful service, you need one of the additional prescriptive and higher-level frameworks noted earlier. >[!div class="step-by-step"] [Previous] (scalable-available-multi-container-microservice-applications.md) diff --git a/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md b/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md index 38f30923ed4dc..2af6c92feeb70 100644 --- a/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md +++ b/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -43,7 +43,7 @@ However, just because Visual Studio makes those steps automatic does not mean th ## Step 1. Start coding and create your initial application or service baseline -Developing a Docker application is similar to the way you develop an application without Docker. The difference is that while developing for Docker, you are deploying and testing your application or services running within Docker containers in your local environment (either a Linux VM or a Windows VM). +Developing a Docker application is similar to the way you develop an application without Docker. The difference is that while developing for Docker, you are deploying and testing your application or services running within Docker containers in your local environment. The container can be either a Linux container or a Windows container. ### Set up your local environment with Visual Studio @@ -93,14 +93,14 @@ This action on a project (like an ASP.NET Web application or Web API service) ad You usually build a custom image for your container on top of a base image you can get from an official repository at the [Docker Hub](https://hub.docker.com/) registry. That is precisely what happens under the covers when you enable Docker support in Visual Studio. Your Dockerfile will use an existing aspnetcore image. -Earlier we explained which Docker images and repos you can use, depending on the framework and OS you have chosen. For instance, if you want to use ASP.NET Core and Linux, the image to use is microsoft/aspnetcore:1.1. Therefore, you just need to specify what base Docker image you will use for your container. You do that by adding FROM microsoft/aspnetcore:1.1 to your Dockerfile. This will be automatically performed by Visual Studio, but if you were to update the version, you update this value. +Earlier we explained which Docker images and repos you can use, depending on the framework and OS you have chosen. For instance, if you want to use ASP.NET Core (Linux or Windows), the image to use is microsoft/aspnetcore:2.0. Therefore, you just need to specify what base Docker image you will use for your container. You do that by adding FROM microsoft/aspnetcore:2.0 to your Dockerfile. This will be automatically performed by Visual Studio, but if you were to update the version, you update this value. Using an official .NET image repository from Docker Hub with a version number ensures that the same language features are available on all machines (including development, testing, and production). The following example shows a sample Dockerfile for an ASP.NET Core container. ``` -FROM microsoft/aspnetcore:1.1 +FROM microsoft/aspnetcore:2.0 ARG source @@ -113,7 +113,7 @@ COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", " MySingleContainerWebApp.dll "] ``` -In this case, the container is based on version 1.1 of the official ASP.NET Core Docker image for Linux; this is the setting FROM microsoft/aspnetcore:1.1. (For further details about this base image, see the [ASP.NET Core Docker Image](https://hub.docker.com/r/microsoft/aspnetcore/) page and the [.NET Core Docker Image](https://hub.docker.com/r/microsoft/dotnet/) page.) In the Dockerfile, you also need to instruct Docker to listen on the TCP port you will use at runtime (in this case, port 80, as configured with the EXPOSE setting). +In this case, the container is based on version 2.0 of the official ASP.NET Core Docker image (multi-arch for Linux and Windows). This is the setting `FROM microsoft/aspnetcore:2.0`. (For further details about this base image, see the [ASP.NET Core Docker Image](https://hub.docker.com/r/microsoft/aspnetcore/) page and the [.NET Core Docker Image](https://hub.docker.com/r/microsoft/dotnet/) page.) In the Dockerfile, you also need to instruct Docker to listen on the TCP port you will use at runtime (in this case, port 80, as configured with the EXPOSE setting). You can specify additional configuration settings in the Dockerfile, depending on the language and framework you are using. For instance, the ENTRYPOINT line with \["dotnet", "MySingleContainerWebApp.dll"\] tells Docker to run a .NET Core application. If you are using the SDK and the .NET Core CLI (dotnet CLI) to build and run the .NET application, this setting would be different. The bottom line is that the ENTRYPOINT line and other settings will be different depending on the language and platform you choose for your application. @@ -125,17 +125,27 @@ You can specify additional configuration settings in the Dockerfile, depending o - **Build your own image**. In the official Docker documentation. [*https://docs.docker.com/engine/tutorials/dockerimages/*](https://docs.docker.com/engine/tutorials/dockerimages/) -### Using multi-platform image repositories +### Using multi-arch image repositories -A single repo can contain platform variants, such as a Linux image and a Windows image. This feature allows vendors like Microsoft (base image creators) to create a single repo to cover multiple platforms. For example, the [microsoft/dotnet](https://hub.docker.com/r/microsoft/aspnetcore/) repository available in the Docker Hub registry provides support for Linux and Windows Nano Server by using the same repo name with different tags, as shown in the following examples: +A single repo can contain platform variants, such as a Linux image and a Windows image. This feature allows vendors like Microsoft (base image creators) to create a single repo to cover multiple platforms (that is Linux and Windows). For example, the [microsoft/dotnet](https://hub.docker.com/r/microsoft/aspnetcore/) repository available in the Docker Hub registry provides support for Linux and Windows Nano Server by using the same repo name. -- microsoft/dotnet:1.1-runtime - .NET Core 1.1 runtime-only on Linux Debian +If you specify a tag, targeting a platform that is explicit like in the following cases: -- microsoft/dotnet:1.1-runtime-nanoserver - .NET Core 1.1 runtime-only on Windows Nano Server +- **microsoft/aspnetcore:2.0.0-jessie** -In the future, it will be possible to use the same repo name and tag targeting multiple operating systems. That way, when you pull an image from a Windows host, it will pull the Windows variant, and pulling the same image name from a Linux host will pull the Linux variant. + .NET Core 2.0 runtime-only on Linux + +- **microsoft/aspnetcore:2.0.0-nanoserver** + + .NET Core 2.0 runtime-only on Windows Nano Server + +But, and this is new since mid-2017, if you specify the same image name, even with the same tag, the new multi-arch images (like the aspnetcore image which supports multi-arch) will use the Linux or Windows version depending on the Docker host OS you are deploying, as shown in the following example: + +- **microsoft/aspnetcore:2.0** + + Multi-arch: .NET Core 2.0 runtime-only on Linux or Windows Nano Server depending on the Docker host OS + +This way, when you pull an image from a Windows host, it will pull the Windows variant, and pulling the same image name from a Linux host will pull the Linux variant. ### Option B: Creating your base image from scratch @@ -143,6 +153,8 @@ You can create your own Docker base image from scratch. This scenario is not rec ### Additional resources +- **Multi-arch .NET Core images**. +https://github.com/dotnet/announcements/issues/14 - **Create a base image**. Official Docker documentation. [*https://docs.docker.com/engine/userguide/eng-image/baseimages/*](https://docs.docker.com/engine/userguide/eng-image/baseimages/) @@ -187,10 +199,10 @@ The [docker-compose.yml](https://docs.docker.com/compose/compose-file/) file let To use a docker-compose.yml file, you need to create the file in your main or root solution folder, with content similar to that in the following example: ```yml -version: '2' +version: '3' services: - + webmvc: image: eshop/web environment: @@ -204,16 +216,17 @@ services: catalog.api: image: eshop/catalog.api - environment: ConnectionString=Server=catalogdata;Port=5432;Database=postgres;… + environment: + - ConnectionString=Server=sql.data;Database=CatalogDB;… ports: - "81:80" depends_on: - - postgres.data + - sql.data ordering.api: image: eshop/ordering.api environment: - - ConnectionString=Server=ordering.data;Database=OrderingDb;… + - ConnectionString=Server=sql.data;Database=OrderingDb;… ports: - "82:80" extra_hosts: @@ -229,25 +242,21 @@ services: ports: - "5433:1433" - postgres.data: - image: postgres:latest - environment: - POSTGRES_PASSWORD: tempPwd ``` Note that this docker-compose.yml file is a simplified and merged version. It contains static configuration data for each container (like the name of the custom image), which always applies, plus configuration information that might depend on the deployment environment, like the connection string. In later sections, you will learn how you can split the docker-compose.yml configuration into multiple docker-compose files and override values depending on the environment and execution type (debug or release). -The docker-compose.yml file example defines five services: the webmvc service (a web application), two microservices (catalog.api and ordering.api), and two data source containers (sql.data based on SQL Server for Linux running as a container and postgres.data as a Postgres database). Each service is deployed as a container, so a Docker image is required for each. +The docker-compose.yml file example defines five services: the webmvc service (a web application), two microservices (catalog.api and ordering.api), and one data source container, sql.data, based on SQL Server for Linux running as a container. Each service is deployed as a container, so a Docker image is required for each. The docker-compose.yml file specifies not only what containers are being used, but how they are individually configured. For instance, the webmvc container definition in the .yml file: -- Uses the pre-built eshop/web:latest image. However, you could also configure the image to be built as part of the docker-compose execution with an additional configuration based on a build: section in the docker-compose file. +- Uses a pre-built eshop/web:latest image. However, you could also configure the image to be built as part of the docker-compose execution with an additional configuration based on a build: section in the docker-compose file. - Initializes two environment variables (CatalogUrl and OrderingUrl). - Forwards the exposed port 80 on the container to the external port 80 on the host machine. -- Links the web service to the catalog and ordering service with the depends\_on setting. This causes the service to wait until those services are started. +- Links the web app to the catalog and ordering service with the depends\_on setting. This causes the service to wait until those services are started. We will revisit the docker-compose.yml file in a later section when we cover how to implement microservices and multi-container apps. @@ -313,7 +322,7 @@ Running a multi-container application using Visual Studio 2017 cannot get simple As mentioned before, each time you add Docker solution support to a project within a solution, that project is configured in the global (solution-level) docker-compose.yml file, which lets you run or debug the whole solution at once. Visual Studio will start one container for each project that has Docker solution support enabled, and perform all the internal steps for you (dotnet publish, docker build, etc.). -The important point here is that, as shown in Figure 5-12, in Visual Studio 2017 there is an additional **Docker** command under the F5 key. This option lets you run or debug a multi-container application by running all the containers that are defined in the docker-compose.yml files at the solution level. The ability to debug multiple-container solutions means that you can set several breakpoints, each breakpoint in a different project (container), and while debugging from Visual Studio you will stop at breakpoints defined in different projects and running on different containers. +The important point here is that, as shown in Figure 5-12, in Visual Studio 2017 there is an additional **Docker** command for the F5 key action. This option lets you run or debug a multi-container application by running all the containers that are defined in the docker-compose.yml files at the solution level. The ability to debug multiple-container solutions means that you can set several breakpoints, each breakpoint in a different project (container), and while debugging from Visual Studio you will stop at breakpoints defined in different projects and running on different containers. ![](./media/image16.png) diff --git a/docs/standard/microservices-architecture/docker-application-development-process/index.md b/docs/standard/microservices-architecture/docker-application-development-process/index.md index 09b79e0260f09..3eda39a9e50f6 100644 --- a/docs/standard/microservices-architecture/docker-application-development-process/index.md +++ b/docs/standard/microservices-architecture/docker-application-development-process/index.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -19,16 +19,18 @@ ms.topic: article Whether you prefer a full and powerful IDE or a lightweight and agile editor, Microsoft has tools that you can use for developing Docker applications. -**Visual Studio with Tools for Docker**. If you are using Visual Studio 2015, you can install the [Visual Studio Tools for Docker](https://marketplace.visualstudio.com/items?itemName=MicrosoftCloudExplorer.VisualStudioToolsforDocker-Preview) add-in. If you are using Visual Studio 2017, tools for Docker are already built-in. In either case, the tools for Docker let you develop, run, and validate your applications directly in the target Docker environment. You can press F5 to run and debug your application (single container or multiple containers) directly into a Docker host, or press CTRL+F5 to edit and refresh your application without having to rebuild the container. This is the simplest and most powerful choice for Windows developers targeting Docker containers for Linux or Windows. +**Visual Studio (for Windows)**. To develop Docker-based applications, use Visual Studio 2017 or later versions that comes with tools for Docker already built-in. The tools for Docker let you develop, run, and validate your applications directly in the target Docker environment. You can press F5 to run and debug your application (single container or multiple containers) directly into a Docker host, or press CTRL+F5 to edit and refresh your application without having to rebuild the container. This is the most powerful development choice for Docker-based apps. + +**Visual Studio for Mac**. It is an IDE, evolution of Xamarin Studio, that runs on macOS and supports Docker-based application development. This should be the preferred choice for developers working in Mac machines who also want to use a powerful IDE. **Visual Studio Code and Docker CLI**. If you prefer a lightweight and cross-platform editor that supports any development language, you can use Microsoft Visual Studio Code (VS Code) and the Docker CLI. This is a cross-platform development approach for Mac, Linux, and Windows. -These products provide a simple but robust experience that streamlines the developer workflow. By installing [Docker Community Edition (CE)](https://www.docker.com/community-edition) tools, you can use a single Docker CLI to build apps for both Windows and Linux. Additionally, Visual Studio Code supports extensions for Docker such as IntelliSense for Dockerfiles and shortcut tasks to run Docker commands from the editor. +By installing [Docker Community Edition (CE)](https://www.docker.com/community-edition) tools, you can use a single Docker CLI to build apps for both Windows and Linux. Additionally, Visual Studio Code supports extensions for Docker such as IntelliSense for Dockerfiles and shortcut tasks to run Docker commands from the editor. ### Additional resources - **Visual Studio Tools for Docker** - [*https://visualstudiogallery.msdn.microsoft.com/0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4*](https://visualstudiogallery.msdn.microsoft.com/0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4) + [*https://docs.microsoft.com/en-us/aspnet/core/publishing/visual-studio-tools-for-docker*](https://docs.microsoft.com/en-us/aspnet/core/publishing/visual-studio-tools-for-docker) - **Visual Studio Code**. Official site. [*https://code.visualstudio.com/download*](https://code.visualstudio.com/download) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md index 2b8d70d28f14d..6c5d2cd2d0431 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md @@ -11,9 +11,9 @@ ms.topic: article --- # Using NoSQL databases as a persistence infrastructure -When you use NoSQL databases for your infrastructure data tier, you typically do not use an ORM like Entity Framework Core. Instead you use the API provided by the NoSQL engine, such as Azure Document DB, MongoDB, Cassandra, RavenDB, CouchDB, or Azure Storage Tables. +When you use NoSQL databases for your infrastructure data tier, you typically do not use an ORM like Entity Framework Core. Instead you use the API provided by the NoSQL engine, such as Azure Cosmos DB, MongoDB, Cassandra, RavenDB, CouchDB, or Azure Storage Tables. -However, when you use a NoSQL database, especially a document-oriented database like Azure Document DB, CouchDB, or RavenDB, the way you design your model with DDD aggregates is partially similar to how you can do it in EF Core, in regards to the identification of aggregate roots, child entity classes, and value object classes. But, ultimately, the database selection will impact in your design. +However, when you use a NoSQL database, especially a document-oriented database like Azure Cosmos DB, CouchDB, or RavenDB, the way you design your model with DDD aggregates is partially similar to how you can do it in EF Core, in regards to the identification of aggregate roots, child entity classes, and value object classes. But, ultimately, the database selection will impact in your design. When you use a document-oriented database, you implement an aggregate as a single document, serialized in JSON or another format. However, the use of the database is transparent from a domain model code point of view. When using a NoSQL database, you still are using entity classes and aggregate root classes, but with more flexibility than when using EF Core because the persistence is not relational. @@ -50,7 +50,7 @@ For instance, the following JSON code is a sample implementation of an order agg } ``` -When you use a C\# model to implement the aggregate to be used by something like the Azure Document DB SDK, the aggregate is similar to the C\# POCO classes used with EF Core. The difference is in the way to use them from the application and infrastructure layers, as in the following code: +When you use a C\# model to implement the aggregate to be used by something like the Azure Cosmos DB SDK, the aggregate is similar to the C\# POCO classes used with EF Core. The difference is in the way to use them from the application and infrastructure layers, as in the following code: ```csharp // C# EXAMPLE OF AN ORDER AGGREGATE BEING PERSISTED WITH DOCUMENTDB API @@ -103,7 +103,7 @@ orderAggregate.AddOrderItem(orderItem2); // *** End of Domain Model Code *** //... -// *** Infrastructure Code using Document DB Client API *** +// *** Infrastructure Code using Cosmos DB Client API *** Uri collectionUri = UriFactory.CreateDocumentCollectionUri(databaseName, collectionName); diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/microservice-application-design.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/microservice-application-design.md index cd56670b6b238..21c98d4fd022c 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/microservice-application-design.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/microservice-application-design.md @@ -53,11 +53,11 @@ What should the application deployment architecture be? The specifications for t In this approach, each service (container) implements a set of cohesive and narrowly related functions. For example, an application might consist of services such as the catalog service, ordering service, basket service, user profile service, etc. -Microservices communicate using protocols such as HTTP (REST), asynchronously whenever possible, especially when propagating updates. +Microservices communicate using protocols such as HTTP (REST), but also asynchronously (i.e. AMQP) whenever possible, especially when propagating updates with integration events. Microservices are developed and deployed as containers independently of one another. This means that a development team can be developing and deploying a certain microservice without impacting other subsystems. -Each microservice has its own database, allowing it to be fully decoupled from other microservices. When necessary, consistency between databases from different microservices is achieved using application-level events (through a logical event bus), as handled in Command and Query Responsibility Segregation (CQRS). Because of that, the business constraints must embrace eventual consistency between the multiple microservices and related databases. +Each microservice has its own database, allowing it to be fully decoupled from other microservices. When necessary, consistency between databases from different microservices is achieved using application-level integration events (through a logical event bus), as handled in Command and Query Responsibility Segregation (CQRS). Because of that, the business constraints must embrace eventual consistency between the multiple microservices and related databases. ### eShopOnContainers: A reference application for .NET Core and microservices deployed using containers @@ -67,7 +67,7 @@ The application consists of multiple subsystems, including several store UI fron ![](./media/image1.png) -**Figure 8-1**. The eShopOnContainers reference application, showing the direct client-to-microservice communication and the event bus +**Figure 8-1**. The eShopOnContainers reference application, showing a direct client-to-microservice communication and the event bus **Hosting environment**. In Figure 8-1, you see several containers deployed within a single Docker host. That would be the case when deploying to a single Docker host with the docker-compose up command. However, if you are using an orchestrator or container cluster, each container could be running in a different host (node), and any node could be running any number of containers, as we explained earlier in the architecture section. @@ -79,9 +79,12 @@ The application consists of multiple subsystems, including several store UI fron The application is deployed as a set of microservices in the form of containers. Client apps can communicate with those containers as well as communicate between microservices. As mentioned, this initial architecture is using a direct client-to-microservice communication architecture, which means that a client application can make requests to each of the microservices directly. Each microservice has a public endpoint like https://servicename.applicationname.companyname. If required, each microservice can use a different TCP port. In production, that URL would map to the microservices’ load balancer, which distributes requests across the available microservice instances. -As explained in the architecture section of this guide, the direct client-to-microservice communication architecture can have drawbacks when you are building a large and complex microservice-based application. But it can be good enough for a small application, such as in the eShopOnContainers application, where the goal is to focus on the microservices deployed as Docker containers. +**Important note on API Gateway vs. Direct Communication in eShopOnContainers.** As explained in the architecture section of this guide, the direct client-to-microservice communication architecture can have drawbacks when you are building a large and complex microservice-based application. But it can be good enough for a small application, such as in the eShopOnContainers application, where the goal is to focus on a simpler getting started Docker container-based application and we didn’t want to create a single monolithic API Gateway that can impact the microservices’ development autonomy. -However, if you are going to design a large microservice-based application with dozens of microservices, we strongly recommend that you consider the API Gateway pattern, as we explained in the architecture section. +But, if you are going to design a large microservice-based application with dozens of microservices, we strongly recommend that you consider the API Gateway pattern, as we explained in the architecture section. +This architectural decission could be refactored once thinking about production-ready applications and specially-made facades for remote clients. Having multiple custom API Gateways depending on the client apps' form-factor can provide benefits in regard to different data aggregation per client app plus you can hide internal microservices or APIs to the client apps and authorize in that single tier. + +However, and as mentioned, beware against large and monolithic API Gateways that might kill your microservices' development autonomy. ### Data sovereignty per microservice diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md index 610147e8817f4..78608c72e5ebf 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md @@ -98,7 +98,7 @@ As mentioned earlier in the architecture section, you can have several approache - Using the [Outbox pattern](http://gistlabs.com/2014/05/the-outbox/). This is a transactional table to store the integration events (extending the local transaction). -For this scenario, using the full Event Sourcing (ES) pattern is one of the best approaches, if not *the* best. However, in many application scenarios, you might not be able to implement a full ES system. ES means storing only domain events in your transactional database, instead of storing current state data. Storing only domain events can have great benefits, such as having the history of your system available and being able to determine the state of your system at any moment in the past. However, implementing a full ES system requires you to rearchitect most of your system and introduces many other complexities and requirements. For example, you would want to use a database specifically made for event sourcing, such as [Event Store](https://geteventstore.com/), or a document-oriented database such as Azure Document DB, MongoDB, Cassandra, CouchDB, or RavenDB. ES is a great approach for this problem, but not the easiest solution unless you are already familiar with event sourcing. +For this scenario, using the full Event Sourcing (ES) pattern is one of the best approaches, if not *the* best. However, in many application scenarios, you might not be able to implement a full ES system. ES means storing only domain events in your transactional database, instead of storing current state data. Storing only domain events can have great benefits, such as having the history of your system available and being able to determine the state of your system at any moment in the past. However, implementing a full ES system requires you to rearchitect most of your system and introduces many other complexities and requirements. For example, you would want to use a database specifically made for event sourcing, such as [Event Store](https://geteventstore.com/), or a document-oriented database such as Azure Cosmos DB, MongoDB, Cassandra, CouchDB, or RavenDB. ES is a great approach for this problem, but not the easiest solution unless you are already familiar with event sourcing. The option to use transaction log mining initially looks very transparent. However, to use this approach, the microservice has to be coupled to your RDBMS transaction log, such as the SQL Server transaction log. This is probably not desirable. Another drawback is that the low-level updates recorded in the transaction log might not be at the same level as your high-level integration events. If so, the process of reverse-engineering those transaction log operations can be difficult. diff --git a/docs/standard/microservices-architecture/net-core-net-framework-containers/container-framework-choice-factors.md b/docs/standard/microservices-architecture/net-core-net-framework-containers/container-framework-choice-factors.md index 654031a915bd9..fef6980f0c4a5 100644 --- a/docs/standard/microservices-architecture/net-core-net-framework-containers/container-framework-choice-factors.md +++ b/docs/standard/microservices-architecture/net-core-net-framework-containers/container-framework-choice-factors.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 07/13/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -43,17 +43,16 @@ There are several features of your application that affect your decision. You sh - Your .NET implementation choice is *.NET Framework* based on framework dependency. - Your container platform choice must be *Windows containers* because of the .NET Framework dependency. * Your application uses **SignalR services**. - - Your .NET implementation choice is *.NET Framework*, or *.NET Core (future release)*. - - Your container platform choice must be *Windows containers* because of the .NET Framework dependency. - - When **SignalR services** run on *.NET Core*, you can also choose *Linux containers*. + - Your .NET implementation choice is *.NET Framework*, or *.NET Core 2.1 (when released) or later*. + - Your container platform choice must be *Windows containers* if you chose the .NET Framework dependency. + - When **SignalR services** run on *.NET Core*, you can use *Linux containers or Windows Containers*. * Your application uses **WCF, WF, and other legacy frameworks**. - Your .NET implementation choice is *.NET Framework*, or *.NET Core (in the roadmap for a future release)*. - Your container platform choice must be *Windows containers* because of the .NET Framework dependency. - - When the dependency runs on *.NET Core*, you can also choose *Linux containers*. * Your application involves **Consumption of Azure services**. - Your .NET implementation choice is *.NET Framework*, or *.NET Core (eventually all Azure services will provide client SDKs for .NET Core)*. - - Your container platform choice must be *Windows containers* because of the .NET Framework dependency. - - When the dependency runs on *.NET Core*, you can also choose *Linux containers*. + - Your container platform choice must be *Windows containers* if you use .NET Framework client APIs. + - If you use client APIs available for *.NET Core*, you can also choose between *Linux containers and Windows containers*. >[!div class="step-by-step"] [Previous] (net-framework-container-scenarios.md) diff --git a/docs/standard/microservices-architecture/net-core-net-framework-containers/general-guidance.md b/docs/standard/microservices-architecture/net-core-net-framework-containers/general-guidance.md index f5522a35ba74c..bd1128ad7d435 100644 --- a/docs/standard/microservices-architecture/net-core-net-framework-containers/general-guidance.md +++ b/docs/standard/microservices-architecture/net-core-net-framework-containers/general-guidance.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -13,7 +13,7 @@ ms.topic: article This section provides a summary of when to choose .NET Core or .NET Framework. We provide more details about these choices in the sections that follow. -You should use .NET Core for your containerized Docker server application when: +You should use .NET Core, with Linux or Windows Containers, for your containerized Docker server application when: - You have cross-platform needs. For example, you want to use both Linux and Windows Containers. @@ -25,7 +25,7 @@ In short, when you create new containerized .NET applications, you should consid An additional benefit of using .NET Core is that you can run side by side .NET versions for applications within the same machine. This benefit is more important for servers or VMs that do not use containers, because containers isolate the versions of .NET that the app needs. (As long as they are compatible with the underlying OS.) -You should use .NET Framework for your containerized Docker server application when: +You should use .NET Framework, with Windows Containers, for your containerized Docker server application when: - Your application currently uses .NET Framework and has strong dependencies on Windows. @@ -33,7 +33,15 @@ You should use .NET Framework for your containerized Docker server application w - You need to use third-party .NET libraries or NuGet packages that are not available for .NET Core. -Using .NET Framework on Docker can improve your deployment experiences by minimizing deployment issues. This "lift and shift" scenario is important for "dockerizing" legacy applications (at least, those that are not based on microservices). +Using .NET Framework on Docker can improve your deployment experiences by minimizing deployment issues. This [*"lift and shift" scenario*](https://aka.ms/liftandshiftwithcontainersebook) is important for containerizing legacy applications that were originally developed with the traditional .NET Framework, like ASP.NET WebForms, MVC web apps or WCF (Windows Communication Foundation) services. + +### Additional resources + +- **eBook: Modernize existing .NET Framework applications with Azure and Windows Containers** + [*https://aka.ms/liftandshiftwithcontainersebook*](https://aka.ms/liftandshiftwithcontainersebook) + +- **Sample apps: Modernization of legacy ASP.NET web apps by using Windows Containers** + [*https://aka.ms/eshopmodernizing*](https://aka.ms/eshopmodernizing) >[!div class="step-by-step"] diff --git a/docs/standard/microservices-architecture/net-core-net-framework-containers/net-container-os-targets.md b/docs/standard/microservices-architecture/net-core-net-framework-containers/net-container-os-targets.md index 96008565897e0..632d04f1ffcc9 100644 --- a/docs/standard/microservices-architecture/net-core-net-framework-containers/net-container-os-targets.md +++ b/docs/standard/microservices-architecture/net-core-net-framework-containers/net-container-os-targets.md @@ -4,14 +4,18 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article --- # What OS to target with .NET containers -Given the diversity of operating systems supported by Docker and the differences between .NET Framework and .NET Core, you should target a specific OS and specific versions depending on the framework you are using. For instance, in Linux there are many distros available, but only few of them are supported in the official .NET Docker images (like Debian and Alpine). For Windows you can use Windows Server Core or Nano Server; these versions of Windows provide different characteristics (like IIS versus a self-hosted web server like Kestrel) that might be needed by .NET Framework or NET Core. +Given the diversity of operating systems supported by Docker and the differences between .NET Framework and .NET Core, you should target a specific OS and specific versions depending on the framework you are using. + +For Windows, you can use Windows Server Core or Windows Nano Server. These Windows versions provide different characteristics (IIS in Windows Server Core versus a self-hosted web server like Kestrel in Nano Server) that might be needed by .NET Framework or .NET Core, respectively. + +For Linux, multiple distros are available and supported in official .NET Docker images (like Debian). In Figure 3-1 you can see the possible OS version depending on the .NET framework used. @@ -23,11 +27,19 @@ You can also create your own Docker image in cases where you want to use a diffe When you add the image name to your Dockerfile file, you can select the operating system and version depending on the tag you use, as in the following examples: -- microsoft/dotnet**:1.1-runtime** - .NET Core 1.1 runtime-only on Linux +- microsoft/**dotnet:2.0.0-runtime-jessie** + + .NET Core 2.0 runtime-only on Linux + +- microsoft/**dotnet:2.0.0-runtime-nanoserver-1709** + + .NET Core 2.0 runtime-only on Windows Nano Server (Windows Server 2016 Fall Creators Update version 1709) + +- microsoft/**aspnetcore:2.0** + + .NET Core 2.0 multi-architecture: Supports Linux and Windows Nano Server depending on the Docker host. + The aspnetcore image has a few optimizations for ASP.NET Core. -- microsoft/dotnet:**1.1-runtime-nanoserver** - .NET Core 1.1 runtime-only on Windows Nano Server diff --git a/docs/standard/microservices-architecture/net-core-net-framework-containers/net-core-container-scenarios.md b/docs/standard/microservices-architecture/net-core-net-framework-containers/net-core-container-scenarios.md index 0462aab22cac2..503ca8c5b9d91 100644 --- a/docs/standard/microservices-architecture/net-core-net-framework-containers/net-core-container-scenarios.md +++ b/docs/standard/microservices-architecture/net-core-net-framework-containers/net-core-container-scenarios.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -23,7 +23,11 @@ Clearly, if your goal is to have an application (web application or service) tha .NET Core also supports macOS as a development platform. However, when you deploy containers to a Docker host, that host must (currently) be based on Linux or Windows. For example, in a development environment, you could use a Linux VM running on a Mac. -[Visual Studio](https://www.visualstudio.com/) provides an integrated development environment (IDE) for Windows. [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/) is an evolution of Xamarin Studio running in macOS, but as of the time of this writing, it still does not support Docker development. You can also use [Visual Studio Code](https://code.visualstudio.com/) (VS Code) on macOS, Linux, and Windows. VS Code fully supports .NET Core, including IntelliSense and debugging. Because VS Code is a lightweight editor, you can use it to develop containerized apps on the Mac in conjunction with the Docker CLI and the .NET Core CLI (dotnet cli). You can also target .NET Core with most third-party editors like Sublime, Emacs, vi, and the open-source OmniSharp project, which also provides IntelliSense support. In addition to the IDEs and editors, you can use the .NET Core command-line tools (dotnet CLI) for all supported platforms. +[Visual Studio](https://www.visualstudio.com/) provides an integrated development environment (IDE) for Windows and supports Docker development. + +[Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/) is an IDE, evolution of Xamarin Studio, running in macOS and supports Docker since mid-2017. + +You can also use [Visual Studio Code](https://code.visualstudio.com/) (VS Code) on macOS, Linux, and Windows. VS Code fully supports .NET Core, including IntelliSense and debugging. Because VS Code is a lightweight editor, you can use it to develop containerized apps on the Mac in conjunction with the Docker CLI and the .NET Core CLI (dotnet cli). You can also target .NET Core with most third-party editors like Sublime Text, Emacs, vi, and the open-source OmniSharp project, which provides IntelliSense support for .NET languages. In addition to the IDEs and editors, you can use the [.NET Core command-line interface (CLI) tools](https://docs.microsoft.com/dotnet/core/tools/?tabs=netcore2x) for all supported platforms. ## Using containers for new ("green-field") projects @@ -31,20 +35,14 @@ Containers are commonly used in conjunction with a microservices architecture, a ## Creating and deploying microservices on containers -You could use the full .NET framework for microservices-based applications (without containers) when using plain processes, because .NET Framework is already installed and shared across processes. However, if you are using containers, the image for .NET Framework (Windows Server Core plus the full .NET Framework within each image) is probably too heavy for a microservices-on-containers approach. +You could use the traditional .NET Framework for building microservices-based applications (without containers) by using plain processes. That way, because the .NET Framework is already installed and shared across processes, processes are light and fast to start. However, if you are using containers, the image for the traditional .NET Framework is also based on Windows Server Core and that makes it too heavy for a microservices-on-containers approach. -In contrast, .NET Core is the best candidate if you are embracing a microservices-oriented system that is based on containers, because .NET Core is lightweight. In addition, its related container images, either the Linux image or the Windows Nano image, are lean and small. +In contrast, .NET Core is the best candidate if you are embracing a microservices-oriented system that is based on containers, because .NET Core is lightweight. In addition, its related container images, either the Linux image or the Windows Nano image, are lean and small making containers light and fast to start. A microservice is meant to be as small as possible: to be light when spinning up, to have a small footprint, to have a small Bounded Context, to represent a small area of concerns, and to be able to start and stop fast. For those requirements, you will want to use small and fast-to-instantiate container images like the .NET Core container image. A microservices architecture also allows you to mix technologies across a service boundary. This enables a gradual migration to .NET Core for new microservices that work in conjunction with other microservices or with services developed with Node.js, Python, Java, GoLang, or other technologies. -There are many orchestrators you can use when targeting microservices and containers. For large and complex microservice systems being deployed as Linux containers, [Azure Container Service](https://azure.microsoft.com/services/container-service/) has multiple orchestrator offerings (Mesos DC/OS, Kubernetes, and Docker Swarm), which makes it a good choice. You can also use Azure Service Fabric for Linux, which supports Docker Linux containers. (At the time of this writing, this offering was still in [preview](https://docs.microsoft.com/azure/service-fabric/service-fabric-linux-overview). Check the [Azure Service Fabric](https://azure.microsoft.com/services/service-fabric/) for the latest status.) - -For large and complex microservice systems being deployed as Windows Containers, most orchestrators are currently in a less mature state. However, you currently can use Azure Service Fabric for Windows Containers, as well as Azure Container Service. Azure Service Fabric is well established for running mission-critical Windows applications. - -All these platforms support .NET Core and make them ideal for hosting your microservices. - ## Deploying high density in scalable systems When your container-based system needs the best possible density, granularity, and performance, .NET Core and ASP.NET Core are your best options. ASP.NET Core is up to ten times faster than ASP.NET in the full .NET Framework, and it leads other popular industry technologies for microservices, such as Java servlets, Go, and Node.js. diff --git a/docs/standard/microservices-architecture/net-core-net-framework-containers/net-framework-container-scenarios.md b/docs/standard/microservices-architecture/net-core-net-framework-containers/net-framework-container-scenarios.md index bb2005ea088c8..5fdd7af620889 100644 --- a/docs/standard/microservices-architecture/net-core-net-framework-containers/net-framework-container-scenarios.md +++ b/docs/standard/microservices-architecture/net-core-net-framework-containers/net-framework-container-scenarios.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -13,43 +13,37 @@ ms.topic: article While .NET Core offers significant benefits for new applications and application patterns, .NET Framework will continue to be a good choice for many existing scenarios. -## Migrating existing applications directly to a Docker container +## Migrating existing applications directly to a Windows Server container You might want to use Docker containers just to simplify deployment, even if you are not creating microservices. For example, perhaps you want to improve your DevOps workflow with Docker—containers can give you better isolated test environments and can also eliminate deployment issues caused by missing dependencies when you move to a production environment. In cases like these, even if you are deploying a monolithic application, it makes sense to use Docker and Windows Containers for your current .NET Framework applications. -In most cases, you will not need to migrate your existing applications to .NET Core; you can use Docker containers that include the full .NET Framework. However, a recommended approach is to use .NET Core as you extend an existing application, such as writing a new service in ASP.NET Core. +In most cases for this scenario, you will not need to migrate your existing applications to .NET Core; you can use Docker containers that include the full .NET Framework. However, a recommended approach is to use .NET Core as you extend an existing application, such as writing a new service in ASP.NET Core. ## Using third-party .NET libraries or NuGet packages not available for .NET Core -Third-party libraries are quickly embracing the [.NET Standard](https://docs.microsoft.com/dotnet/standard/net-standard), which enables code sharing across all .NET flavors, including .NET Core. With the .NET Standard version 2.0, this will be even easier, because the .NET Core API surface will become significantly bigger. Your .NET Core applications will be able to directly use existing .NET Framework libraries. +Third-party libraries are quickly embracing the [.NET Standard](https://docs.microsoft.com/dotnet/standard/net-standard), which enables code sharing across all .NET flavors, including .NET Core. With the .NET Standard Library 2.0 and beyond the API surface compatibility across different frameworks has become significantly larger and in .NET Core 2.0 applications can also directly reference existing .NET Framework libraries (see [compat shim](https://github.com/dotnet/standard/blob/master/docs/faq.md#how-does-net-standard-versioning-work)). -Be aware that whenever you run a library or process based on the full .NET Framework, because of its dependencies on Windows, the container image used for that application or service will need to be based on a Windows Container image. +However, even with that exceptional progression since .NET Standard 2.0 and .NET Core 2.0, there might be cases where certain NuGet packages need Windows to run and might not support .NET Core. If those packages are critical for your application, then you will need to use .NET Framework on Windows Containers. ## Using.NET technologies not available for .NET Core -Some .NET Framework technologies are not available in the current version of .NET Core (version 1.1 as of this writing). Some of them will be available in later .NET Core releases (.NET Core 2.0), but others do not apply to the new application patterns targeted by .NET Core and might never be available. +Some .NET Framework technologies are not available in the current version of .NET Core (version 2.0 as of this writing). Some of them will be available in later .NET Core releases (.NET Core 2.x), but others do not apply to the new application patterns targeted by .NET Core and might never be available. -The following list shows most of the technologies that are not available in .NET Core 1.1: +The following list shows most of the technologies that are not available in .NET Core 2.0: - ASP.NET Web Forms. This technology is only available on .NET Framework. Currently there are no plans to bring ASP.NET Web Forms to .NET Core. -- ASP.NET Web Pages. This technology is slated to be included in a future .NET Core release, as explained in the [.NET Core roadmap.](https://github.com/aspnet/Home/wiki/Roadmap) - -- ASP.NET SignalR. As of the .NET Core 1.1 release (November 2016), ASP.NET SignalR is not available for ASP.NET Core (neither client nor server). There are plans to include it in a future release, as explained in the .NET Core roadmap. A preview is available at the [Server-side](https://github.com/aspnet/SignalR-Server) and [Client Library](https://github.com/aspnet/SignalR-Client-Net) GitHub repositories. - -- WCF services. Even when a [WCF-Client library](https://github.com/dotnet/wcf) is available to consume WCF services from .NET Core (as of early 2017), the WCF server implementation is only available on .NET Framework. This scenario is being considered for future releases of .NET Core. +- WCF services. Even when a [WCF-Client library](https://github.com/dotnet/wcf) is available to consume WCF services from .NET Core. as of mid-2017, the WCF server implementation is only available on .NET Framework. This scenario might be considered for future releases of .NET Core. - Workflow-related services. Windows Workflow Foundation (WF), Workflow Services (WCF + WF in a single service), and WCF Data Services (formerly known as ADO.NET Data Services) are only available on .NET Framework. There are currently no plans to bring them to .NET Core. -- Language support. As of the release of Visual Studio 2017, Visual Basic and F\# do not have tooling support for .NET Core, but this support is planned for updated versions of Visual Studio. - In addition to the technologies listed in the official [.NET Core roadmap](https://github.com/aspnet/Home/wiki/Roadmap), other features might be ported to .NET Core. For a full list, look at the items tagged as [port-to-core](https://github.com/dotnet/corefx/issues?q=is%3Aopen+is%3Aissue+label%3Aport-to-core) on the CoreFX GitHub site. Note that this list does not represent a commitment from Microsoft to bring those components to .NET Core—the items simply capture requests from the community. If you care about any of the components listed above, consider participating in the discussions on GitHub so that your voice can be heard. And if you think something is missing, please [file a new issue in the CoreFX repository](https://github.com/dotnet/corefx/issues/new). ## Using a platform or API that does not support .NET Core Some Microsoft or third-party platforms do not support .NET Core. For example, some Azure services provide an SDK that is not yet available for consumption on .NET Core. This is temporary, because all Azure services will eventually use .NET Core. For example, the [Azure DocumentDB SDK for .NET Core](https://www.nuget.org/packages/Microsoft.Azure.DocumentDB.Core/1.2.1) was released as a preview on November 16, 2016, but it is now generally available (GA) as a stable version. -In the meantime, you can always use the equivalent REST API from the Azure service instead of the client SDK. +In the meantime, if any platform or service in Azure still doesn’t support .NET Core with its client API, you can use the equivalent REST API from the Azure service or the client SDK for full .NET Framework. ### Additional resources diff --git a/docs/standard/microservices-architecture/net-core-net-framework-containers/official-net-docker-images.md b/docs/standard/microservices-architecture/net-core-net-framework-containers/official-net-docker-images.md index 7b4ca3b149bda..20835f6adbb5d 100644 --- a/docs/standard/microservices-architecture/net-core-net-framework-containers/official-net-docker-images.md +++ b/docs/standard/microservices-architecture/net-core-net-framework-containers/official-net-docker-images.md @@ -4,7 +4,7 @@ description: .NET Microservices Architecture for Containerized .NET Applications keywords: Docker, Microservices, ASP.NET, Container author: CESARDELATORRE ms.author: wiwagn -ms.date: 05/26/2017 +ms.date: 10/18/2017 ms.prod: .net-core ms.technology: dotnet-docker ms.topic: article @@ -33,7 +33,7 @@ Why multiple images? When developing, building, and running containerized applic ### During development and build -During development, what is important is how fast you can iterate changes, and the ability to debug the changes. The size of the image is not as important as the ability to make changes to your code and see the changes quickly. Some of our tools, like [yo docker](https://github.com/Microsoft/generator-docker) for Visual Studio Code, use the development ASP.NET Core image (microsoft/aspnetcore-build) during development; you could even use that image as a build container. When building inside a Docker container, the important aspects are the elements that are needed in order to compile your app. This includes the compiler and any other .NET dependencies, plus web development dependencies like npm, Gulp, and Bower. +During development, what is important is how fast you can iterate changes, and the ability to debug the changes. The size of the image is not as important as the ability to make changes to your code and see the changes quickly. Some tools and "build-agent containers", use the development ASP.NET Core image (microsoft/aspnetcore-build) during development and build proces. When building inside a Docker container, the important aspects are the elements that are needed in order to compile your app. This includes the compiler and any other .NET dependencies, plus web development dependencies like npm, Gulp, and Bower. Why is this type of build image important? You do not deploy this image to production. Instead, it is an image you use to build the content you place into a production image. This image would be used in your continuous integration (CI) environment or build environment. For instance, rather than manually installing all your application dependencies directly on a build agent host (a VM, for example), the build agent would instantiate a .NET Core build image with all the dependencies required to build the application. Your build agent only needs to know how to run this Docker image. This simplifies your CI environment and makes it much more predictable. @@ -45,22 +45,16 @@ In this optimized image you put only the binaries and other content needed to ru Although there are multiple versions of the .NET Core and ASP.NET Core images, they all share one or more layers, including the base layer. Therefore, the amount of disk space needed to store an image is small; it consists only of the delta between your custom image and its base image. The result is that it is quick to pull the image from your registry. -When you explore the .NET image repositories at Docker Hub, you will find multiple image versions classified or marked with tags. These help decide which one to use, depending on the version you need, like those in the following list:: +When you explore the .NET image repositories at Docker Hub, you will find multiple image versions classified or marked with tags. These tags help to decide which one to use, depending on the version you need, like those in the following table: -- microsoft/aspnetcore:**1.1** - ASP.NET Core, with runtime only and ASP.NET Core optimizations, on Linux +- microsoft/**aspnetcore:2.0** -- microsoft/aspnetcore-build:**1.0-1.1** - ASP.NET Core, with SDKs included, on Linux + ASP.NET Core, with runtime only and ASP.NET Core optimizations, on Linux and Windows (multi-arch) -- microsoft/dotnet:**1.1-runtime** - .NET Core 1.1, with runtime only, on Linux +- microsoft/**aspnetcore-build:2.0** -- microsoft/dotnet:**1.1-runtime-deps** - .NET Core 1.1, with runtime and framework dependencies for self-contained apps, on Linux + ASP.NET Core, with SDKs included, on Linux and Windows (multi-arch) -- microsoft/dotnet**:1.1.0-sdk-msbuild** - .NET Core 1.1 with SDKs included, on Linux >[!div class="step-by-step"] [Previous] (net-container-os-targets.md) diff --git a/docs/standard/microservices-architecture/toc.md b/docs/standard/microservices-architecture/toc.md index 7c85da195a85f..f6cf7627e3bb5 100644 --- a/docs/standard/microservices-architecture/toc.md +++ b/docs/standard/microservices-architecture/toc.md @@ -19,7 +19,8 @@ ### [Logical architecture versus physical architecture](architect-microservice-container-applications/logical-versus-physical-architecture.md) ### [Challenges and solutions for distributed data management](architect-microservice-container-applications/distributed-data-management.md) ### [Identifying domain-model boundaries for each microservice](architect-microservice-container-applications/identify-microservice-domain-model-boundaries.md) -### [Communication between microservices](architect-microservice-container-applications/communication-between-microservices.md) +### [Direct client-to-microservice communication versus the API Gateway pattern](architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern.md) +### [Communication between microservices](architect-microservice-container-applications/communication-in-microservice-architecture.md) ### [Asynchronous message-based communication](architect-microservice-container-applications/asynchronous-message-based-communication.md) ### [Creating, evolving, and versioning microservice APIs and contracts](architect-microservice-container-applications/maintain-microservice-apis.md) ### [Microservices addressability and the service registry](architect-microservice-container-applications/microservices-addressability-service-registry.md) diff --git a/docs/toc.md b/docs/toc.md index 4d0018f470a8c..1ec307bc3bf2f 100644 --- a/docs/toc.md +++ b/docs/toc.md @@ -100,7 +100,7 @@ ### [F# unit testing with dotnet test and xUnit]() ### [F# unit testing with dotnet test and MSTest]() ### [Running selective unit tests](core/testing/selective-unit-tests.md) -### [Live unit testing .NET Core projects with Visual Studio]() +### [Live unit testing .NET Core projects with Visual Studio](/visualstudio/test/live-unit-testing-start) ## [Versioning](core/versions/index.md) ### [.NET Core Support](core/versions/lts-current.md) diff --git a/includes/migration-guide/retargeting/introduction.md b/includes/migration-guide/retargeting/introduction.md index 57fe62ac1cac1..e3dc350cf9331 100644 --- a/includes/migration-guide/retargeting/introduction.md +++ b/includes/migration-guide/retargeting/introduction.md @@ -5,7 +5,7 @@ Retargeting changes affect apps that are recompiled to target a different .NET F * Changes in the runtime environment. These affect only apps that specifically target the retargeted .NET Framework. Apps that target previous versions of the .NET Framework behave as they did when running under those versions. -In the topics that describe etargeting changes, we have classified individual items by their expected impact, as follows: +In the topics that describe retargeting changes, we have classified individual items by their expected impact, as follows: **Major** This is a significant change that affects a large number of apps or that requires substantial modification of code. diff --git a/includes/migration-guide/retargeting/winforms/accessibility-improvements-windows-forms-controls.md b/includes/migration-guide/retargeting/winforms/accessibility-improvements-windows-forms-controls.md index 26e3288869401..7cc437cae30d6 100644 --- a/includes/migration-guide/retargeting/winforms/accessibility-improvements-windows-forms-controls.md +++ b/includes/migration-guide/retargeting/winforms/accessibility-improvements-windows-forms-controls.md @@ -3,7 +3,7 @@ | | | |---|---| |Details|Windows Forms Framework is improving how it works with accessibility technologies to better support Windows Forms customers. These include the following changes:
  • Changes to improve display during High Contrast mode.
  • Changes to improve the property browser experience. Property browser improvements include:
  • Better keyboard navigation through the various drop-down selection windows.
  • Reduced unnecessary tab stops.
  • Better reporting of control types.
  • Improved narrator behavior.
  • Changes to implement missing UI accessibility patterns in controls.
| -|Suggestion|**How to opt in or out of these changes** In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways:
  • It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later.
  • It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) to the `` section of the *app.config* file and setting it to false, as the following example shows.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
</startup>
<runtime>
| +|Suggestion|**How to opt in or out of these changes** In order for the application to benefit from these changes, it must run on the .NET Framework 4.7.1 or later. The application can benefit from these changes in either of the following ways:
  • It is recompiled to target the .NET Framework 4.7.1. These accessibility changes are enabled by default on Windows Forms applications that target the .NET Framework 4.7.1 or later.
  • It opts out of the legacy accessibility behaviors by adding the following [AppContext Switch](~/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md) to the `` section of the *app.config* file and setting it to `false`, as the following example shows:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
</startup>
<runtime>
| |Scope|Major| |Version|4.7.1| |Type|Retargeting| diff --git a/includes/migration-guide/runtime/security/rsacng-dsacng-are-once-again-usable-partial-trust-scenarios.md b/includes/migration-guide/runtime/security/rsacng-dsacng-are-once-again-usable-partial-trust-scenarios.md index f1896424bf794..6066eeff6a358 100644 --- a/includes/migration-guide/runtime/security/rsacng-dsacng-are-once-again-usable-partial-trust-scenarios.md +++ b/includes/migration-guide/runtime/security/rsacng-dsacng-are-once-again-usable-partial-trust-scenarios.md @@ -2,7 +2,7 @@ | | | |---|---| -|Details|CngLightup (used in several higher-level crypto apis, such as T:System.Security.Cryptography.Xml.EncryptedXml) and T:System.Security.Cryptography.RSACng in some cases rely on full trust. These include P/Invokes without asserting F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode permissions, and code paths where T:System.Security.Cryptography.CngKey has permission demands for F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode. Starting with the .NET Framework 4.6.2, CngLightup was used to switch to T:System.Security.Cryptography.RSACng wherever possible. As a result, partial trust apps that successfully used T:System.Security.Cryptography.Xml.EncryptedXml began to fail and throw T:System.Security.SecurityException exceptions.This change adds the required asserts so that all functions using CngLightup have the required permissions.| +|Details|CngLightup (used in several higher-level crypto apis, such as ) and in some cases rely on full trust. These include P/Invokes without asserting permissions, and code paths where has permission demands for . Starting with the .NET Framework 4.6.2, CngLightup was used to switch to wherever possible. As a result, partial trust apps that successfully used began to fail and throw exceptions.This change adds the required asserts so that all functions using CngLightup have the required permissions.| |Suggestion|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.| |Scope|Edge| |Version|4.6.2| diff --git a/samples/snippets/csharp/VS_Snippets_CLR_System/system.Random/cs/Random2.cs b/samples/snippets/csharp/VS_Snippets_CLR_System/system.Random/cs/Random2.cs index 2bfc60597032e..247893f1cacc5 100644 --- a/samples/snippets/csharp/VS_Snippets_CLR_System/system.Random/cs/Random2.cs +++ b/samples/snippets/csharp/VS_Snippets_CLR_System/system.Random/cs/Random2.cs @@ -8,7 +8,7 @@ public static void Main() // Instantiate random number generator using system-supplied value as seed. Random rand = new Random(); // Generate and display 5 random byte (integer) values. - byte[] bytes = new byte[4]; + byte[] bytes = new byte[5]; rand.NextBytes(bytes); Console.WriteLine("Five random byte values:"); foreach (byte byteValue in bytes) diff --git a/samples/snippets/csharp/VS_Snippets_CLR_System/system.guid.newguid/cs/ng.cs b/samples/snippets/csharp/VS_Snippets_CLR_System/system.guid.newguid/cs/ng.cs index d047a3a55f895..c9e4ccd0ca5c5 100644 --- a/samples/snippets/csharp/VS_Snippets_CLR_System/system.guid.newguid/cs/ng.cs +++ b/samples/snippets/csharp/VS_Snippets_CLR_System/system.guid.newguid/cs/ng.cs @@ -3,15 +3,15 @@ using System; -class Sample +class Sample { - public static void Main() + public static void Main() { - Guid g; -// Create and display the value of two GUIDs. - g = Guid.NewGuid(); - Console.WriteLine(g); - Console.WriteLine(Guid.NewGuid()); + Guid g; + // Create and display the value of two GUIDs. + g = Guid.NewGuid(); + Console.WriteLine(g); + Console.WriteLine(Guid.NewGuid()); } } diff --git a/samples/snippets/csharp/VS_Snippets_Winforms/System.Drawing.Icon.ExtractAssociatedIconEx/CS/Form1.cs b/samples/snippets/csharp/VS_Snippets_Winforms/System.Drawing.Icon.ExtractAssociatedIconEx/CS/Form1.cs index 9b2a50ddcbcff..3e4e58899bf68 100644 --- a/samples/snippets/csharp/VS_Snippets_Winforms/System.Drawing.Icon.ExtractAssociatedIconEx/CS/Form1.cs +++ b/samples/snippets/csharp/VS_Snippets_Winforms/System.Drawing.Icon.ExtractAssociatedIconEx/CS/Form1.cs @@ -47,8 +47,7 @@ public void ExtractAssociatedIconEx() Icon iconForFile = SystemIcons.WinLogo; item = new ListViewItem(file.Name, 1); - iconForFile = Icon.ExtractAssociatedIcon(file.FullName); - + // Check to see if the image collection contains an image // for this extension, using the extension as a key. if (!imageList1.Images.ContainsKey(file.Extension)) @@ -75,4 +74,4 @@ static void Main() Application.Run(new Form1()); } } -} \ No newline at end of file +} diff --git a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.guid.newguid/vb/ng.vb b/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.guid.newguid/vb/ng.vb index c5d232402656c..bb174c05cd855 100644 --- a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.guid.newguid/vb/ng.vb +++ b/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.guid.newguid/vb/ng.vb @@ -3,9 +3,9 @@ Imports System Class Sample - Public Shared Sub Main() + Public Shared Sub Main() Dim g As Guid -' Create and display the value of two GUIDs. + ' Create and display the value of two GUIDs. g = Guid.NewGuid() Console.WriteLine(g) Console.WriteLine(Guid.NewGuid()) diff --git a/xml/Microsoft.VisualBasic/Interaction.xml b/xml/Microsoft.VisualBasic/Interaction.xml index aada969ce3fb2..d6dab3aee0bd0 100644 --- a/xml/Microsoft.VisualBasic/Interaction.xml +++ b/xml/Microsoft.VisualBasic/Interaction.xml @@ -26,7 +26,7 @@ ## Examples - The following example uses the `Shell` function to run an application specified by the user. Specifying as the second argument opens the application in normal size and gives it the focus. + The following example uses the `Shell` function to run an application specified by the user. Specifying as the second argument opens the application in normal size and gives it the focus. ``` Dim procID As Integer @@ -1200,7 +1200,7 @@ ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000) ## Examples - The following example uses the `Shell` function to run an application specified by the user. Specifying as the second argument opens the application in normal size and gives it the focus. + The following example uses the `Shell` function to run an application specified by the user. Specifying as the second argument opens the application in normal size and gives it the focus. [!code-vb[VbVbalrFunctions#47](~/samples/snippets/visualbasic/VS_Snippets_VBCSharp/VbVbalrFunctions/VB/Class1.vb#47)] diff --git a/xml/Microsoft.Win32/Registry.xml b/xml/Microsoft.Win32/Registry.xml index 0ce324a7d4622..61a19e42fac40 100644 --- a/xml/Microsoft.Win32/Registry.xml +++ b/xml/Microsoft.Win32/Registry.xml @@ -291,7 +291,7 @@ Valid root names are HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, HKEY_USERS, HKEY_PERFORMANCE_DATA, HKEY_CURRENT_CONFIG, and HKEY_DYN_DATA. For example, in Visual Basic the string "HKEY_CURRENT_USER\MyTestKey" accesses key/value pairs for the subkey "MyTestKey" in the HKEY_CURRENT_USER root. - When the method retrieves expandable string values (), it expands environment strings using data from the local environment. If a value containing expandable references to environment variables has been stored as a string (), rather than as an expandable string (), does not expand it. You can expand such a string after it has been retrieved by calling the method. + When the method retrieves expandable string values (), it expands environment strings using data from the local environment. If a value containing expandable references to environment variables has been stored as a string (), rather than as an expandable string (), does not expand it. You can expand such a string after it has been retrieved by calling the method. > [!NOTE] > The recommended way to retrieve data from HKEY_PERFORMANCE_DATA is to use the class rather than the method. @@ -492,11 +492,11 @@ > [!NOTE] > The method opens a registry key, sets the value, and closes the key each time it is called. If you need to modify a large number of values, the method might provide better performance. The class also provides methods that allow you to add an access control list (ACL) to a registry key, to test the data type of a value before retrieving it, and to delete keys. - This overload of stores 64-bit integers as strings (). To store 64-bit numbers as values, use the method overload. + This overload of stores 64-bit integers as strings (). To store 64-bit numbers as values, use the method overload. - This overload of stores all string values as objects, even if they contain expandable references to environment variables. To save string values as expandable strings (), use the method overload. + This overload of stores all string values as objects, even if they contain expandable references to environment variables. To save string values as expandable strings (), use the method overload. - This overload is equivalent to calling the method overload with . + This overload is equivalent to calling the method overload with . > [!NOTE] > On Windows 98 and Windows Millennium Edition (Windows Me), the registry is not Unicode, and not all Unicode characters are valid for all code pages. A Unicode character that is invalid for the current code page is replaced by the best available match. No exception is thrown. @@ -575,10 +575,10 @@ > [!NOTE] > The method opens a registry key, sets the value, and closes the key each time it is called. If you need to modify a large number of values, the method might provide better performance. The class also provides methods that allow you to add an access control list (ACL) to a registry key, to test the data type of a value before retrieving it, and to delete keys. - If the type of the specified `value` does not match the specified `valueKind`, and the data cannot be converted, is thrown. For example, you can store a as a , but only if its value is less than the maximum value of a . You cannot store a single string value as a . + If the type of the specified `value` does not match the specified `valueKind`, and the data cannot be converted, is thrown. For example, you can store a as a , but only if its value is less than the maximum value of a . You cannot store a single string value as a . > [!NOTE] -> If boxed values are passed for or , the conversion is done using the invariant culture. +> If boxed values are passed for or , the conversion is done using the invariant culture. > [!NOTE] > On Windows 98 and Windows Millennium Edition (Windows Me), the registry is not Unicode, and not all Unicode characters are valid for all code pages. A Unicode character that is invalid for the current code page is replaced by the best available match. No exception is thrown. diff --git a/xml/Microsoft.Win32/RegistryKey.xml b/xml/Microsoft.Win32/RegistryKey.xml index 9b627c5745667..4dfca3273c1f1 100644 --- a/xml/Microsoft.Win32/RegistryKey.xml +++ b/xml/Microsoft.Win32/RegistryKey.xml @@ -368,9 +368,9 @@ ## Remarks The method creates a registry key that has the access control specified by the `registrySecurity` parameter. The object that is returned represents the registry key, but that object is not restricted by the access control specified in the `registrySecurity` parameter. - If `permissionCheck` is , the key is opened for read/write access. If `permissionCheck` is , the key is opened for read access. + If `permissionCheck` is , the key is opened for read/write access. If `permissionCheck` is , the key is opened for read access. - For backward compatibility, the key is opened for reading and writing if `permissionCheck` is and the parent key also has . If the parent key has any other setting, read/write status is controlled by the parent key's setting. + For backward compatibility, the key is opened for reading and writing if `permissionCheck` is and the parent key also has . If the parent key has any other setting, read/write status is controlled by the parent key's setting. In order to perform this action, the user must have permissions at this level and below in the registry hierarchy. @@ -1002,9 +1002,9 @@ method overload with the bitwise combination of the following flags: , , and . You can use that overload to search for other permissions. + This method overload is equivalent to calling the method overload with the bitwise combination of the following flags: , , and . You can use that overload to search for other permissions. - The user must have rights to call this method. + The user must have rights to call this method. ]]> @@ -1040,9 +1040,9 @@ , , and . Alternatively, you can use the method overload, which specifies exactly that combination of values. + To request the access permissions currently granted to users, specify the bitwise combination of the following flags: , , and . Alternatively, you can use the method overload, which specifies exactly that combination of values. - The user must have rights to call this method. + The user must have rights to call this method. ]]> @@ -1130,10 +1130,10 @@ > [!NOTE] > A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve this unnamed value, specify either `null` or the empty string ("") for `name`. - When the method retrieves expandable string values (), it expands environment strings using data from the local environment. To retrieve expandable string values from the registry on a remote computer, use the method overload to specify that you do not want environment strings expanded. + When the method retrieves expandable string values (), it expands environment strings using data from the local environment. To retrieve expandable string values from the registry on a remote computer, use the method overload to specify that you do not want environment strings expanded. > [!NOTE] -> If a value containing expandable references to environment variables has been stored as a string (), rather than as an expandable string (), does not expand it. You can expand such a string after it has been retrieved by calling the method. +> If a value containing expandable references to environment variables has been stored as a string (), rather than as an expandable string (), does not expand it. You can expand such a string after it has been retrieved by calling the method. > [!NOTE] > The recommended way to retrieve data from the key is to use the class rather than the method. @@ -1195,10 +1195,10 @@ > [!NOTE] > A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve this unnamed value, specify either `null` or the empty string ("") for `name`. - When the method retrieves expandable string values (), it expands environment strings using data from the local environment. To retrieve expandable string values from the registry on a remote computer, use the overload to specify that you do not want environment strings expanded. + When the method retrieves expandable string values (), it expands environment strings using data from the local environment. To retrieve expandable string values from the registry on a remote computer, use the overload to specify that you do not want environment strings expanded. > [!NOTE] -> If a value containing expandable references to environment variables has been stored as a string (), rather than as an expandable string (), the method does not expand it. You can expand such a string after it has been retrieved by calling the method. +> If a value containing expandable references to environment variables has been stored as a string (), rather than as an expandable string (), the method does not expand it. You can expand such a string after it has been retrieved by calling the method. > [!NOTE] > The recommended way to retrieve data from the key is to use the class rather than the method. @@ -1262,7 +1262,7 @@ when retrieving a registry value of type to retrieve the string without expanding embedded environment variables. + Use this overload to specify special processing of the retrieved value. For example, you can specify when retrieving a registry value of type to retrieve the string without expanding embedded environment variables. Use the `defaultValue` parameter to specify the value to return if `name` does not exist. @@ -1548,7 +1548,7 @@ . The requested key must be a root key on the remote machine, and is identified by the appropriate value. + The local machine registry is opened if `machineName` is . The requested key must be a root key on the remote machine, and is identified by the appropriate value. In order for a key to be opened remotely, both the server and client machines must be running the remote registry service, and have remote administration enabled. @@ -1610,7 +1610,7 @@ . The requested key must be a root key on the remote machine, and is identified by the appropriate value. + The local machine registry is opened if `machineName` is . The requested key must be a root key on the remote machine, and is identified by the appropriate value. In order for a key to be opened remotely, both the server and client machines must be running the remote registry service, and have remote administration enabled. @@ -1718,7 +1718,7 @@ ## Remarks Rather than throwing an exception, this method returns `null` if the requested key does not exist. - If `permissionCheck` is , the key is opened for reading and writing; if `permissionCheck` is or , the key is opened for reading unless the parent key was opened with . + If `permissionCheck` is , the key is opened for reading and writing; if `permissionCheck` is or , the key is opened for reading unless the parent key was opened with . In order to use the method, you must have an instance of the class. To get an instance of , use one of the static members of the class. @@ -1884,9 +1884,9 @@ ## Remarks Rather than throwing an exception, this method returns `null` if the requested key does not exist. - If `permissionCheck` is , the key is opened for reading and writing; if `permissionCheck` is or , the key is opened for reading unless the parent key was opened with . + If `permissionCheck` is , the key is opened for reading and writing; if `permissionCheck` is or , the key is opened for reading unless the parent key was opened with . - The access specified for `permissionCheck` takes precedence over the access specified for `rights`. For example, if you specify for `permissionCheck` and for `rights`, an attempt to write to the subkey throws an exception. + The access specified for `permissionCheck` takes precedence over the access specified for `rights`. For example, if you specify for `permissionCheck` and for `rights`, an attempt to write to the subkey throws an exception. In order to use the method, you must have an instance of the class. To get an instance of , use one of the static members of the class. @@ -1996,9 +1996,9 @@ If the specified `name` does not exist in the key, it is created and the associated value is set to `value`. - This overload of stores 64-bit integers as strings (). To store 64-bit numbers as values, use the overload that specifies . + This overload of stores 64-bit integers as strings (). To store 64-bit numbers as values, use the overload that specifies . - This overload of stores all string values as , even if they contain expandable references to environment variables. To save string values as expandable strings (), use the overload that specifies . + This overload of stores all string values as , even if they contain expandable references to environment variables. To save string values as expandable strings (), use the overload that specifies . Numeric types other than 32-bit integers are stored as strings by this method overload. Enumeration elements are stored as strings containing the element names. @@ -2084,10 +2084,10 @@ > [!NOTE] > Specifying the registry data type is the same as using the overload. - If the type of the specified `value` does not match the specified `valueKind`, and the data cannot be converted, is thrown. For example, you can store a as a , but only if its value is less than the maximum value of a . You cannot store a single string value as a . + If the type of the specified `value` does not match the specified `valueKind`, and the data cannot be converted, is thrown. For example, you can store a as a , but only if its value is less than the maximum value of a . You cannot store a single string value as a . > [!NOTE] -> If boxed values are passed for or , the conversion is done using the invariant culture. +> If boxed values are passed for or , the conversion is done using the invariant culture. > [!CAUTION] > Do not expose objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values. diff --git a/xml/Microsoft.Win32/SystemEvents.xml b/xml/Microsoft.Win32/SystemEvents.xml index 6c81cdaa4d7b8..e371dd488b6f0 100644 --- a/xml/Microsoft.Win32/SystemEvents.xml +++ b/xml/Microsoft.Win32/SystemEvents.xml @@ -49,7 +49,7 @@ The service in this example starts a thread that runs an instance of `HiddenForm`. The events are hooked up and handled in the form. The events must be hooked up in the load event of the form, to make sure that the form is completely loaded first; otherwise the events will not be raised. > [!NOTE] -> The example provides all the necessary code, including the form initialization code typically generated by [!INCLUDE[vsprvs](~/includes/vsprvs-md.md)] designers. If you are developing your service in [!INCLUDE[vsprvs](~/includes/vsprvs-md.md)], you can omit the second partial class and use the **Properties** window to set the height and width of the hidden form to zero, the border style to , and the window state to . +> The example provides all the necessary code, including the form initialization code typically generated by [!INCLUDE[vsprvs](~/includes/vsprvs-md.md)] designers. If you are developing your service in [!INCLUDE[vsprvs](~/includes/vsprvs-md.md)], you can omit the second partial class and use the **Properties** window to set the height and width of the hidden form to zero, the border style to , and the window state to . To run the example: diff --git a/xml/System.AddIn.Contract.Automation/IRemoteMethodInfoContract.xml b/xml/System.AddIn.Contract.Automation/IRemoteMethodInfoContract.xml index d4ea8594f315e..05c215b265c81 100644 --- a/xml/System.AddIn.Contract.Automation/IRemoteMethodInfoContract.xml +++ b/xml/System.AddIn.Contract.Automation/IRemoteMethodInfoContract.xml @@ -80,7 +80,7 @@ returns a default in which the property is set to the value and the property is set to the value . + If the invoked method does not have a return value (for example, the method is a constructor), returns a default in which the property is set to the value and the property is set to the value . ]]> diff --git a/xml/System.AddIn.Contract.Automation/RemoteTypeData.xml b/xml/System.AddIn.Contract.Automation/RemoteTypeData.xml index e3838b4c6356a..b96c061962469 100644 --- a/xml/System.AddIn.Contract.Automation/RemoteTypeData.xml +++ b/xml/System.AddIn.Contract.Automation/RemoteTypeData.xml @@ -259,7 +259,7 @@ , the value of this field is . + If the remote type is an , the value of this field is . ]]> diff --git a/xml/System.AddIn.Contract/RemoteArgument.xml b/xml/System.AddIn.Contract/RemoteArgument.xml index ce2ebe4641e44..0836c4e06b2f1 100644 --- a/xml/System.AddIn.Contract/RemoteArgument.xml +++ b/xml/System.AddIn.Contract/RemoteArgument.xml @@ -32,7 +32,7 @@ provides constructors for each of the types that it supports. You can also use the methods to create objects. The methods automatically call the appropriate constructor for your argument type. - If you create a using the default parameterless constructor, the property is set to the value and the property is set to the value . + If you create a using the default parameterless constructor, the property is set to the value and the property is set to the value . ]]> @@ -57,7 +57,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -110,7 +110,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -135,7 +135,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -160,7 +160,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -185,7 +185,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -210,7 +210,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -235,7 +235,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -260,7 +260,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -285,7 +285,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -310,7 +310,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -335,7 +335,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -365,7 +365,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -390,7 +390,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -415,7 +415,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -445,7 +445,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -475,7 +475,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -505,7 +505,7 @@ property to , the property to , and the property to `false`. + This constructor sets the property to , the property to , and the property to `false`. ]]> @@ -533,7 +533,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -631,7 +631,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -659,7 +659,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -687,7 +687,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -715,7 +715,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -743,7 +743,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -771,7 +771,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -799,7 +799,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -827,7 +827,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -855,7 +855,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -883,7 +883,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -916,7 +916,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -944,7 +944,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -972,7 +972,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -1005,7 +1005,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -1038,7 +1038,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> @@ -1071,7 +1071,7 @@ property to , the property to , and the property to the value of the `isByRef` parameter. + This constructor sets the property to , the property to , and the property to the value of the `isByRef` parameter. ]]> diff --git a/xml/System.AddIn.Hosting/AddInProcess.xml b/xml/System.AddIn.Hosting/AddInProcess.xml index 20042a8de76ce..a542bf11cd14e 100644 --- a/xml/System.AddIn.Hosting/AddInProcess.xml +++ b/xml/System.AddIn.Hosting/AddInProcess.xml @@ -53,7 +53,7 @@ constructor with the flag, to specify that the process that runs the add-in will have the same bits-per-word as the host process. + This constructor has the same effect as using the constructor with the flag, to specify that the process that runs the add-in will have the same bits-per-word as the host process. ]]> diff --git a/xml/System.AddIn.Hosting/AddInToken.xml b/xml/System.AddIn.Hosting/AddInToken.xml index f354236051c82..f9661c5893d91 100644 --- a/xml/System.AddIn.Hosting/AddInToken.xml +++ b/xml/System.AddIn.Hosting/AddInToken.xml @@ -524,7 +524,7 @@ Use the enumerator returned by this method to iterate through the qualification data items of the pipeline segments associated with the current token. Each item of qualification data is a structure that identifies the pipeline segment and contains a name/value pair from a attribute applied to that segment. > [!NOTE] -> The add-in model does not use qualification data that is applied to the host view of the add-in. As a result, when you enumerate qualification data you will not find any items whose property is . +> The add-in model does not use qualification data that is applied to the host view of the add-in. As a result, when you enumerate qualification data you will not find any items whose property is . Alternatively, you can use the property to get a nested set of dictionaries that contain the qualification data of the pipeline segments. @@ -651,7 +651,7 @@ The keys and values of these inner dictionaries are the names and values specified in the attributes for the segments. If no qualification data has been applied to a segment, its dictionary is empty. > [!NOTE] -> The add-in model does not use qualification data that is applied to the host view of the add-in. As a result, the dictionary for is always empty. +> The add-in model does not use qualification data that is applied to the host view of the add-in. As a result, the dictionary for is always empty. Alternatively, you can obtain qualification data by enumerating an as if it were a collection of structures, using a `foreach` statement (`For Each` in Visual Basic, `for each` in Visual C++). See the example provided for the structure. @@ -692,7 +692,7 @@ Use the enumerator returned by this method to iterate through the qualification data items of the pipeline segments associated with the current token. Each item of qualification data is a structure that identifies the pipeline segment and contains the name/value pair from a attribute applied to that segment. > [!NOTE] -> The add-in model does not use qualification data that is applied to the host view of the add-in. As a result, when you enumerate qualification data you will not find any items whose property is . +> The add-in model does not use qualification data that is applied to the host view of the add-in. As a result, when you enumerate qualification data you will not find any items whose property is . Alternatively, you can use the property to get a nested set of dictionaries containing the qualification data of the pipeline segments. diff --git a/xml/System.CodeDom/CodeTryCatchFinallyStatement.xml b/xml/System.CodeDom/CodeTryCatchFinallyStatement.xml index e40bc5962a9f0..b13b3c3119b09 100644 --- a/xml/System.CodeDom/CodeTryCatchFinallyStatement.xml +++ b/xml/System.CodeDom/CodeTryCatchFinallyStatement.xml @@ -33,7 +33,7 @@ The property contains the statements to execute within a `try` block. The property contains the `catch` clauses to handle caught exceptions. The property contains the statements to execute within a `finally` block. > [!NOTE] -> Not all languages support `try`/`catch` blocks. Call the method with the flag to determine whether a code generator supports `try`/`catch` blocks. +> Not all languages support `try`/`catch` blocks. Call the method with the flag to determine whether a code generator supports `try`/`catch` blocks. diff --git a/xml/System.Collections/IStructuralComparable.xml b/xml/System.Collections/IStructuralComparable.xml index 5386f7e255f96..4d9d942c5f133 100644 --- a/xml/System.Collections/IStructuralComparable.xml +++ b/xml/System.Collections/IStructuralComparable.xml @@ -19,11 +19,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - Supports the structural comparison of collection objects. @@ -80,11 +75,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Int32 diff --git a/xml/System.Collections/IStructuralEquatable.xml b/xml/System.Collections/IStructuralEquatable.xml index 7af7b0f91e353..0a0de35e2c268 100644 --- a/xml/System.Collections/IStructuralEquatable.xml +++ b/xml/System.Collections/IStructuralEquatable.xml @@ -19,11 +19,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - Defines methods to support the comparison of objects for structural equality. @@ -79,11 +74,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -142,11 +132,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Int32 diff --git a/xml/System.ComponentModel.Design.Serialization/CollectionCodeDomSerializer.xml b/xml/System.ComponentModel.Design.Serialization/CollectionCodeDomSerializer.xml index e91d3e759a547..90e08aeecf41b 100644 --- a/xml/System.ComponentModel.Design.Serialization/CollectionCodeDomSerializer.xml +++ b/xml/System.ComponentModel.Design.Serialization/CollectionCodeDomSerializer.xml @@ -104,7 +104,7 @@ 2. If the collection is an , the method will cast the collection to an and add through that interface. - 1. If the collection has no *Add* method, but is marked with , will enumerate the collection and serialize each element. + 1. If the collection has no *Add* method, but is marked with , will enumerate the collection and serialize each element. ]]> diff --git a/xml/System.ComponentModel.Design/IRootDesigner.xml b/xml/System.ComponentModel.Design/IRootDesigner.xml index c511e1fac53b1..6900f2fe00e66 100644 --- a/xml/System.ComponentModel.Design/IRootDesigner.xml +++ b/xml/System.ComponentModel.Design/IRootDesigner.xml @@ -86,7 +86,7 @@ This method returns a view object that can present a user interface to the user. The returned data type is an , because there can be a variety of different user interface technologies. Development environments typically support more than one technology. > [!NOTE] -> The and fields are obsolete. Use for new designer implementations. +> The and fields are obsolete. Use for new designer implementations. ]]> @@ -124,7 +124,7 @@ The enumeration indicates the supported view technologies. > [!NOTE] -> The and fields are obsolete. Use for new designer implementations. +> The and fields are obsolete. Use for new designer implementations. ]]> diff --git a/xml/System.ComponentModel/BindableAttribute.xml b/xml/System.ComponentModel/BindableAttribute.xml index a56db792ff35b..893c4eb284922 100644 --- a/xml/System.ComponentModel/BindableAttribute.xml +++ b/xml/System.ComponentModel/BindableAttribute.xml @@ -291,7 +291,7 @@ is set to the constant member . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . + When you mark a property with this value, the is set to the constant member . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . ]]> diff --git a/xml/System.ComponentModel/DesignerSerializationVisibilityAttribute.xml b/xml/System.ComponentModel/DesignerSerializationVisibilityAttribute.xml index 3a766f7cad5d1..313964cff48a2 100644 --- a/xml/System.ComponentModel/DesignerSerializationVisibilityAttribute.xml +++ b/xml/System.ComponentModel/DesignerSerializationVisibilityAttribute.xml @@ -83,7 +83,7 @@ and sets its value to . + The following code example specifies how a property on a component is saved by a designer. This code creates a new and sets its value to . [!code-cpp[Classic DesignerSerializationVisibilityAttribute.DesignerSerializationVisibilityAttribute Example#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Classic DesignerSerializationVisibilityAttribute.DesignerSerializationVisibilityAttribute Example/CPP/source.cpp#1)] [!code-csharp[Classic DesignerSerializationVisibilityAttribute.DesignerSerializationVisibilityAttribute Example#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Classic DesignerSerializationVisibilityAttribute.DesignerSerializationVisibilityAttribute Example/CS/source.cs#1)] @@ -155,7 +155,7 @@ . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . + When you mark a property with this value, this attribute is set to the constant member . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . ]]> diff --git a/xml/System.ComponentModel/EditorBrowsableAttribute.xml b/xml/System.ComponentModel/EditorBrowsableAttribute.xml index 19d7b1c6e1891..eb46ba670d6ac 100644 --- a/xml/System.ComponentModel/EditorBrowsableAttribute.xml +++ b/xml/System.ComponentModel/EditorBrowsableAttribute.xml @@ -81,7 +81,7 @@ . + The default for this property is . ]]> @@ -218,7 +218,7 @@ . + The default for this property is . ]]> diff --git a/xml/System.ComponentModel/ICustomTypeDescriptor.xml b/xml/System.ComponentModel/ICustomTypeDescriptor.xml index 66039d5ed0336..56182010658b1 100644 --- a/xml/System.ComponentModel/ICustomTypeDescriptor.xml +++ b/xml/System.ComponentModel/ICustomTypeDescriptor.xml @@ -311,7 +311,7 @@ ## Remarks The events for this instance can differ from the set of events that the class provides. For example, if the component is site-based, the site can add or remove additional events. - Implementors can return if no properties are specified. This method should never return `null`. + Implementors can return if no properties are specified. This method should never return `null`. ]]> @@ -390,7 +390,7 @@ ## Remarks The properties for this instance can differ from the set of properties that the class provides. For example, if the component is sited, the site can add or remove additional properties. - Implementers can return if no properties are specified. This method should never return `null`. + Implementers can return if no properties are specified. This method should never return `null`. ]]> diff --git a/xml/System.ComponentModel/LocalizableAttribute.xml b/xml/System.ComponentModel/LocalizableAttribute.xml index 2793cb748f00a..53ac3b3620236 100644 --- a/xml/System.ComponentModel/LocalizableAttribute.xml +++ b/xml/System.ComponentModel/LocalizableAttribute.xml @@ -91,7 +91,7 @@ , sets its value to , and binds it to the property. + The following example marks a property as needing to be localized. This code creates a new , sets its value to , and binds it to the property. [!code-cpp[Classic LocalizableAttribute.LocalizableAttribute Example#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Classic LocalizableAttribute.LocalizableAttribute Example/CPP/source.cpp#1)] [!code-csharp[Classic LocalizableAttribute.LocalizableAttribute Example#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Classic LocalizableAttribute.LocalizableAttribute Example/CS/source.cs#1)] @@ -129,7 +129,7 @@ . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . + When you mark a property with this value, this attribute is set to the constant member . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . ]]> diff --git a/xml/System.ComponentModel/MergablePropertyAttribute.xml b/xml/System.ComponentModel/MergablePropertyAttribute.xml index 70b9795ec1860..6fa515d5e67d1 100644 --- a/xml/System.ComponentModel/MergablePropertyAttribute.xml +++ b/xml/System.ComponentModel/MergablePropertyAttribute.xml @@ -95,7 +95,7 @@ , sets its value to , and binds it to the property. + The following example marks a property as appropriate to merge. This code creates a new , sets its value to , and binds it to the property. [!code-cpp[Classic MergablePropertyAttribute.MergablePropertyAttribute Example#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Classic MergablePropertyAttribute.MergablePropertyAttribute Example/CPP/source.cpp#1)] [!code-csharp[Classic MergablePropertyAttribute.MergablePropertyAttribute Example#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Classic MergablePropertyAttribute.MergablePropertyAttribute Example/CS/source.cs#1)] @@ -181,7 +181,7 @@ . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . + When you mark a property with this value, this attribute is set to the constant member . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . ]]> diff --git a/xml/System.ComponentModel/RecommendedAsConfigurableAttribute.xml b/xml/System.ComponentModel/RecommendedAsConfigurableAttribute.xml index 6695ca66208ab..44965d598981f 100644 --- a/xml/System.ComponentModel/RecommendedAsConfigurableAttribute.xml +++ b/xml/System.ComponentModel/RecommendedAsConfigurableAttribute.xml @@ -100,7 +100,7 @@ , sets its value to , and binds it to the property. + The following example marks a property as usable as an application setting. This code creates a new , sets its value to , and binds it to the property. [!code-cpp[Classic RecommendedAsConfigurableAttribute.RecommendedAsConfigurableAttribute Example#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Classic RecommendedAsConfigurableAttribute.RecommendedAsConfigurableAttribute Example/CPP/source.cpp#1)] [!code-csharp[Classic RecommendedAsConfigurableAttribute.RecommendedAsConfigurableAttribute Example#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Classic RecommendedAsConfigurableAttribute.RecommendedAsConfigurableAttribute Example/CS/source.cs#1)] diff --git a/xml/System.ComponentModel/RunInstallerAttribute.xml b/xml/System.ComponentModel/RunInstallerAttribute.xml index b1e147355696e..9ab988f207375 100644 --- a/xml/System.ComponentModel/RunInstallerAttribute.xml +++ b/xml/System.ComponentModel/RunInstallerAttribute.xml @@ -111,7 +111,7 @@ . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . + When you mark a property with this value, this attribute is set to the constant member . Therefore, when you want to check whether the attribute is set to this value in your code, you must specify the attribute as . ]]> diff --git a/xml/System.Configuration.Internal/DelegatingConfigHost.xml b/xml/System.Configuration.Internal/DelegatingConfigHost.xml index 56a23675f16ab..e65b875537cef 100644 --- a/xml/System.Configuration.Internal/DelegatingConfigHost.xml +++ b/xml/System.Configuration.Internal/DelegatingConfigHost.xml @@ -57,8 +57,8 @@ System.Configuration.Internal.IInternalConfigurationBuilderHost - To be added. - To be added. + Gets the object if the delegated host provides the functionality required by that interface. + An object. To be added. @@ -1002,10 +1002,10 @@ - To be added. - To be added. - To be added. - To be added. + The to process. + to use to process the . + Processes a object using the provided . + The processed . To be added. @@ -1026,10 +1026,10 @@ - To be added. - To be added. - To be added. - To be added. + The to process. + to use to process the . + Processes the markup of a configuration section using the provided . + The processed . To be added. diff --git a/xml/System.Configuration.Internal/IInternalConfigurationBuilderHost.xml b/xml/System.Configuration.Internal/IInternalConfigurationBuilderHost.xml index 8369dbcc597ee..8d4131429bf46 100644 --- a/xml/System.Configuration.Internal/IInternalConfigurationBuilderHost.xml +++ b/xml/System.Configuration.Internal/IInternalConfigurationBuilderHost.xml @@ -13,7 +13,7 @@ - To be added. + Defines the supplemental interface to for configuration hosts that wish to support the application of objects. To be added. @@ -34,10 +34,11 @@ - To be added. - To be added. - To be added. - To be added. + The to process. + + to use to process the configSection. + Processes a object using the provided . + The processed . To be added. @@ -58,10 +59,11 @@ - To be added. - To be added. - To be added. - To be added. + The to process. + + to use to process the rawXml. + Processes the markup of a configuration section using the provided . + The processed . To be added. diff --git a/xml/System.Configuration/ConfigurationBuilder.xml b/xml/System.Configuration/ConfigurationBuilder.xml index 62ea82ed1bbd4..714e6182daea3 100644 --- a/xml/System.Configuration/ConfigurationBuilder.xml +++ b/xml/System.Configuration/ConfigurationBuilder.xml @@ -11,7 +11,7 @@ - To be added. + Represents the base class to be extended by custom configuration builder implementations. To be added. @@ -26,7 +26,7 @@ - To be added. + Initializes a new instance of the class. To be added. @@ -46,9 +46,9 @@ - To be added. - To be added. - To be added. + The to process. + Accepts a object from the configuration system and returns a modified or new object for further use. + The processed . To be added. @@ -68,9 +68,9 @@ - To be added. - To be added. - To be added. + The to process. + Accepts an representing the raw configuration section from a config file and returns a modified or new for further use. + The processed . To be added. diff --git a/xml/System.Configuration/ConfigurationBuilderCollection.xml b/xml/System.Configuration/ConfigurationBuilderCollection.xml index 115b288b7e6e5..643d458dc5a39 100644 --- a/xml/System.Configuration/ConfigurationBuilderCollection.xml +++ b/xml/System.Configuration/ConfigurationBuilderCollection.xml @@ -11,7 +11,7 @@ - To be added. + Maintains a collection of objects by name. To be added. @@ -26,7 +26,7 @@ - To be added. + Initializes a new instance of the class. To be added. @@ -46,9 +46,12 @@ - To be added. - To be added. + The object to add to the collection. + Adds a object to the object. To be added. + + is . + The configuration provider in must implement the class . @@ -67,9 +70,9 @@ - To be added. - To be added. - To be added. + A configuration builder name. + Gets the object from the that is configured with the provided name. + The object that is configured with the provided . To be added. diff --git a/xml/System.Configuration/ConfigurationBuilderSettings.xml b/xml/System.Configuration/ConfigurationBuilderSettings.xml index 610b4908ff8c8..e59e062cc4436 100644 --- a/xml/System.Configuration/ConfigurationBuilderSettings.xml +++ b/xml/System.Configuration/ConfigurationBuilderSettings.xml @@ -11,7 +11,7 @@ - To be added. + Represents a group of configuration elements that configure the providers for the configuration section. To be added. @@ -26,7 +26,7 @@ - To be added. + Initializes a new instance of the class. To be added. @@ -48,8 +48,8 @@ System.Configuration.ProviderSettingsCollection - To be added. - To be added. + Gets a collection of objects that represent the properties of configuration builders. + The objects. To be added. @@ -66,8 +66,8 @@ System.Configuration.ConfigurationPropertyCollection - To be added. - To be added. + Gets the of a . + A of a . To be added. diff --git a/xml/System.Configuration/ConfigurationBuildersSection.xml b/xml/System.Configuration/ConfigurationBuildersSection.xml index b86f3310d4566..b782608050377 100644 --- a/xml/System.Configuration/ConfigurationBuildersSection.xml +++ b/xml/System.Configuration/ConfigurationBuildersSection.xml @@ -11,7 +11,7 @@ - To be added. + Provides programmatic access to the section. This class can't be inherited. To be added. @@ -26,7 +26,7 @@ - To be added. + Initializes a new instance of the class. To be added. @@ -48,8 +48,8 @@ System.Configuration.ProviderSettingsCollection - To be added. - To be added. + Gets a of all objects in all participating configuration files. + The objects in all participating configuration files. To be added. @@ -69,10 +69,13 @@ - To be added. - To be added. - To be added. + A configuration builder name or a comma-separated list of names. If builderName is a comma-separated list of names, a special aggregate object that references and applies all named configuration builders is returned. + Returns a object that has the provided configuration builder name. + A object that has the provided configuration . To be added. + A configuration provider type can't be instantiated under a partially trusted security policy ( is not present on the target assembly). + ConfigurationBuilders.IgnoreLoadFailure is disabled by default. If a bin-deployed configuration builder can't be found or instantiated for one of the sections read from the configuration file, a is trapped and reported. If you wish to ignore load failures, enable ConfigurationBuilders.IgnoreLoadFailure. + ConfigurationBuilders.IgnoreLoadFailure is disabled by default. While loading a configuration builder if a occurs for one of the sections read from the configuration file, a is trapped and reported. If you wish to ignore load failures, enable ConfigurationBuilders.IgnoreLoadFailure. diff --git a/xml/System.Configuration/SchemeSettingElement.xml b/xml/System.Configuration/SchemeSettingElement.xml index 7829061ff9644..8657502349ac2 100644 --- a/xml/System.Configuration/SchemeSettingElement.xml +++ b/xml/System.Configuration/SchemeSettingElement.xml @@ -22,7 +22,7 @@ ## Remarks The class represents the \ element under the Uri section within a configuration file. The class represents an instance of an element in the class. - The class and the \ section in a configuration file looks generic, implying that an application can specify any enumeration value for any scheme. In fact, only the flag for HTTP and HTTPS schemes are supported. All other settings are ignored. + The class and the \ section in a configuration file looks generic, implying that an application can specify any enumeration value for any scheme. In fact, only the flag for HTTP and HTTPS schemes are supported. All other settings are ignored. ]]> diff --git a/xml/System.Configuration/SchemeSettingElementCollection.xml b/xml/System.Configuration/SchemeSettingElementCollection.xml index 8786cca7654cb..3b89b799610d1 100644 --- a/xml/System.Configuration/SchemeSettingElementCollection.xml +++ b/xml/System.Configuration/SchemeSettingElementCollection.xml @@ -27,7 +27,7 @@ ## Remarks The class represents the \ element under the Uri section within a configuration file. - The class and the \ section in a configuration file looks generic, implying that an application can specify any enumeration value for any scheme. In fact, only the flag for HTTP and HTTPS schemes are supported. All other settings are ignored. + The class and the \ section in a configuration file looks generic, implying that an application can specify any enumeration value for any scheme. In fact, only the flag for HTTP and HTTPS schemes are supported. All other settings are ignored. By default, the class un-escapes percent encoded path delimiters before executing path compression. This was implemented as a security mechanism against attacks like the following: diff --git a/xml/System.Configuration/SectionInformation.xml b/xml/System.Configuration/SectionInformation.xml index 85c0530194408..ce75136c5a94c 100644 --- a/xml/System.Configuration/SectionInformation.xml +++ b/xml/System.Configuration/SectionInformation.xml @@ -290,8 +290,8 @@ System.Configuration.ConfigurationBuilder - To be added. - To be added. + Gets the object for this configuration section. + The object for this configuration section. To be added. diff --git a/xml/System.Data.SqlClient/SqlDataReader.xml b/xml/System.Data.SqlClient/SqlDataReader.xml index 80993945986b4..4b7364c1aa8af 100644 --- a/xml/System.Data.SqlClient/SqlDataReader.xml +++ b/xml/System.Data.SqlClient/SqlDataReader.xml @@ -38,7 +38,7 @@ and are the only properties that you can call after the is closed. Although the property may be accessed while the exists, always call before returning the value of to guarantee an accurate return value. - When using sequential access (), an will be raised if the position is advanced and another read operation is attempted on the previous column. + When using sequential access (), an will be raised if the position is advanced and another read operation is attempted on the previous column. > [!NOTE] > For optimal performance, avoids creating unnecessary objects or making unnecessary copies of data. Therefore, multiple calls to methods such as return a reference to the same object. Use caution if you are modifying the underlying value of the objects returned by methods such as . diff --git a/xml/System.Data.SqlTypes/SqlBoolean.xml b/xml/System.Data.SqlTypes/SqlBoolean.xml index edb74a7d04288..0f549b15c5fb2 100644 --- a/xml/System.Data.SqlTypes/SqlBoolean.xml +++ b/xml/System.Data.SqlTypes/SqlBoolean.xml @@ -1485,7 +1485,7 @@ The false operator can be used to test the of the to determine whether it is false. Returns if the supplied parameter is is false, otherwise. - .]]> + .]]> @@ -1844,7 +1844,7 @@ The true operator can be used to test the of the to determine whether it is true. Returns if the supplied parameter is is true, otherwise. - .]]> + .]]> diff --git a/xml/System.Diagnostics/BooleanSwitch.xml b/xml/System.Diagnostics/BooleanSwitch.xml index be92787212b29..bef5665c99423 100644 --- a/xml/System.Diagnostics/BooleanSwitch.xml +++ b/xml/System.Diagnostics/BooleanSwitch.xml @@ -218,7 +218,7 @@ By default, this field is set to `false` (disabled). To enable the switch, assign this field the value of `true`. To disable the switch, assign the value to `false`. The value of this property is determined by the value of the base class property . > [!NOTE] -> This method uses the flag to prevent being called from untrusted code; only the immediate caller is required to have permission. If your code can be called from partially trusted code, do not pass the user input to class methods without validation. +> This method uses the flag to prevent being called from untrusted code; only the immediate caller is required to have permission. If your code can be called from partially trusted code, do not pass the user input to class methods without validation. diff --git a/xml/System.Diagnostics/EventSchemaTraceListener.xml b/xml/System.Diagnostics/EventSchemaTraceListener.xml index ac2e51c133ab7..6c32cd30e029e 100644 --- a/xml/System.Diagnostics/EventSchemaTraceListener.xml +++ b/xml/System.Diagnostics/EventSchemaTraceListener.xml @@ -72,7 +72,7 @@ |`EventID`|None|Always present.|This element represents parameter input (`id`).| |`Execution`|`ProcessID`|Depends on the presence of the flag in the property.|The `ProcessID` attribute is specified in the . On the Microsoft Windows 98 and Windows Millenium Edition operating systems, if `ProcessID` is larger than 2,147,483,647, it is a positive representation of a negative number and should be converted to obtain the correct process identifier.| ||`ThreadID`|Present when `ProcessID` is present.|The `ThreadID` attribute is specified in the .| -|`Level`|None|Always present.|This element represents parameter input (the numeric value of `eventType`). Parameter values that are larger than 255 are output as a level 8, which represents . Trace event types , , , , and are output as levels 1, 2, 4, 8, and 10, respectively.| +|`Level`|None|Always present.|This element represents parameter input (the numeric value of `eventType`). Parameter values that are larger than 255 are output as a level 8, which represents . Trace event types , , , , and are output as levels 1, 2, 4, 8, and 10, respectively.| |`LogicalOperationStack`|None|Depends on the presence of the flag in the property.|Only one logical operation can exist. Therefore, the values are written as `LogicalOperation` nodes under the `LogicalOperationStack` element.| |`OpCode`|None|Present when `Level` is greater than 255.|This element represents Trace event types that have numeric values greater than 255. , , , , or are output as levels 1, 2, 4, 8, and 10, respectively.| |`Provider`|`GUID`|Always present.|Always empty.| diff --git a/xml/System.Diagnostics/TraceFilter.xml b/xml/System.Diagnostics/TraceFilter.xml index 8698d813286a8..028436efc0b58 100644 --- a/xml/System.Diagnostics/TraceFilter.xml +++ b/xml/System.Diagnostics/TraceFilter.xml @@ -107,7 +107,7 @@ method to indicate tracing should occur when the trace event type of the event is equal to . + The following code example shows how to override the method to indicate tracing should occur when the trace event type of the event is equal to . [!code-cpp[System.Diagnostics.TraceFilter#2](~/samples/snippets/cpp/VS_Snippets_CLR_System/system.diagnostics.tracefilter/cpp/source.cpp#2)] [!code-csharp[System.Diagnostics.TraceFilter#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.diagnostics.tracefilter/cs/source.cs#2)] diff --git a/xml/System.Diagnostics/TraceListener.xml b/xml/System.Diagnostics/TraceListener.xml index 57e95dfea5bed..85cfae63cd8fd 100644 --- a/xml/System.Diagnostics/TraceListener.xml +++ b/xml/System.Diagnostics/TraceListener.xml @@ -992,7 +992,7 @@ property determines the optional content of trace output. The property can be set in the configuration file or programmatically during execution to include additional data specifically for a section of code. For example, you can set the property for the console trace listener to to add call stack information to the trace output. + The property determines the optional content of trace output. The property can be set in the configuration file or programmatically during execution to include additional data specifically for a section of code. For example, you can set the property for the console trace listener to to add call stack information to the trace output. The enumeration is not used by the following classes and methods: diff --git a/xml/System.Diagnostics/TraceSource.xml b/xml/System.Diagnostics/TraceSource.xml index 31d4b9365ef84..cc71528a5f3b9 100644 --- a/xml/System.Diagnostics/TraceSource.xml +++ b/xml/System.Diagnostics/TraceSource.xml @@ -882,7 +882,7 @@ ## Remarks The method provides an informational message intended to be read by users and not by tools. - calls the method, setting `eventType` to and passing the informative message as the message string. The method in turn calls the method of each trace listener. + calls the method, setting `eventType` to and passing the informative message as the message string. The method in turn calls the method of each trace listener. ]]> @@ -938,7 +938,7 @@ The method provides an informational message intended to be read by users and not by tools. - calls the method, setting `eventType` to and passing the message content as an object array with formatting information. The method in turn calls the method of each trace listener. + calls the method, setting `eventType` to and passing the message content as an object array with formatting information. The method in turn calls the method of each trace listener. ]]> @@ -993,7 +993,7 @@ method calls the method of each trace listener in the property to write the trace information. The default method in the base class calls the method to process the call, setting `eventType` to and appending a string representation of the `relatedActivityId` GUID to `message`. + The method calls the method of each trace listener in the property to write the trace information. The default method in the base class calls the method to process the call, setting `eventType` to and appending a string representation of the `relatedActivityId` GUID to `message`. is intended to be used with the logical operations of a . The `relatedActivityId` parameter relates to the property of a object. If a logical operation begins in one activity and transfers to another, the second activity logs the transfer by calling the method. The call relates the new activity identity to the previous identity. The most likely consumer of this functionality is a trace viewer that can report logical operations that span multiple activities. diff --git a/xml/System.Diagnostics/TraceSwitch.xml b/xml/System.Diagnostics/TraceSwitch.xml index 5160ec545b0f0..fcf29d1653f73 100644 --- a/xml/System.Diagnostics/TraceSwitch.xml +++ b/xml/System.Diagnostics/TraceSwitch.xml @@ -47,7 +47,7 @@ ``` - This configuration section defines a with the set to `mySwitch`, and the set to 1, which corresponds to the enumeration value . + This configuration section defines a with the set to `mySwitch`, and the set to 1, which corresponds to the enumeration value . > [!NOTE] > In the .NET Framework version 2.0, you can use text to specify the value for a switch. For example, `true` for a or the text representing an enumeration value, such as `Error` for a . The line `` is equivalent to ``. @@ -58,7 +58,7 @@ [!code-csharp[Classic TraceSwitch.TraceError Example#3](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CS/remarks.cs#3)] [!code-vb[Classic TraceSwitch.TraceError Example#3](~/samples/snippets/visualbasic/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/VB/remarks.vb#3)] - By default, the switch property is set using the value specified in the configuration file. If the constructor cannot find initial switch settings in the configuration file, the of the new switch defaults to . + By default, the switch property is set using the value specified in the configuration file. If the constructor cannot find initial switch settings in the configuration file, the of the new switch defaults to . You must enable tracing or debugging to use a switch. The following syntax is compiler specific. If you use compilers other than C# or Visual Basic, refer to the documentation for your compiler. @@ -77,7 +77,7 @@ ## Examples - The following code example creates a new and uses the switch to determine whether to print error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . + The following code example creates a new and uses the switch to determine whether to print error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . [!code-cpp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CS/source.cs#1)] @@ -139,7 +139,7 @@ [!code-csharp[Classic TraceSwitch.TraceError Example#3](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CS/remarks.cs#3)] [!code-vb[Classic TraceSwitch.TraceError Example#3](~/samples/snippets/visualbasic/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/VB/remarks.vb#3)] - When the constructor cannot find initial switch settings in the configuration file, the property of the new switch is set to . + When the constructor cannot find initial switch settings in the configuration file, the property of the new switch is set to . The class provides the , , , and properties to test the of the switch. The property gets or sets the switch's . @@ -149,7 +149,7 @@ ## Examples - The following code example creates a new and uses the switch to determine whether to print error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . + The following code example creates a new and uses the switch to determine whether to print error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . [!code-cpp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CS/source.cs#1)] @@ -245,14 +245,14 @@ > [!NOTE] > In the .NET Framework version 2.0, you can use text to specify the value for a switch. For example, `true` for a or the text representing an enumeration value, such as `Error` for a . The line `` is equivalent to ``. - When the constructor cannot find initial switch settings in the configuration file, the property of the new switch is set to . + When the constructor cannot find initial switch settings in the configuration file, the property of the new switch is set to . Setting this property updates the , , , and properties to reflect the new value. ## Examples - The following code example creates a new and uses the switch to determine whether to print error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . + The following code example creates a new and uses the switch to determine whether to print error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . [!code-cpp[Classic TraceSwitch.Level Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.Level Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.Level Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.Level Example/CS/source.cs#1)] @@ -370,12 +370,12 @@ , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to the highest importance, , , only error-handling messages are emitted. + You can use the , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to the highest importance, , , only error-handling messages are emitted. ## Examples - The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . + The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . [!code-cpp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CS/source.cs#1)] @@ -415,12 +415,12 @@ , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to , informational messages, warnings, and error-handling messages are emitted. + You can use the , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to , informational messages, warnings, and error-handling messages are emitted. ## Examples - The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . + The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message if the is less than . [!code-cpp[Classic TraceSwitch.TraceInfo Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceInfo Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.TraceInfo Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceInfo Example/CS/source.cs#1)] @@ -460,12 +460,12 @@ , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to , all debugging and tracing messages are transmitted. + You can use the , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to , all debugging and tracing messages are transmitted. ## Examples - The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes both error messages when the property is set to . + The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes both error messages when the property is set to . [!code-cpp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.TraceError Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceError Example/CS/source.cs#1)] @@ -505,12 +505,12 @@ , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to , warnings and error-handling messages are emitted. + You can use the , , , and properties in conjunction with the and classes to emit all messages with a specified importance or greater. When the property is set to , warnings and error-handling messages are emitted. ## Examples - The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message when the is less than . + The following code example creates a new and uses the switch to determine whether to emit error messages. The switch is created at the class level. `MyMethod` writes the first error message if the property is set to or higher. However, `MyMethod` does not write the second error message when the is less than . [!code-cpp[Classic TraceSwitch.TraceWarning Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceWarning Example/CPP/source.cpp#1)] [!code-csharp[Classic TraceSwitch.TraceWarning Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic TraceSwitch.TraceWarning Example/CS/source.cs#1)] diff --git a/xml/System.DirectoryServices.AccountManagement/AdvancedFilters.xml b/xml/System.DirectoryServices.AccountManagement/AdvancedFilters.xml index 54447a89d01fe..fa497020524f7 100644 --- a/xml/System.DirectoryServices.AccountManagement/AdvancedFilters.xml +++ b/xml/System.DirectoryServices.AccountManagement/AdvancedFilters.xml @@ -79,7 +79,7 @@ property of your object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of your object as . @@ -138,7 +138,7 @@ foreach (UserPrincipal u in results) property of your object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of your object as . @@ -302,7 +302,7 @@ foreach (UserPrincipal u in results) property of your object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of your object as . @@ -361,7 +361,7 @@ foreach (UserPrincipal u in results) property of your object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of your object as . @@ -418,7 +418,7 @@ foreach (UserPrincipal u in results) property of your object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of your object as . diff --git a/xml/System.DirectoryServices.AccountManagement/AuthenticablePrincipal.xml b/xml/System.DirectoryServices.AccountManagement/AuthenticablePrincipal.xml index 93123ec221027..437efd52d8cc4 100644 --- a/xml/System.DirectoryServices.AccountManagement/AuthenticablePrincipal.xml +++ b/xml/System.DirectoryServices.AccountManagement/AuthenticablePrincipal.xml @@ -423,7 +423,7 @@ property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -457,7 +457,7 @@ property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -495,7 +495,7 @@ property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -529,7 +529,7 @@ property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -567,7 +567,7 @@ property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -601,7 +601,7 @@ property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . @@ -668,7 +668,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -702,7 +702,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -740,7 +740,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> diff --git a/xml/System.DirectoryServices.AccountManagement/UserPrincipal.xml b/xml/System.DirectoryServices.AccountManagement/UserPrincipal.xml index 3eaeb5d610342..a6e4ed793c7eb 100644 --- a/xml/System.DirectoryServices.AccountManagement/UserPrincipal.xml +++ b/xml/System.DirectoryServices.AccountManagement/UserPrincipal.xml @@ -219,7 +219,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -253,7 +253,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -371,7 +371,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -405,7 +405,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> @@ -439,7 +439,7 @@ ctx.Dispose(); property of the `time` object as . + The time will default to UTC. If you want to specify the time in local time, then specify the property of the `time` object as . ]]> diff --git a/xml/System.Drawing.Imaging/ImageAttributes.xml b/xml/System.Drawing.Imaging/ImageAttributes.xml index e9361c98f1009..74255fcbb1243 100644 --- a/xml/System.Drawing.Imaging/ImageAttributes.xml +++ b/xml/System.Drawing.Imaging/ImageAttributes.xml @@ -829,7 +829,7 @@ The default color-adjustment and grayscale-adjustment settings apply to all categories that do not have adjustment settings of their own. For example, if you never specify any adjustment settings for the pen category, the default settings apply to the pen category. - Calling the method is equivalent to calling the method and passing for the `flags` parameter. specifies that all colors (including grays) are adjusted by the color-adjustment matrix, not the grayscale-adjustment matrix. Therefore, the grayscale-adjustment matrix passed to this method has no effect. + Calling the method is equivalent to calling the method and passing for the `flags` parameter. specifies that all colors (including grays) are adjusted by the color-adjustment matrix, not the grayscale-adjustment matrix. Therefore, the grayscale-adjustment matrix passed to this method has no effect. ]]> @@ -933,7 +933,7 @@ The default color-adjustment and grayscale-adjustment settings apply to all categories that do not have adjustment settings of their own. For example, if you never specify any adjustment settings for the pen category, the default settings apply to the pen category. - Calling the method is equivalent to calling the method and passing for the `flags` parameter. specifies that all colors (including grays) are adjusted by the color-adjustment matrix + Calling the method is equivalent to calling the method and passing for the `flags` parameter. specifies that all colors (including grays) are adjusted by the color-adjustment matrix diff --git a/xml/System.Drawing.Printing/PaperSize.xml b/xml/System.Drawing.Printing/PaperSize.xml index ecc7659913291..5e4f586488dcd 100644 --- a/xml/System.Drawing.Printing/PaperSize.xml +++ b/xml/System.Drawing.Printing/PaperSize.xml @@ -50,7 +50,7 @@ |Property|Initial value| |--------------|-------------------| -||| +||| ||| ]]> diff --git a/xml/System.Drawing.Printing/PaperSource.xml b/xml/System.Drawing.Printing/PaperSource.xml index e86918bd66e4a..66fcb53c0f873 100644 --- a/xml/System.Drawing.Printing/PaperSource.xml +++ b/xml/System.Drawing.Printing/PaperSource.xml @@ -53,7 +53,7 @@ |Property|Initial value| |--------------|-------------------| -||| +||| ||| ]]> diff --git a/xml/System.Drawing.Printing/PrinterSettings.xml b/xml/System.Drawing.Printing/PrinterSettings.xml index 255e7dbd34ff8..3baa239d5a209 100644 --- a/xml/System.Drawing.Printing/PrinterSettings.xml +++ b/xml/System.Drawing.Printing/PrinterSettings.xml @@ -361,7 +361,7 @@ ## Remarks The and properties are used by the when the user selects a print range. The property must be set to `true` to enable the user to specify a print range. In addition, the requires the and to be specified and the value to be within that range. - During the printing process, in the event, view the to determine what should be printed. If is , use the and properties to determine what pages should be printed. If is , then specify output only for the selected pages. + During the printing process, in the event, view the to determine what should be printed. If is , use the and properties to determine what pages should be printed. If is , then specify output only for the selected pages. The , and can also be set programmatically, though the implementation is the same. @@ -944,7 +944,7 @@ ## Remarks The property is used by the .when the user selects a print range. The default is `AllPages`. To enable the user to specify a range of pages to print, the property must be set to `true`. To enable the user to specify the selected pages to print, the property must be set to `true`. - During the printing process, in the event, view the to determine what should be printed. If is , use the and properties to determine what pages should be printed. If is , then specify output only for the selected pages. + During the printing process, in the event, view the to determine what should be printed. If is , use the and properties to determine what pages should be printed. If is , then specify output only for the selected pages. The , and can also be set programmatically, though the implementation is the same. @@ -1093,7 +1093,7 @@ ## Remarks The and properties are used by the when the user selects a print range. The property must be set to `true` to enable the user to specify a print range. In addition, the also requires the and to be specified and the value to be within that range. - During the printing process, in the event, view the to determine what should be printed. If is , use the and properties to determine what pages should be printed. If is , then specify output only for the selected pages. + During the printing process, in the event, view the to determine what should be printed. If is , use the and properties to determine what pages should be printed. If is , then specify output only for the selected pages. The , and can also be set programmatically, though the implementation is the same. diff --git a/xml/System.Drawing/Bitmap.xml b/xml/System.Drawing/Bitmap.xml index 115f9ad4d119d..11f0ba51c70cf 100644 --- a/xml/System.Drawing/Bitmap.xml +++ b/xml/System.Drawing/Bitmap.xml @@ -847,7 +847,7 @@ When calling this method, you should use a member of the enumeration that contains a specific bits-per-pixel (BPP) value. Using values, such as and , will throw an . Also, passing the incorrect pixel format for a bitmap will throw an . - This version of the method is intended to be used with a `flags` value of . + This version of the method is intended to be used with a `flags` value of . ]]> diff --git a/xml/System.Drawing/Font.xml b/xml/System.Drawing/Font.xml index f55eec7756c64..c7f7b2067c845 100644 --- a/xml/System.Drawing/Font.xml +++ b/xml/System.Drawing/Font.xml @@ -138,7 +138,7 @@ property set to and its property set to . Windows Forms applications support TrueType fonts and have limited support for OpenType fonts. If the `familyName` parameter specifies a font that is not installed on the machine running the application or is not supported, Microsoft Sans Serif will be substituted. + The resulting font has its property set to and its property set to . Windows Forms applications support TrueType fonts and have limited support for OpenType fonts. If the `familyName` parameter specifies a font that is not installed on the machine running the application or is not supported, Microsoft Sans Serif will be substituted. @@ -219,7 +219,7 @@ property set to . + The resulting font has its property set to . ]]> @@ -283,7 +283,7 @@ property set to . + The resulting font has its property set to . ]]> @@ -972,7 +972,7 @@ ## Remarks The line spacing of a is the vertical distance between the base lines of two consecutive lines of text. Thus, the line spacing includes the blank space between lines along with the height of the character itself. - If the property of the font is set to anything other than , the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows: + If the property of the font is set to anything other than , the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows: 2355*(0.3/2048)\*96 = 33.11719 @@ -1005,11 +1005,11 @@ ## Remarks The line spacing of a is the vertical distance between the base lines of two consecutive lines of text. Thus, the line spacing includes the blank space between lines along with the height of the character itself. - If the property of the font is set to anything other than , the height, in pixels, is calculated using the vertical resolution of the specified object. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. If the object has a property value of and a property value of 96 dots per inch, the height is calculated as follows: + If the property of the font is set to anything other than , the height, in pixels, is calculated using the vertical resolution of the specified object. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. If the object has a property value of and a property value of 96 dots per inch, the height is calculated as follows: 2355*(0.3/2048)\*96 = 33.1171875 - Continuing with the same example, suppose the property of the object is set to rather than . Then (using 1 inch = 25.4 millimeters) the height, in millimeters, is calculated as follows: + Continuing with the same example, suppose the property of the object is set to rather than . Then (using 1 inch = 25.4 millimeters) the height, in millimeters, is calculated as follows: 2355*(0.3/2048)25.4 = 8.762256 @@ -1059,7 +1059,7 @@ property of the font is set to anything other than , the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. If the specified vertical resolution is 96 dots per inch, the height is calculated as follows: + If the property of the font is set to anything other than , the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. If the specified vertical resolution is 96 dots per inch, the height is calculated as follows: 2355*(0.3/2048)\*96 = 33.1171875 @@ -1093,7 +1093,7 @@ ## Remarks The line spacing is the vertical distance between the base lines of two consecutive lines of text. Thus, the line spacing includes the blank space between lines along with the height of the character itself. - If the property of the font is set to anything other than , the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows: + If the property of the font is set to anything other than , the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows: 2355*(0.3/2048)\*96 = 33.11719 diff --git a/xml/System.Globalization/Calendar.xml b/xml/System.Globalization/Calendar.xml index 432e9f0d09f7b..8b69cac29a2e4 100644 --- a/xml/System.Globalization/Calendar.xml +++ b/xml/System.Globalization/Calendar.xml @@ -183,7 +183,7 @@ The month part of the resulting is affected if the resulting day is outside the month of the specified . The year part of the resulting is affected if the resulting month is outside the year of the specified . The era part of the resulting is affected if the resulting year is outside the era of the specified . The time-of-day part of the resulting remains the same as the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#1)] [!code-vb[System.Globalization.Calendar.AddMethods#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#1)] @@ -247,7 +247,7 @@ The day part of the resulting is affected if the resulting time is outside the day of the specified . The month part of the resulting is affected if the resulting day is outside the month of the specified . The year part of the resulting is affected if the resulting month is outside the year of the specified . The era part of the resulting is affected if the resulting year is outside the era of the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#2)] [!code-vb[System.Globalization.Calendar.AddMethods#2](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#2)] @@ -311,7 +311,7 @@ The day part of the resulting is affected if the resulting time is outside the day of the specified . The month part of the resulting is affected if the resulting day is outside the month of the specified . The year part of the resulting is affected if the resulting month is outside the year of the specified . The era part of the resulting is affected if the resulting year is outside the era of the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#3](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#3)] [!code-vb[System.Globalization.Calendar.AddMethods#3](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#3)] @@ -375,7 +375,7 @@ The day part of the resulting is affected if the resulting time is outside the day of the specified . The month part of the resulting is affected if the resulting day is outside the month of the specified . The year part of the resulting is affected if the resulting month is outside the year of the specified . The era part of the resulting is affected if the resulting year is outside the era of the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#4](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#4)] [!code-vb[System.Globalization.Calendar.AddMethods#4](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#4)] @@ -443,7 +443,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -507,7 +507,7 @@ The day part of the resulting is affected if the resulting time is outside the day of the specified . The month part of the resulting is affected if the resulting day is outside the month of the specified . The year part of the resulting is affected if the resulting month is outside the year of the specified . The era part of the resulting is affected if the resulting year is outside the era of the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#6](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#6)] [!code-vb[System.Globalization.Calendar.AddMethods#6](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#6)] @@ -573,7 +573,7 @@ In all .NET Framework classes derived from the class, a week is defined as seven days. - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#7](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#7)] [!code-vb[System.Globalization.Calendar.AddMethods#7](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#7)] @@ -641,7 +641,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/CharUnicodeInfo.xml b/xml/System.Globalization/CharUnicodeInfo.xml index 443d077d44280..05561b07f3e50 100644 --- a/xml/System.Globalization/CharUnicodeInfo.xml +++ b/xml/System.Globalization/CharUnicodeInfo.xml @@ -40,7 +40,7 @@ - Digit value. Applies to numeric characters that can be combined with other numeric characters to represent a whole number in a numbering system. -- Decimal digit value. Applies only to characters that represent decimal digits in the decimal (base 10) system. A decimal digit can be one of ten digits, from zero through nine. These characters are members of the category. +- Decimal digit value. Applies only to characters that represent decimal digits in the decimal (base 10) system. A decimal digit can be one of ten digits, from zero through nine. These characters are members of the category. In addition, the class is used internally by a number of other .NET Framework types and methods that rely on character classification. These include: @@ -499,7 +499,7 @@ ## Remarks The Unicode characters are divided into categories. A character's category is one of its properties. For example, a character might be an uppercase letter, a lowercase letter, a decimal digit number, a letter number, a connector punctuation, a math symbol, or a currency symbol. The class returns the category of a Unicode character. For more information on Unicode characters, see the [Unicode Standard](http://go.microsoft.com/fwlink/?linkid=37123). - The method assumes that `ch` corresponds to a single linguistic character and returns its category. This means that, for surrogate pairs, it returns instead of the category to which the surrogate belongs. For example, the Ugaritic alphabet occupies code points U+10380 to U+1039F. The following example uses the method to instantiate a string that represents UGARITIC LETTER ALPA (U+10380), which is the first letter of the Ugaritic alphabet. As the output from the example shows, the method returns `false` if it is passed either the high surrogate or the low surrogate of this character. + The method assumes that `ch` corresponds to a single linguistic character and returns its category. This means that, for surrogate pairs, it returns instead of the category to which the surrogate belongs. For example, the Ugaritic alphabet occupies code points U+10380 to U+1039F. The following example uses the method to instantiate a string that represents UGARITIC LETTER ALPA (U+10380), which is the first letter of the Ugaritic alphabet. As the output from the example shows, the method returns `false` if it is passed either the high surrogate or the low surrogate of this character. [!code-csharp[System.Globalization.CharUnicodeInfo.GetUnicodeCategory#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.charunicodeinfo.getunicodecategory/cs/getunicodecategory1.cs#1)] [!code-vb[System.Globalization.CharUnicodeInfo.GetUnicodeCategory#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.charunicodeinfo.getunicodecategory/vb/getunicodecategory1.vb#1)] @@ -560,7 +560,7 @@ ## Remarks The Unicode characters are divided into categories. A character's category is one of its properties. For example, a character might be an uppercase letter, a lowercase letter, a decimal digit number, a letter number, a connector punctuation, a math symbol, or a currency symbol. The class returns the category of a Unicode character. For more information on Unicode characters, see the [Unicode Standard](http://go.microsoft.com/fwlink/?linkid=37123). - If the object at position `index` is the first character of a valid surrogate pair, the method returns the Unicode category of the surrogate pair instead of returning . For example, the Ugaritic alphabet occupies code points U+10380 to U+1039F. The following example uses the method to instantiate a string that represents UGARITIC LETTER ALPA (U+10380), which is the first letter of the Ugaritic alphabet. As the output from the example shows, the method returns if it is passed the high surrogate of this character, which indicates that it considers the surrogate pair. However, if it is passed the low surrogate, it considers only the low surrogate in isolation and returns . + If the object at position `index` is the first character of a valid surrogate pair, the method returns the Unicode category of the surrogate pair instead of returning . For example, the Ugaritic alphabet occupies code points U+10380 to U+1039F. The following example uses the method to instantiate a string that represents UGARITIC LETTER ALPA (U+10380), which is the first letter of the Ugaritic alphabet. As the output from the example shows, the method returns if it is passed the high surrogate of this character, which indicates that it considers the surrogate pair. However, if it is passed the low surrogate, it considers only the low surrogate in isolation and returns . [!code-csharp[System.Globalization.CharUnicodeInfo.GetUnicodeCategory#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.charunicodeinfo.getunicodecategory/cs/getunicodecategory1.cs#2)] [!code-vb[System.Globalization.CharUnicodeInfo.GetUnicodeCategory#2](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.charunicodeinfo.getunicodecategory/vb/getunicodecategory1.vb#2)] diff --git a/xml/System.Globalization/CompareInfo.xml b/xml/System.Globalization/CompareInfo.xml index 96a67bed9c6f3..e8f6ecced5b9d 100644 --- a/xml/System.Globalization/CompareInfo.xml +++ b/xml/System.Globalization/CompareInfo.xml @@ -52,7 +52,7 @@ - . Culture-sensitive comparison methods will always find an empty string at the beginning (index zero) of the string being searched. -- A character or string consisting of characters with code points that are not considered in the operation because of comparison options, In particular, the and options produce searches in which symbols and nonspacing combining characters are ignored. +- A character or string consisting of characters with code points that are not considered in the operation because of comparison options, In particular, the and options produce searches in which symbols and nonspacing combining characters are ignored. - A string with code points that have no linguistic significance. For example, a soft hyphen (U+00AD) is always ignored in a culture-sensitive string comparison. @@ -132,7 +132,7 @@ . If a security decision depends on a string comparison or a case change, you should use the property to ensure that the behavior is consistent regardless of the culture settings of the operating system. + By default, the comparison is performed by using . If a security decision depends on a string comparison or a case change, you should use the property to ensure that the behavior is consistent regardless of the culture settings of the operating system. > [!NOTE] > When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1152,10 +1152,10 @@ ## Remarks This method searches the source string from the beginning of the string to the end of the string. - This overload performs a culture-sensitive search. If `value` represents a precomposed Unicode character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if their Unicode code points are the same, you should call an overload that has a parameter of type and use the value. Unlike , which performs a culture-sensitive comparison, overloads of the method that search for a character perform an ordinal comparison and overloads that search for a string perform a culture-sensitive comparison. + This overload performs a culture-sensitive search. If `value` represents a precomposed Unicode character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if their Unicode code points are the same, you should call an overload that has a parameter of type and use the value. Unlike , which performs a culture-sensitive comparison, overloads of the method that search for a character perform an ordinal comparison and overloads that search for a string perform a culture-sensitive comparison. > [!NOTE] -> When possible, you should use string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should use string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1222,7 +1222,7 @@ This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should use one of the overloads that has a parameter of type and use the value. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1292,12 +1292,12 @@ ## Remarks The source string is searched forward starting at the beginning of the string and ending at the end of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search. A character is considered equivalent to another character only if the Unicode values are the same. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should use string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should use string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1363,7 +1363,7 @@ This overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if the Unicode values are the same, you should call one of the overloads that has a parameter of type and use the value. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1431,12 +1431,12 @@ ## Remarks The source string is searched forward starting at the beginning of the string and ending at the end of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search, where the Unicode values are compared. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1506,7 +1506,7 @@ This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1582,12 +1582,12 @@ ## Remarks The source string is searched forward starting at `startIndex` and ending at the end of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search. A character is considered equivalent to another character only if the Unicode values are the same. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1662,7 +1662,7 @@ This overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if the Unicode values are the same, you should call one of the overloads that has a parameter of type and use the value. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1740,12 +1740,12 @@ ## Remarks The source string is searched forward starting at `startIndex` and ending at the end of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search, where the Unicode values are compared. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1826,7 +1826,7 @@ This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -1917,12 +1917,12 @@ ## Remarks The source string is searched forward starting at `startIndex` and ending at `startIndex` + `count` - 1. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search. A character is considered equivalent to another character only if the Unicode values are the same. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2009,12 +2009,12 @@ ## Remarks The source string is searched forward starting at `startIndex` and ending at `startIndex` + `count` - 1. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search, where the Unicode values are compared. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2098,7 +2098,7 @@ Every string starts and ends with an empty substring (""); therefore, if `prefix` is an empty string, this method returns `true`. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2168,10 +2168,10 @@ ## Remarks Every string starts and ends with an empty substring (""); therefore, if `prefix` is an empty string, this method returns `true`. - The value is not valid for this method. + The value is not valid for this method. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2330,7 +2330,7 @@ Every string starts and ends with an empty substring (""); therefore, if `suffix` is an empty string, this method returns `true`. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2400,10 +2400,10 @@ ## Remarks Every string starts and ends with an empty substring (""); therefore, if `suffix` is an empty string, this method returns `true`. - The value is not valid for this method. + The value is not valid for this method. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2470,7 +2470,7 @@ This overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if the Unicode values are the same, you should call one of the overloads that has a parameter of type and use the value. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2534,10 +2534,10 @@ ## Remarks The source string is searched backward starting at the end of the string and ending at the beginning of the string. - This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. + This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2607,12 +2607,12 @@ ## Remarks The source string is searched backward starting at the end of the string and ending at the beginning of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search. A character is considered equivalent to another character only if the Unicode values are the same. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2678,7 +2678,7 @@ This overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if the Unicode values are the same, you should call one of the overloads that has a parameter of type and use the value. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2746,12 +2746,12 @@ ## Remarks The source string is searched backward starting at the end of the string and ending at the beginning of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search, where the Unicode values are compared. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2818,10 +2818,10 @@ ## Remarks The source string is searched backward starting at `startIndex` and ending at the beginning of the string. - This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. + This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2895,12 +2895,12 @@ ## Remarks The source string is searched backward starting at `startIndex` and ending at the beginning of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search. A character is considered equivalent to another character only if the Unicode values are the same. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -2975,7 +2975,7 @@ This overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if the Unicode values are the same, you should call one of the overloads that has a parameter of type and use the value. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -3053,12 +3053,12 @@ ## Remarks The source string is searched backward starting at `startIndex` and ending at the beginning of the string. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search, where the Unicode values are compared. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -3139,7 +3139,7 @@ This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, you should call one of the overloads that has a parameter of type and use the value. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons . +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons . @@ -3230,12 +3230,12 @@ ## Remarks The source string is searched backward starting at `startIndex` and ending at `startIndex` - `count` + 1. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. If the character is a Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), it might be considered equivalent to any occurrence of its components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search. A character is considered equivalent to another character only if the Unicode values are the same. Overloads of that search for a character perform an ordinal search, whereas those that search for a string perform a culture-sensitive search. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. @@ -3322,12 +3322,12 @@ ## Remarks The source string is searched backward starting at `startIndex` and ending at `startIndex` - `count` + 1. - The value is not valid for this method. + The value is not valid for this method. If `options` does not include the value, this overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. If `options` includes the value, this overload performs an ordinal (culture-insensitive) search, where the Unicode values are compared. > [!NOTE] -> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. +> When possible, you should call string comparison methods that have a parameter of type to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify or for security comparisons. diff --git a/xml/System.Globalization/CultureAndRegionInfoBuilder.xml b/xml/System.Globalization/CultureAndRegionInfoBuilder.xml index 5761866ed96a6..c4005e42386e7 100644 --- a/xml/System.Globalization/CultureAndRegionInfoBuilder.xml +++ b/xml/System.Globalization/CultureAndRegionInfoBuilder.xml @@ -35,10 +35,10 @@ ## Defining and Creating a Custom Culture You use the class to define and name a custom culture. The custom culture can be an entirely new culture, a new culture that is based on an existing culture (that is, a supplemental culture), or a culture that replaces an existing .NET Framework culture. In each case, the basic steps are the same: -1. Instantiate a object by calling its constructor. To replace an existing culture, pass that culture's name and the enumeration value to the constructor. To create a new culture or a supplemental culture, pass a unique culture name and either the or enumeration value. +1. Instantiate a object by calling its constructor. To replace an existing culture, pass that culture's name and the enumeration value to the constructor. To create a new culture or a supplemental culture, pass a unique culture name and either the or enumeration value. > [!NOTE] - > If you use the enumeration value to instantiate a object, the object's properties are automatically populated with values from the object to be replaced. + > If you use the enumeration value to instantiate a object, the object's properties are automatically populated with values from the object to be replaced. 2. If you are creating a new or supplemental culture: diff --git a/xml/System.Globalization/CultureInfo.xml b/xml/System.Globalization/CultureInfo.xml index 59127702792c6..011f4561e7810 100644 --- a/xml/System.Globalization/CultureInfo.xml +++ b/xml/System.Globalization/CultureInfo.xml @@ -425,7 +425,7 @@ In .NET Framework and .NET Core apps, the current culture is a per-thread settin ## Remarks For a list of predefined culture names, see the [National Language Support (NLS) API Reference](http://go.microsoft.com/fwlink/?LinkId=200048) at the Go Global Developer Center. In addition, starting with Windows 10, `name` can be any valid BCP-47 language tag. - If `name` is , the constructor creates an instance of the invariant culture; this is equivalent to retrieving the value of the property. + If `name` is , the constructor creates an instance of the invariant culture; this is equivalent to retrieving the value of the property. The user might choose to override some of the values associated with the current culture of Windows through the regional and language options portion of Control Panel. For example, the user might choose to display the date in a different format or to use a currency other than the default for the culture. If the culture identifier associated with `name` matches the culture identifier of the current Windows culture, this constructor creates a object that uses those overrides, including user settings for the properties of the instance returned by the property, and the properties of the instance returned by the property. If the user settings are incompatible with the culture associated with the , for example, if the selected calendar is not one of the , the results of the methods and the values of the properties are undefined. @@ -566,7 +566,7 @@ In .NET Framework and .NET Core apps, the current culture is a per-thread settin ## Remarks For a list of predefined culture names, see the [National Language Support (NLS) API Reference](http://go.microsoft.com/fwlink/?LinkId=200048) at the Go Global Developer Center. In addition, starting with Windows 10, `name` can be any valid BCP-47 language tag. - If `name` is , the constructor creates an instance of the invariant culture; this is equivalent to retrieving the value of the property. + If `name` is , the constructor creates an instance of the invariant culture; this is equivalent to retrieving the value of the property. The user might choose to override some of the values associated with the current Windows culture through the regional and language options portion of Control Panel. For example, the user might choose to display the date in a different format or to use a currency other than the default for the culture. @@ -2191,7 +2191,7 @@ csc /resource:GreetingStrings.resources Example1.cs [!code-vb[System.Globalization.CultureInfo.InvariantCulture#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.cultureinfo.invariantculture/vb/persist1.vb#1)] ## Security Decisions - If you are making a security decision (such as whether to allow access to a system resource) based on the result of a string comparison or a case change, you should not use the invariant culture. Instead, you should perform a case-sensitive or case-insensitive ordinal comparison by calling a method that includes a parameter and supplying either or as an argument. Code that performs culture-sensitive string operations can cause security vulnerabilities if the current culture is changed or if the culture on the computer that is running the code differs from the culture that is used to test the code. In contrast, an ordinal comparison depends solely on the binary value of the compared characters. + If you are making a security decision (such as whether to allow access to a system resource) based on the result of a string comparison or a case change, you should not use the invariant culture. Instead, you should perform a case-sensitive or case-insensitive ordinal comparison by calling a method that includes a parameter and supplying either or as an argument. Code that performs culture-sensitive string operations can cause security vulnerabilities if the current culture is changed or if the culture on the computer that is running the code differs from the culture that is used to test the code. In contrast, an ordinal comparison depends solely on the binary value of the compared characters. ]]> diff --git a/xml/System.Globalization/DateTimeFormatInfo.xml b/xml/System.Globalization/DateTimeFormatInfo.xml index c03a5cd6c39f6..2cd349d7325ea 100644 --- a/xml/System.Globalization/DateTimeFormatInfo.xml +++ b/xml/System.Globalization/DateTimeFormatInfo.xml @@ -318,7 +318,7 @@ ## Parsing date and time strings Parsing involves converting the string representation of a date and time to a or value. Both of these types include the `Parse`, `TryParse`, `ParseExact`, and `TryParseExact` methods to support parsing operations. The `Parse` and `TryParse` methods convert a string that can have a variety of formats, whereas `ParseExact` and `TryParseExact` require that the string have a defined format or formats. If the parsing operation fails, `Parse` and `ParseExact` throw an exception, whereas `TryParse` and `TryParseExact` return `false`. - The parsing methods implicitly or explicitly use a enumeration value to determine which style elements (such as leading, trailing, or inner white space) can be present in the string to be parsed, and how to interpret the parsed string or any missing elements. If you don't provide a value when you call the `Parse` or `TryParse` method, the default is , which is a composite style that includes the , , and flags. For the `ParseExact` and `TryParseExact` methods, the default is ; the input string must correspond precisely to a particular custom date and time format string. + The parsing methods implicitly or explicitly use a enumeration value to determine which style elements (such as leading, trailing, or inner white space) can be present in the string to be parsed, and how to interpret the parsed string or any missing elements. If you don't provide a value when you call the `Parse` or `TryParse` method, the default is , which is a composite style that includes the , , and flags. For the `ParseExact` and `TryParseExact` methods, the default is ; the input string must correspond precisely to a particular custom date and time format string. The parsing methods also implicitly or explicitly use a object that defines the specific symbols and patterns that can occur in the string to be parsed. If you don't provide a object, the object for the current thread culture is used by default. For more information about parsing date and time strings, see the individual parsing methods, such as , , , and . diff --git a/xml/System.Globalization/EastAsianLunisolarCalendar.xml b/xml/System.Globalization/EastAsianLunisolarCalendar.xml index ff85f9bfd27f2..f822817954e94 100644 --- a/xml/System.Globalization/EastAsianLunisolarCalendar.xml +++ b/xml/System.Globalization/EastAsianLunisolarCalendar.xml @@ -91,7 +91,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -151,7 +151,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/GregorianCalendar.xml b/xml/System.Globalization/GregorianCalendar.xml index 5cb8ad4e87065..2cdc2b406379e 100644 --- a/xml/System.Globalization/GregorianCalendar.xml +++ b/xml/System.Globalization/GregorianCalendar.xml @@ -191,7 +191,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -260,7 +260,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/HebrewCalendar.xml b/xml/System.Globalization/HebrewCalendar.xml index 4e4f83001608f..c55559ada4838 100644 --- a/xml/System.Globalization/HebrewCalendar.xml +++ b/xml/System.Globalization/HebrewCalendar.xml @@ -154,7 +154,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -225,7 +225,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/HijriCalendar.xml b/xml/System.Globalization/HijriCalendar.xml index ac383bfd9940f..1304664b3a58d 100644 --- a/xml/System.Globalization/HijriCalendar.xml +++ b/xml/System.Globalization/HijriCalendar.xml @@ -142,7 +142,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -211,7 +211,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/JapaneseCalendar.xml b/xml/System.Globalization/JapaneseCalendar.xml index 2afff73d4f41a..e3e0864348e76 100644 --- a/xml/System.Globalization/JapaneseCalendar.xml +++ b/xml/System.Globalization/JapaneseCalendar.xml @@ -156,7 +156,7 @@ If `months` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -225,7 +225,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/JulianCalendar.xml b/xml/System.Globalization/JulianCalendar.xml index fccce90c80aca..2d3bfc23c2d57 100644 --- a/xml/System.Globalization/JulianCalendar.xml +++ b/xml/System.Globalization/JulianCalendar.xml @@ -127,7 +127,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -196,7 +196,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/KoreanCalendar.xml b/xml/System.Globalization/KoreanCalendar.xml index 079ecfc0131b3..7a2d961155627 100644 --- a/xml/System.Globalization/KoreanCalendar.xml +++ b/xml/System.Globalization/KoreanCalendar.xml @@ -143,7 +143,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -211,7 +211,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/PersianCalendar.xml b/xml/System.Globalization/PersianCalendar.xml index eb6558657727f..b4323d10bfa50 100644 --- a/xml/System.Globalization/PersianCalendar.xml +++ b/xml/System.Globalization/PersianCalendar.xml @@ -153,7 +153,7 @@ property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -211,7 +211,7 @@ property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/SortKey.xml b/xml/System.Globalization/SortKey.xml index 78095d048d060..721fa899dd405 100644 --- a/xml/System.Globalization/SortKey.xml +++ b/xml/System.Globalization/SortKey.xml @@ -32,7 +32,7 @@ ## Remarks A culture-sensitive comparison of two strings depends on each character in the strings having several categories of sort weights, including script, alphabetic, case, and diacritic weights. A sort key serves as the repository of these weights for a particular string. - The method returns an instance of the class that reflects the culture-sensitive mapping of characters in a specified string. The value of a object is its key data, which is returned by the property. This key data consists of a series of bytes that encode the string, culture-specific sorting rules, and user-specified comparison options. A comparison using sort keys consists of a bitwise comparison of the corresponding key data in each sort key. For example, if you create a sort key by calling the method with a value of , a string comparison operation that uses the sort key is case-insensitive. + The method returns an instance of the class that reflects the culture-sensitive mapping of characters in a specified string. The value of a object is its key data, which is returned by the property. This key data consists of a series of bytes that encode the string, culture-specific sorting rules, and user-specified comparison options. A comparison using sort keys consists of a bitwise comparison of the corresponding key data in each sort key. For example, if you create a sort key by calling the method with a value of , a string comparison operation that uses the sort key is case-insensitive. After you create a sort key for a string, you compare sort keys by calling the static method. This method performs a simple byte-by-byte comparison, so it is much faster than the or method. diff --git a/xml/System.Globalization/StringInfo.xml b/xml/System.Globalization/StringInfo.xml index 7f6fe9f5dc439..42e03e639f4b9 100644 --- a/xml/System.Globalization/StringInfo.xml +++ b/xml/System.Globalization/StringInfo.xml @@ -597,7 +597,7 @@ ## Remarks When a object is instantiated, its property is set to one of the following values: -- if the default is called. You should then use the property to assign the string that this object rperesents. +- if the default is called. You should then use the property to assign the string that this object rperesents. - The string supplied as the `value` argument to the constructor. diff --git a/xml/System.Globalization/TaiwanCalendar.xml b/xml/System.Globalization/TaiwanCalendar.xml index 1b94691bf8bf0..8739333ea4de1 100644 --- a/xml/System.Globalization/TaiwanCalendar.xml +++ b/xml/System.Globalization/TaiwanCalendar.xml @@ -144,7 +144,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -213,7 +213,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/ThaiBuddhistCalendar.xml b/xml/System.Globalization/ThaiBuddhistCalendar.xml index d98c1dd1fbb8f..5359020884787 100644 --- a/xml/System.Globalization/ThaiBuddhistCalendar.xml +++ b/xml/System.Globalization/ThaiBuddhistCalendar.xml @@ -142,7 +142,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -211,7 +211,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.Globalization/UmAlQuraCalendar.xml b/xml/System.Globalization/UmAlQuraCalendar.xml index 3b8a1b869854c..10248da3391ca 100644 --- a/xml/System.Globalization/UmAlQuraCalendar.xml +++ b/xml/System.Globalization/UmAlQuraCalendar.xml @@ -116,7 +116,7 @@ If the value of the `months` parameter is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#5)] [!code-vb[System.Globalization.Calendar.AddMethods#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#5)] @@ -184,7 +184,7 @@ If `years` is negative, the resulting is earlier than the specified . - The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. + The property of the returned value always equals . You can preserve the property of the `time` parameter by calling the method, as the following example shows. [!code-csharp[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/cs/add1.cs#8)] [!code-vb[System.Globalization.Calendar.AddMethods#8](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.calendar.addmethods/vb/add1.vb#8)] diff --git a/xml/System.IO.Compression/ZipFile.xml b/xml/System.IO.Compression/ZipFile.xml index 46a388323d0df..266f424ac893d 100644 --- a/xml/System.IO.Compression/ZipFile.xml +++ b/xml/System.IO.Compression/ZipFile.xml @@ -575,9 +575,9 @@ ## Remarks When you set the `mode` parameter to , the archive is opened with from the enumeration as the file mode value. If the archive does not exist, a exception is thrown. Setting the `mode` parameter to is equivalent to calling the method. - When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive already exists, an is thrown. + When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive already exists, an is thrown. - When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive exists, it is opened. The existing entries can be modified and new entries can be created. If the archive does not exist, a new archive is created; however, creating a zip archive in mode is not as efficient as creating it in mode. + When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive exists, it is opened. The existing entries can be modified and new entries can be created. If the archive does not exist, a new archive is created; however, creating a zip archive in mode is not as efficient as creating it in mode. @@ -663,11 +663,11 @@ , the archive is opened with as the file mode value. If the archive does not exist, a exception is thrown. Setting the `mode` parameter to is equivalent to calling the method. + When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive does not exist, a exception is thrown. Setting the `mode` parameter to is equivalent to calling the method. - When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive already exists, an is thrown. + When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive already exists, an is thrown. - When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive exists, it is opened. The existing entries can be modified and new entries can be created. If the archive does not exist, a new archive is created; however, creating a zip archive in mode is not as efficient as creating it in mode. + When you set the `mode` parameter to , the archive is opened with as the file mode value. If the archive exists, it is opened. The existing entries can be modified and new entries can be created. If the archive does not exist, a new archive is created; however, creating a zip archive in mode is not as efficient as creating it in mode. When you open a zip archive file for reading and `entryNameEncoding` is set to `null`, entry names are decoded according to the following rules: @@ -765,7 +765,7 @@ method and setting the `mode` parameter to . The archive is opened with as the file mode value. If the archive does not exist, a exception is thrown. + This method is equivalent to calling the method and setting the `mode` parameter to . The archive is opened with as the file mode value. If the archive does not exist, a exception is thrown. diff --git a/xml/System.IO.IsolatedStorage/IsolatedStorageFile.xml b/xml/System.IO.IsolatedStorage/IsolatedStorageFile.xml index a94c0cd9c866c..1cdfc69a4a14c 100644 --- a/xml/System.IO.IsolatedStorage/IsolatedStorageFile.xml +++ b/xml/System.IO.IsolatedStorage/IsolatedStorageFile.xml @@ -1326,7 +1326,7 @@ ## Remarks > [!NOTE] -> If the `scope` parameter is and the application domain in which the assembly is installed does not have , the method will return an object without a quota. Later attempts to create an object using the object that does not have a quota will fail with an . +> If the `scope` parameter is and the application domain in which the assembly is installed does not have , the method will return an object without a quota. Later attempts to create an object using the object that does not have a quota will fail with an . ]]> diff --git a/xml/System.IO.IsolatedStorage/IsolatedStorageSecurityState.xml b/xml/System.IO.IsolatedStorage/IsolatedStorageSecurityState.xml index 04235e7c0f3da..8dd3275fbc275 100644 --- a/xml/System.IO.IsolatedStorage/IsolatedStorageSecurityState.xml +++ b/xml/System.IO.IsolatedStorage/IsolatedStorageSecurityState.xml @@ -64,7 +64,7 @@ enumeration value, which is the only value in the enumeration. + This property is equal to the enumeration value, which is the only value in the enumeration. ]]> diff --git a/xml/System.IO.Packaging/Package.xml b/xml/System.IO.Packaging/Package.xml index 7ed0b2fe0b2ee..abb8c7253bf09 100644 --- a/xml/System.IO.Packaging/Package.xml +++ b/xml/System.IO.Packaging/Package.xml @@ -231,7 +231,7 @@ ## Remarks initializes an empty for the new part. The method can be used to obtain a reference to the stream instance associated with the part. - The part is . + The part is . For additional information about package parts, see section 1.1 in the Open Packaging Conventions (OPC) specification available for download at [http://go.microsoft.com/fwlink/?LinkID=71255](http://go.microsoft.com/fwlink/?LinkID=71255). diff --git a/xml/System.IO.Pipes/NamedPipeServerStream.xml b/xml/System.IO.Pipes/NamedPipeServerStream.xml index c7da4f71c17ff..3814633e423fa 100644 --- a/xml/System.IO.Pipes/NamedPipeServerStream.xml +++ b/xml/System.IO.Pipes/NamedPipeServerStream.xml @@ -1200,7 +1200,7 @@ ## Remarks Because it is asynchronous, this method returns immediately, but the connection process is completed when the client calls or . - Cancellation requests using the cancellation token will only work if the object was created with a pipe option value of or if the cancellation occurs before the method is called. + Cancellation requests using the cancellation token will only work if the object was created with a pipe option value of or if the cancellation occurs before the method is called. ]]> diff --git a/xml/System.IO.Ports/SerialPort.xml b/xml/System.IO.Ports/SerialPort.xml index 95da5f9e6484a..5858ff4b72cf9 100644 --- a/xml/System.IO.Ports/SerialPort.xml +++ b/xml/System.IO.Ports/SerialPort.xml @@ -2108,7 +2108,7 @@ ## Remarks The default value for is . - The value is not supported. + The value is not supported. diff --git a/xml/System.IO/DirectoryInfo.xml b/xml/System.IO/DirectoryInfo.xml index f7299cf2fe956..4ce8643f30d3c 100644 --- a/xml/System.IO/DirectoryInfo.xml +++ b/xml/System.IO/DirectoryInfo.xml @@ -1293,7 +1293,7 @@ method overload and specifying the access control sections | | (`Or``Or` in Visual Basic). + Calling this method overload is equivalent to calling the method overload and specifying the access control sections | | (`Or``Or` in Visual Basic). Use the method to retrieve the access control list (ACL) entries for the current file. diff --git a/xml/System.IO/TextWriter.xml b/xml/System.IO/TextWriter.xml index 25c70dffc69cb..e9029676d60b2 100644 --- a/xml/System.IO/TextWriter.xml +++ b/xml/System.IO/TextWriter.xml @@ -1268,7 +1268,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has only a single object in its parameter list, the value of *index* must always be 0. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has only a single object in its parameter list, the value of *index* must always be 0. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -1361,7 +1361,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has an array in its parameter list, the value of *index* must always be less than the length of the array. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has an array in its parameter list, the value of *index* must always be less than the length of the array. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -1506,7 +1506,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has two objects in its parameter list, the value of *index* must always be 0 or 1. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has two objects in its parameter list, the value of *index* must always be 0 or 1. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -1596,7 +1596,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has three objects in its parameter list, the value of *index* must always be 0, 1, or 2. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has three objects in its parameter list, the value of *index* must always be 0, 1, or 2. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -2530,7 +2530,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has only a single object in its parameter list, the value of *index* must always be 0. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has only a single object in its parameter list, the value of *index* must always be 0. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -2625,7 +2625,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has an array in its parameter list, the value of *index* must always be less than the length of the array. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has an array in its parameter list, the value of *index* must always be less than the length of the array. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -2773,7 +2773,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has two objects in its parameter list, the value of *index* must always be 0 or 1. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has two objects in its parameter list, the value of *index* must always be 0 or 1. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| @@ -2865,7 +2865,7 @@ |Element|Description| |-------------|-----------------| -|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has three objects in its parameter list, the value of *index* must always be 0, 1, or 2. If there is no parameter in the *index* position, a is thrown.| +|index|The zero-based position in the parameter list of the object to be formatted. If the object specified by *index* is `null`, the format item is replaced by . Because this overload has three objects in its parameter list, the value of *index* must always be 0, 1, or 2. If there is no parameter in the *index* position, a is thrown.| |,*length*|The minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned.| |:*formatString*|A standard or custom format string that is supported by the object to be formatted. Possible values for *formatString* are the same as the values supported by the object's `ToString(string format)` method. If *formatString* is not specified and the object to be formatted implements the interface, `null` is passed as the value of the `format` parameter that is used as the format string.| diff --git a/xml/System.IdentityModel.Services/CookieHandler.xml b/xml/System.IdentityModel.Services/CookieHandler.xml index 783c97b8f9a1d..636cd596844c0 100644 --- a/xml/System.IdentityModel.Services/CookieHandler.xml +++ b/xml/System.IdentityModel.Services/CookieHandler.xml @@ -607,7 +607,7 @@ . If the `isPersistent` parameter is `true`, the cookie expiration time is set to the value of the property if it is not `null` or, if the property is `null`, the expiration time is set to the value of the `tokenExpirationTime` parameter. + If the `isPersistent` parameter is `false`, the cookie expiration time is set to . If the `isPersistent` parameter is `true`, the cookie expiration time is set to the value of the property if it is not `null` or, if the property is `null`, the expiration time is set to the value of the `tokenExpirationTime` parameter. The cookie name, domain and path are specified by the , , and properties. The request is specified by . Whether the cookie should be sent only over SSL is specified by the property and whether the cookie should be hidden from client-side scripts is specified by the property. diff --git a/xml/System.Management/ConnectionOptions.xml b/xml/System.Management/ConnectionOptions.xml index 3ebf5898ebcf5..21d3b28dfd016 100644 --- a/xml/System.Management/ConnectionOptions.xml +++ b/xml/System.Management/ConnectionOptions.xml @@ -162,10 +162,10 @@ if the client requires all communication to be encrypted. + On Windows 2000 and below, the WMI service will request Connect level authentication, while on Windows XP and higher it will request Packet level authentication. If the client requires a specific authentication setting, this property can be used to control the authentication level on this particular connection. For example, the property can be set to if the client requires all communication to be encrypted. ## Property Value - The COM authentication level to be used for operations in this connection. The default value is , which indicates that the client will use the authentication level requested by the server, according to the standard DCOM negotiation process. + The COM authentication level to be used for operations in this connection. The default value is , which indicates that the client will use the authentication level requested by the server, according to the standard DCOM negotiation process. ## .NET Framework Security Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see [Using Libraries from Partially Trusted Code](~/docs/framework/misc/using-libraries-from-partially-trusted-code.md). @@ -310,10 +310,10 @@ NTLMDOMAIN: setting is advantageous when the provider is a trusted application or service. It eliminates the need for the provider to perform client identity and access checks for the requested operations. However, if for some reason the provider cannot be trusted, allowing it to impersonate the client may constitute a security threat. In such cases, we recommend that this property be set by the client to a lower value, such as . Note that this may cause failure of the provider to perform the requested operations, for lack of sufficient permissions or inability to perform access checks. + The setting is advantageous when the provider is a trusted application or service. It eliminates the need for the provider to perform client identity and access checks for the requested operations. However, if for some reason the provider cannot be trusted, allowing it to impersonate the client may constitute a security threat. In such cases, we recommend that this property be set by the client to a lower value, such as . Note that this may cause failure of the provider to perform the requested operations, for lack of sufficient permissions or inability to perform access checks. ## Property Value - The COM impersonation level to be used for operations in this connection. The default value is , which indicates that the WMI provider can impersonate the client when performing the requested operations in this connection. + The COM impersonation level to be used for operations in this connection. The default value is , which indicates that the WMI provider can impersonate the client when performing the requested operations in this connection. ## .NET Framework Security Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see [Using Libraries from Partially Trusted Code](~/docs/framework/misc/using-libraries-from-partially-trusted-code.md). diff --git a/xml/System.Media/SoundPlayer.xml b/xml/System.Media/SoundPlayer.xml index 24b64503be533..2ba5246163913 100644 --- a/xml/System.Media/SoundPlayer.xml +++ b/xml/System.Media/SoundPlayer.xml @@ -557,7 +557,7 @@ when the property is set to a . + This property is set to when the property is set to a . diff --git a/xml/System.Messaging/HashAlgorithm.xml b/xml/System.Messaging/HashAlgorithm.xml index f70c6002a2925..4d0c5549b1210 100644 --- a/xml/System.Messaging/HashAlgorithm.xml +++ b/xml/System.Messaging/HashAlgorithm.xml @@ -134,7 +134,7 @@ System.Messaging.HashAlgorithm - To be added. + SHA-256 hashing algorithm. @@ -150,7 +150,7 @@ System.Messaging.HashAlgorithm - To be added. + SHA-384 hashing algorithm. @@ -166,7 +166,7 @@ System.Messaging.HashAlgorithm - To be added. + SHA-512 hashing algorithm. diff --git a/xml/System.Messaging/MessageEnumerator.xml b/xml/System.Messaging/MessageEnumerator.xml index e13bb986ea055..92fd42d452d94 100644 --- a/xml/System.Messaging/MessageEnumerator.xml +++ b/xml/System.Messaging/MessageEnumerator.xml @@ -41,7 +41,7 @@ ## Examples - The following example gets a dynamic list of messages in a queue and counts all messages with the property set to . + The following example gets a dynamic list of messages in a queue and counts all messages with the property set to . [!code-cpp[MessageQueue.GetMessageEnumerator#1](~/samples/snippets/cpp/VS_Snippets_Remoting/MessageQueue.GetMessageEnumerator/CPP/mqgetmessageenumerator.cpp#1)] [!code-csharp[MessageQueue.GetMessageEnumerator#1](~/samples/snippets/csharp/VS_Snippets_Remoting/MessageQueue.GetMessageEnumerator/CS/mqgetmessageenumerator.cs#1)] diff --git a/xml/System.Messaging/MessageQueue.xml b/xml/System.Messaging/MessageQueue.xml index 168562f7af883..b333b262a5cef 100644 --- a/xml/System.Messaging/MessageQueue.xml +++ b/xml/System.Messaging/MessageQueue.xml @@ -2506,7 +2506,7 @@ myMessageQueue.Send("Text 2."); //Resources are re-acquired. ## Examples - The following code example gets a dynamic list of messages in a queue and counts all messages with the property set to . + The following code example gets a dynamic list of messages in a queue and counts all messages with the property set to . [!code-cpp[MessageQueue.GetMessageEnumerator#1](~/samples/snippets/cpp/VS_Snippets_Remoting/MessageQueue.GetMessageEnumerator/CPP/mqgetmessageenumerator.cpp#1)] [!code-csharp[MessageQueue.GetMessageEnumerator#1](~/samples/snippets/csharp/VS_Snippets_Remoting/MessageQueue.GetMessageEnumerator/CS/mqgetmessageenumerator.cs#1)] diff --git a/xml/System.Net.Configuration/ServicePointManagerElement.xml b/xml/System.Net.Configuration/ServicePointManagerElement.xml index 5c67d9314133d..dc0fffe65372a 100644 --- a/xml/System.Net.Configuration/ServicePointManagerElement.xml +++ b/xml/System.Net.Configuration/ServicePointManagerElement.xml @@ -174,7 +174,7 @@ property can require, allow, or prevent encryption. The will be applied to an SSL/TLS session. The use of the Null cipher is required when the encryption policy is set to . + The property can require, allow, or prevent encryption. The will be applied to an SSL/TLS session. The use of the Null cipher is required when the encryption policy is set to . ]]> diff --git a/xml/System.Net.Mail/Attachment.xml b/xml/System.Net.Mail/Attachment.xml index 12de9100b2b0c..b060938ee5593 100644 --- a/xml/System.Net.Mail/Attachment.xml +++ b/xml/System.Net.Mail/Attachment.xml @@ -180,7 +180,7 @@ (""), the for this attachment is constructed with the property set to `name`. The property is set to . + If `name` is not `null` or equal to (""), the for this attachment is constructed with the property set to `name`. The property is set to . If the stream's property is `false`, the attachment and the that contains it are not reusable. You must supply a stream that can be searched in order to reuse an attachment. @@ -261,7 +261,7 @@ (""), the property for this attachment is set to . If `mediaType` is not `null` and is not a zero-length string, it is used to construct the associated with this attachment. + If `mediaType` is `null` or equal to (""), the property for this attachment is set to . If `mediaType` is not `null` and is not a zero-length string, it is used to construct the associated with this attachment. @@ -311,7 +311,7 @@ (""), it is used to construct the class associated with this attachment. + If `mediaType` is not `null` or equal to (""), it is used to construct the class associated with this attachment. If `mediaType` and `name` both contain information, the value specified in `name` is used. The property is set to . diff --git a/xml/System.Net.Mail/MailAddress.xml b/xml/System.Net.Mail/MailAddress.xml index 796b60df54c48..e0072313b7437 100644 --- a/xml/System.Net.Mail/MailAddress.xml +++ b/xml/System.Net.Mail/MailAddress.xml @@ -188,7 +188,7 @@ The following code example demonstrates sending an e-mail message by using the < If `displayName` contains non-ASCII characters, the iso-8859-1 character set is used for the `displayName` encoding. Encoding non-ASCII characters is discussed in RFC 1522, which is available at [http://www.ietf.org](http://www.ietf.org). - If `address` contains a display name, and `displayName` is not `null` and is not equal to , `displayName` overrides the value specified in `address`. + If `address` contains a display name, and `displayName` is not `null` and is not equal to , `displayName` overrides the value specified in `address`. @@ -251,7 +251,7 @@ The following code example demonstrates sending an e-mail message by using the < ## Remarks Leading and trailing white space in the display name is preserved. - If `address` contains a display name, and `displayName` is not `null` and is not equal to , `displayName` overrides the value specified in `address`. + If `address` contains a display name, and `displayName` is not `null` and is not equal to , `displayName` overrides the value specified in `address`. The method does not check if the `displayName` parameter is valid. This method removes surrounding quotes not displayed by the property. Quotes will be added before transmission, except where or is specified in the `displayNameEncoding` parameter. The encoding specified in the `displayNameEncoding` parameter will be applied to the property before transmission or is specified in the `displayNameEncoding` parameter. is the default encoding if none is specified. diff --git a/xml/System.Net.Mime/ContentType.xml b/xml/System.Net.Mime/ContentType.xml index 8e48923e69b94..9d49e7e7e7618 100644 --- a/xml/System.Net.Mime/ContentType.xml +++ b/xml/System.Net.Mime/ContentType.xml @@ -160,7 +160,7 @@ `content-type: multipart/mixed; boundary=-----boundary---0` - Set this property to `null` or to remove the boundary information from the header. + Set this property to `null` or to remove the boundary information from the header. The syntax of the Content-Type header is described in RFC 2045 Section 5.1. An in-depth discussion of the boundary parameter is contained in RFC 2046 Section 5.1.1. These RFCs are available at [http://www.ietf.org](http://www.ietf.org/). @@ -208,7 +208,7 @@ `content-type: application/x-myType; charset=us-ascii` - Set this property to `null` or to remove the charset information from the header. + Set this property to `null` or to remove the charset information from the header. A grammar that details the syntax of the Content-Type header is described in RFC 2045 Section 5.1. An in-depth discussion of the charset parameter is contained in RFC 2046 Section 4.1.2. These RFCs are available at [http://www.ietf.org](http://www.ietf.org/). @@ -316,7 +316,7 @@ `content-type: application/x-myType; name=data.xyz` - Set this property to `null` or to remove the name information from the header. + Set this property to `null` or to remove the name information from the header. The syntax of the Content-Type header is described in RFC 2045 Section 5.1. RFC 2046 provides detailed information on MIME media types. These RFCs are available at [http://www.ietf.org](http://www.ietf.org/). diff --git a/xml/System.Net.NetworkInformation/NetworkInformationPermission.xml b/xml/System.Net.NetworkInformation/NetworkInformationPermission.xml index a4fc9622ae482..c079795b9fd62 100644 --- a/xml/System.Net.NetworkInformation/NetworkInformationPermission.xml +++ b/xml/System.Net.NetworkInformation/NetworkInformationPermission.xml @@ -144,7 +144,7 @@ created with is given | access. A created with is given access. + A created with is given | access. A created with is given access. diff --git a/xml/System.Net.Security/SslStream.xml b/xml/System.Net.Security/SslStream.xml index 3690f7dfe5744..61f2c4c8d3a67 100644 --- a/xml/System.Net.Security/SslStream.xml +++ b/xml/System.Net.Security/SslStream.xml @@ -126,9 +126,9 @@ defaults to for the instance that is constructed. + If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. - The use of the Null cipher is required when the encryption policy is set to . + The use of the Null cipher is required when the encryption policy is set to . ]]> @@ -179,9 +179,9 @@ ## Remarks When you specify `true` for the `leaveStreamOpen` parameter, closing the has no effect on the `innerStream` stream; you must explicitly close `innerStream` when you no longer need it. - If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. + If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. - The use of the Null cipher is required when the encryption policy is set to . + The use of the Null cipher is required when the encryption policy is set to . @@ -246,9 +246,9 @@ The security protocol and cryptographic algorithms are already selected when the `userCertificateValidationCallback` delegate's method is invoked. You can use the method to determine whether the selected cryptographic algorithms and strengths are sufficient for your application. If not, the method should return `false` to prevent the from being created. - If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. + If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. - The use of the Null cipher is required when the encryption policy is set to . + The use of the Null cipher is required when the encryption policy is set to . > [!NOTE] > The Framework caches SSL sessions as they are created and attempts to reuse a cached session for a new request, if possible. When attempting to reuse an SSL session, the Framework uses the first element of (if there is one), or tries to reuse an anonymous sessions if is empty. @@ -323,9 +323,9 @@ The `userCertificateSelectionCallback` delegate is useful when your application has multiple certificates and must dynamically choose a certificate. Certificates in the "MY" store are passed to the method invoked by the delegate. - If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. + If a value is not specified in the configuration file for encryptionpolicy, the defaults to for the instance that is constructed. - The use of the Null cipher is required when the encryption policy is set to . + The use of the Null cipher is required when the encryption policy is set to . > [!NOTE] > The Framework caches SSL sessions as they are created and attempts to reuse a cached session for a new request, if possible. When attempting to reuse an SSL session, the Framework uses the first element of P:System.Net.HttpWebRequest.ClientCertificates (if there is one), or tries to reuse an anonymous sessions if P:System.Net.HttpWebRequest.ClientCertificates is empty. @@ -396,7 +396,7 @@ . + The use of the Null cipher is required when the `encryptionPolicy` parameter is set to . ]]> diff --git a/xml/System.Net.Sockets/MulticastOption.xml b/xml/System.Net.Sockets/MulticastOption.xml index 744b99a96a256..04e80727340f6 100644 --- a/xml/System.Net.Sockets/MulticastOption.xml +++ b/xml/System.Net.Sockets/MulticastOption.xml @@ -30,7 +30,7 @@ |Parameter|Value| |---------------|-----------| -|socketOptionLevel|| +|socketOptionLevel|| |socketOptionName|| |object|| diff --git a/xml/System.Net.Sockets/Socket.xml b/xml/System.Net.Sockets/Socket.xml index 964a6fcc27a45..868e8005dd75b 100644 --- a/xml/System.Net.Sockets/Socket.xml +++ b/xml/System.Net.Sockets/Socket.xml @@ -2179,7 +2179,7 @@ If you are using a connectionless protocol, you do not need to establish a default remote host with the or method prior to calling . You only need to do this if you intend to call the method. If you do call the or method prior to calling , the `remoteEP` parameter will override the specified default remote host for that send operation only. You are also not required to call the method. In this case, the underlying service provider will assign the most appropriate local network address and port number. Use a port number of zero if you want the underlying service provider to select a free port. If you need to identify the assigned local network address and port number, you can use the property after the method successfully completes. - If you want to send data to a broadcast address, you must first call the method and set the socket option to . -You must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . + If you want to send data to a broadcast address, you must first call the method and set the socket option to . -You must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . If you specify the flag as the `socketflags` parameter, the data you are sending will not be routed. @@ -2530,7 +2530,7 @@ ## Remarks If you are using a connection-oriented protocol such as TCP, the method synchronously establishes a network connection between and the specified remote endpoint. If you are using a connectionless protocol, establishes a default remote host. After you call , you can send data to the remote device with the method, or receive data from the remote device with the method. - If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call , any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. + If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call , any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. The method will block, unless you specifically set the property to `false` prior to calling . If you are using a connection-oriented protocol like TCP and you do disable blocking, will throw a because it needs time to make the connection. Connectionless protocols will not throw an exception because they simply establish a default remote host. You can use to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented , but has not yet completed successfully. Use the method to determine when the is finished connecting. @@ -2599,7 +2599,7 @@ ## Remarks If you are using a connection-oriented protocol such as TCP, the method synchronously establishes a network connection between and the specified remote endpoint. If you are using a connectionless protocol, establishes a default remote host. After you call you can send data to the remote device with the method, or receive data from the remote device with the method. - If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. + If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. method will block, unless you specifically set the property to `false` prior to calling . If you are using a connection-oriented protocol like TCP and you do disable blocking, will throw a because it needs time to make the connection. Connectionless protocols will not throw an exception because they simply establish a default remote host. You can use to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented , but has not yet completed successfully. Use the method to determine when the is finished connecting. @@ -2668,7 +2668,7 @@ ## Remarks This method is typically used immediately after a call to , which can return multiple IP addresses for a single host. If you are using a connection-oriented protocol such as TCP, the method synchronously establishes a network connection between and the specified remote endpoint. If you are using a connectionless protocol, establishes a default remote host. After you call you can send data to the remote device with the method, or receive data from the remote device with the method. - If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. + If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. method will block, unless you specifically set the property to `false` prior to calling . If you are using a connection-oriented protocol like TCP and you do disable blocking, will throw a because it needs time to make the connection. Connectionless protocols will not throw an exception because they simply establish a default remote host. You can use to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented , but has not yet completed successfully. Use the method to determine when the is finished connecting. @@ -2737,7 +2737,7 @@ ## Remarks If you are using a connection-oriented protocol such as TCP, the method synchronously establishes a network connection between and the specified remote host. If you are using a connectionless protocol, establishes a default remote host. After you call you can send data to the remote device with the method, or receive data from the remote device with the method. - If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. + If you are using a connectionless protocol such as UDP, you do not have to call before sending and receiving data. You can use and to synchronously communicate with a remote host. If you do call any datagrams that arrive from an address other than the specified default will be discarded. If you want to set your default remote host to a broadcast address, you must first call the method and set the socket option to , or will throw a . If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. method will block, unless you specifically set the property to `false` prior to calling . If you are using a connection-oriented protocol like TCP and you do disable blocking, will throw a because it needs time to make the connection. Connectionless protocols will not throw an exception because they simply establish a default remote host. You can use to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. If the error returned WSAEWOULDBLOCK, the remote host connection has been initiated by a connection-oriented , but has not yet completed successfully. Use the method to determine when the is finished connecting. @@ -5108,7 +5108,7 @@ method will check the state of the . Specify for the `selectMode` parameter to determine if the is readable. Specify to determine if the is writable. Use to detect an error condition. will block execution until the specified time period, measured in `microseconds`, elapses. Set the `microSeconds` parameter to a negative integer if you would like to wait indefinitely for a response. If you want to check the status of multiple sockets, you might prefer to use the method. + The method will check the state of the . Specify for the `selectMode` parameter to determine if the is readable. Specify to determine if the is writable. Use to detect an error condition. will block execution until the specified time period, measured in `microseconds`, elapses. Set the `microSeconds` parameter to a negative integer if you would like to wait indefinitely for a response. If you want to check the status of multiple sockets, you might prefer to use the method. > [!NOTE] > If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. @@ -7633,7 +7633,7 @@ On Windows client editions, the method is optimized for minimum memory and resource utilization. - Use of the flag in the property on the `e` parameter can deliver significant performance benefits. If the thread initiating the method call is being used for heavy computations, it is possible, though unlikely, that APCs could be prevented from launching. Note that there is a difference between kernel and user-mode APCs. Kernel APCs launch when a thread is in a wait state. User-mode APCs launch when a thread is in an alertable wait state + Use of the flag in the property on the `e` parameter can deliver significant performance benefits. If the thread initiating the method call is being used for heavy computations, it is possible, though unlikely, that APCs could be prevented from launching. Note that there is a difference between kernel and user-mode APCs. Kernel APCs launch when a thread is in a wait state. User-mode APCs launch when a thread is in an alertable wait state ]]> @@ -7733,7 +7733,7 @@ Blocking sockets will block until the all of the bytes in the buffer are sent. Since a nonblocking completes immediately, it might not send all of the bytes in the `buffer`. It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends all of the bytes in the `buffer`. There is also no guarantee that the data you send will appear on the network immediately. To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. A successful completion of the method means that the underlying system has had room to buffer your data for a network send. - If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . + If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . > [!NOTE] > If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. @@ -7807,7 +7807,7 @@ Blocking sockets will block until the requested all of the bytes in the `buffer` are sent. Since a nonblocking completes immediately, it might not send all of the bytes in the `buffer`. It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends all of the bytes in the `buffer`. There is also no guarantee that the data you send will appear on the network immediately. To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. A successful completion of the method means that the underlying system has had room to buffer your data for a network send. - If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . + If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . > [!NOTE] > If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. @@ -7883,7 +7883,7 @@ Blocking sockets will block until the requested number of bytes are sent. Since a nonblocking completes immediately, it might not send all of the bytes requested in a single operation. It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. There is also no guarantee that the data you send will appear on the network immediately. To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. A successful completion of the method means that the underlying system has had room to buffer your data for a network send. - If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . + If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . > [!NOTE] > If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. @@ -7962,7 +7962,7 @@ Blocking sockets will block until the requested number of bytes are sent. Since a non-blocking completes immediately, it might not send all of the bytes requested in a single operation. It is your applications responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. There is also no guarantee that the data you send will appear on the network immediately. To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. A successful completion of the method means that the underlying system has had room to buffer your data for a network send. - If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . + If you are using a connectionless protocol in blocking mode, will block until the datagram is sent. If you want to send data to a broadcast address, you must first call the method and set the socket option to . You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . > [!NOTE] > If you receive a , use the property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. @@ -8068,7 +8068,7 @@ If you are using a connectionless protocol, you do not need to establish a default remote host with the , , or method prior to calling . You only need to do this if you intend to call the or methods. If you do call the , , or method prior to calling , the property will override the specified default remote host for that send operation only. You are also not required to call the method. In this case, the underlying service provider will assign the most appropriate local network IP address and port number. Use a port number of zero if you want the underlying service provider to select a free port. If you need to identify the assigned local network IP address and port number, you can use the property after the event is signaled and the associated delegates are called. - If you want to send data to a broadcast address, you must first call the method and set the socket option for to true. You must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . + If you want to send data to a broadcast address, you must first call the method and set the socket option for to true. You must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. If it does, the datagram will not be sent and will throw a . If you specify the DontRoute flag in the property, the data you are sending will not be routed. @@ -8172,7 +8172,7 @@ Listed below are the various options that can be set using this overload. These options are grouped by the appropriate value. If you intend to set any of these options, be sure to use the appropriate value for the `optionLevel` parameter. The option you choose to set must be specified in the `optionName` parameter. If you want to get the current value of any of the options listed, use the method. - options that can be set using this overload. + options that can be set using this overload. - @@ -8188,7 +8188,7 @@ - - options that can be set using this overload. + options that can be set using this overload. - @@ -8196,7 +8196,7 @@ - - options that can be set using this overload. + options that can be set using this overload. - @@ -8204,7 +8204,7 @@ - - options that can be set using this overload. + options that can be set using this overload. - @@ -8326,7 +8326,7 @@ Listed below are the various options that can be set using this overload. These options are grouped by the appropriate . If you intend to set any of these options, be sure to use the appropriate for the `optionLevel` parameter. The option you choose to set must be specified in the `optionName` parameter. If you want to get the current value of any of the options listed, use the method. - options that can be set using this overload. + options that can be set using this overload. - @@ -8352,7 +8352,7 @@ - - options that can be set using this overload. + options that can be set using this overload. - @@ -8370,7 +8370,7 @@ - - options that can be set using this overload. + options that can be set using this overload. - @@ -8378,13 +8378,13 @@ - - options that can be set using this overload. + options that can be set using this overload. - - - options that can be set using this overload. + options that can be set using this overload. - diff --git a/xml/System.Net.Sockets/TcpListener.xml b/xml/System.Net.Sockets/TcpListener.xml index f858a5257ee21..378cd5a54d4f2 100644 --- a/xml/System.Net.Sockets/TcpListener.xml +++ b/xml/System.Net.Sockets/TcpListener.xml @@ -189,7 +189,7 @@ using the desired local address. Pass this to the constructor as the `localaddr` parameter. If you do not care which local address is assigned, specify for the `localaddr` parameter, and the underlying service provider will assign the most appropriate network address. This might help simplify your application if you have multiple network interfaces. If you do not care which local port is used, you can specify 0 for the port number. In this case, the service provider will assign an available port number between 1024 and 5000. If you use this approach, you can discover what local network address and port number has been assigned by using the property. + This constructor allows you to specify the local IP address and port number on which to listen for incoming connection attempts. Before calling this constructor you must first create an using the desired local address. Pass this to the constructor as the `localaddr` parameter. If you do not care which local address is assigned, specify for the `localaddr` parameter, and the underlying service provider will assign the most appropriate network address. This might help simplify your application if you have multiple network interfaces. If you do not care which local port is used, you can specify 0 for the port number. In this case, the service provider will assign an available port number between 1024 and 5000. If you use this approach, you can discover what local network address and port number has been assigned by using the property. Call the method to begin listening for incoming connection attempts. diff --git a/xml/System.Net.Sockets/UdpClient.xml b/xml/System.Net.Sockets/UdpClient.xml index 1bc5ad6d85550..bf5fa4ac52887 100644 --- a/xml/System.Net.Sockets/UdpClient.xml +++ b/xml/System.Net.Sockets/UdpClient.xml @@ -853,7 +853,7 @@ Establishing a default remote host is optional. Specifying a default remote host limits you to that host only. If you want to send datagrams to a different remote host, you must make another call to the method or create another without a default remote host. If you have established a default remote host and you also provide a remote host in your call to the method, will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. - If you call the method, any datagrams that arrive from an address other than the specified default will be discarded. You cannot set the default remote host to a broadcast address using this method unless you inherit from , use the Client method to obtain the underlying , and set the socket option to . + If you call the method, any datagrams that arrive from an address other than the specified default will be discarded. You cannot set the default remote host to a broadcast address using this method unless you inherit from , use the Client method to obtain the underlying , and set the socket option to . You can however, broadcast data to the default broadcast address, 255.255.255.255, if you specify in your call to the method. If your application requires greater control over broadcast addresses, you can also revert to using the class. @@ -914,7 +914,7 @@ Establishing a default remote host is optional. Specifying a default remote host limits you to that host only. If you want to send datagrams to a different remote host, you must make another call to the method or create another without a default remote host. If you have established a default remote host and you also provide a remote host in your call to the method, will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. - If you call the method, any datagrams that arrive from an address other than the specified default will be discarded. You cannot set the default remote host to a broadcast address using this method unless you inherit from , use the client method to obtain the underlying , and set the socket option to . + If you call the method, any datagrams that arrive from an address other than the specified default will be discarded. You cannot set the default remote host to a broadcast address using this method unless you inherit from , use the client method to obtain the underlying , and set the socket option to . You can however, broadcast data to the default broadcast address, 255.255.255.255, if you specify in your call to the method. If your application requires greater control over broadcast addresses, you can also revert to using the class. @@ -980,7 +980,7 @@ If you have established a default remote host and you also provide a remote host in your call to the method, will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. - If you call the method, any datagrams that arrive from an address other than the specified default will be discarded. You cannot set the default remote host to a broadcast address using this method unless you inherit from , use the client method to obtain the underlying , and set the socket option to . + If you call the method, any datagrams that arrive from an address other than the specified default will be discarded. You cannot set the default remote host to a broadcast address using this method unless you inherit from , use the client method to obtain the underlying , and set the socket option to . You can however, broadcast data to the default broadcast address, 255.255.255.255, if you specify in your call to the method. If your application requires greater control over broadcast addresses, you can also revert to using the class. @@ -1941,9 +1941,9 @@ method sends datagrams to the specified endpoint and returns the number of bytes successfully sent. Before calling this overload, you must first create an using the IP address and port number of the remote host to which your datagrams will be delivered. You can send datagrams to the default broadcast address, 255.255.255.255, by specifying for the property of the . After you have created this , pass it to the method as the `endPoint` parameter. + The method sends datagrams to the specified endpoint and returns the number of bytes successfully sent. Before calling this overload, you must first create an using the IP address and port number of the remote host to which your datagrams will be delivered. You can send datagrams to the default broadcast address, 255.255.255.255, by specifying for the property of the . After you have created this , pass it to the method as the `endPoint` parameter. - If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. + If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. > [!NOTE] > Do not provide an `endPoint` parameter to this method if you have already established a remote host with the method. If you do, the method will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. @@ -2008,7 +2008,7 @@ ## Remarks The method sends datagrams to the values specified by the `hostname` and `port` parameters and returns the number of bytes successfully sent. You can send datagrams to the default broadcast address by specifying "255.255.255.255" for the `hostname` parameter value. - If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. + If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. > [!NOTE] > Do not provide a host name or port number to this method if you have already established a remote host with the method. If you do, the method will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. @@ -2115,9 +2115,9 @@ using the IP address and port number of the remote host to which your datagrams will be delivered. You can send datagrams to the default broadcast address, 255.255.255.255, by specifying for the property of the . After you have created this , pass it to this method as the `endPoint` parameter. + This method sends datagrams to the specified endpoint. Before calling this overload, you must first create an using the IP address and port number of the remote host to which your datagrams will be delivered. You can send datagrams to the default broadcast address, 255.255.255.255, by specifying for the property of the . After you have created this , pass it to this method as the `endPoint` parameter. - If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. + If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. > [!WARNING] > Do not provide an `endPoint` parameter to this method if you have already established a remote host with the method. If you do, this method will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. @@ -2174,7 +2174,7 @@ ## Remarks This method sends datagrams to the values specified by the `hostname` and `port` parameters. You can send datagrams to the default broadcast address by specifying "255.255.255.255" for the `hostname` parameter value. - If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. + If you want to send datagrams to any other broadcast address, use the method to obtain the underlying , and set the socket option to . You can also revert to using the class. > [!WARNING] > Do not provide a host name or port number to this method if you have already established a remote host with the method. If you do, this method will throw a . If you receive a , use to obtain the specific error code. Once you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation in MSDN for a detailed description of the error. diff --git a/xml/System.Net/HttpContinueDelegate.xml b/xml/System.Net/HttpContinueDelegate.xml index 6dc6bbd2f8f94..54399a1c82249 100644 --- a/xml/System.Net/HttpContinueDelegate.xml +++ b/xml/System.Net/HttpContinueDelegate.xml @@ -33,12 +33,12 @@ to specify the callback method to be called when an HTTP 100-continue response is received from the server. When set, the delegate is called whenever the first protocol response of type is received. This is a change from the behavior of the version 1.1 Framework. + Use to specify the callback method to be called when an HTTP 100-continue response is received from the server. When set, the delegate is called whenever the first protocol response of type is received. This is a change from the behavior of the version 1.1 Framework. Your event handler must declare the same parameters as the . > [!NOTE] -> `StatusCode` is always . +> `StatusCode` is always . This is useful when the client wants to display the status of data being received from the server. diff --git a/xml/System.Net/ServicePointManager.xml b/xml/System.Net/ServicePointManager.xml index 93abb3fe201bc..40f3df4bb04a4 100644 --- a/xml/System.Net/ServicePointManager.xml +++ b/xml/System.Net/ServicePointManager.xml @@ -398,9 +398,9 @@ property defaults to . This is applied to an SSL/TLS session on this instance. + If a value is not specified in the configuration file, the property defaults to . This is applied to an SSL/TLS session on this instance. - The use of the Null cipher is required when the encryption policy is set to . + The use of the Null cipher is required when the encryption policy is set to . ]]> diff --git a/xml/System.Net/SocketPermission.xml b/xml/System.Net/SocketPermission.xml index 5263a57a7851f..676a4c1a8eb92 100644 --- a/xml/System.Net/SocketPermission.xml +++ b/xml/System.Net/SocketPermission.xml @@ -116,7 +116,7 @@ The `hostName` can be a DNS name, an IP address, or a specified IP subnet, such as 192.168.1.*. - The `portNumber` can be any valid port number defined by the transport, or . + The `portNumber` can be any valid port number defined by the transport, or . diff --git a/xml/System.Net/WebException.xml b/xml/System.Net/WebException.xml index 56d14ef7f0d70..ca940b1bb8bdf 100644 --- a/xml/System.Net/WebException.xml +++ b/xml/System.Net/WebException.xml @@ -369,7 +369,7 @@ sets the property to and provides the that contains the error message in the property of the that was thrown. The application can examine the to determine the actual error. + Some Internet protocols, such as HTTP, return otherwise valid responses indicating that an error has occurred at the protocol level. When the response to an Internet request indicates an error, sets the property to and provides the that contains the error message in the property of the that was thrown. The application can examine the to determine the actual error. diff --git a/xml/System.Net/WebPermission.xml b/xml/System.Net/WebPermission.xml index a8ee69f9f27d9..d3933ac7384ac 100644 --- a/xml/System.Net/WebPermission.xml +++ b/xml/System.Net/WebPermission.xml @@ -112,7 +112,7 @@ or , respectively yielding fully restricted or fully unrestricted access to all security variables. If you specify , then you can give access to individual URIs using . + The value of the `state` parameter is either or , respectively yielding fully restricted or fully unrestricted access to all security variables. If you specify , then you can give access to individual URIs using . @@ -199,7 +199,7 @@ This constructor initializes a and grants its target permission to either make a remote host connection or accept a remote host connection using the URI described by the `uriRegex` parameter. > [!NOTE] -> It is recommended that you create `uriRegex` using the , , and flags. +> It is recommended that you create `uriRegex` using the , , and flags. > [!NOTE] > A candidate URI string is checked against the list of relevant regular expressions ( or ) in two ways. First, the candidate URI string is checked against the appropriate list; then, if there is no match, the candidate URI string is converted into a and checked against the appropriate list. @@ -349,7 +349,7 @@ > Calling on an instance will have no effect as permission is granted to all URIs. > [!NOTE] -> It is recommended that you create `uriRegex` using the , , and flags. +> It is recommended that you create `uriRegex` using the , , and flags. > [!NOTE] > A candidate URI string is checked against the list of relevant regular expressions ( or ) in two ways. First, the candidate URI string is checked against the appropriate list; then, if there is no match, the candidate URI string is converted into a and checked against the appropriate list. diff --git a/xml/System.Numerics/BigInteger.xml b/xml/System.Numerics/BigInteger.xml index 66ea63268d702..c302104e13dba 100644 --- a/xml/System.Numerics/BigInteger.xml +++ b/xml/System.Numerics/BigInteger.xml @@ -16,11 +16,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.ValueType @@ -359,11 +354,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - @@ -411,11 +401,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - @@ -619,11 +604,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -1101,11 +1081,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -1265,11 +1240,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -1374,11 +1344,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Int32 @@ -1408,11 +1373,6 @@ netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -1515,11 +1475,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -1592,11 +1547,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -1713,13 +1663,13 @@ value Mod 2 = 0 |`value` parameter|`baseValue` parameter|Return value| |-----------------------|---------------------------|------------------| |`value` > 0|(0 < `baseValue` < 1) -or-(`baseValue` > 1)|logbaseValue(`value`)| -|`value` < 0|(any value)|| -|(any value)|`baseValue` < 0|| -|`value` != 1|`baseValue` = 0|| -|`value` != 1|`baseValue` = || -|(any value)|`baseValue` = || -|(any value)|`baseValue` = 1|| -|`value` = 0|0 < `baseValue` < 1|| +|`value` < 0|(any value)|| +|(any value)|`baseValue` < 0|| +|`value` != 1|`baseValue` = 0|| +|`value` != 1|`baseValue` = || +|(any value)|`baseValue` = || +|(any value)|`baseValue` = 1|| +|`value` = 0|0 < `baseValue` < 1|| |`value` = 0|`baseValue` > 1|| |`value` = 1|`baseValue` = 0|0| |`value` = 1|`baseValue` = |0| @@ -1773,8 +1723,8 @@ value Mod 2 = 0 |Sign of value parameter|Return value| |-----------------------------|------------------| |Positive|The base 10 log of `value`; that is, log10`value`.| -|Zero|.| -|Negative|.| +|Zero|.| +|Negative|.| To calculate the natural logarithm of a value, call the method. To calculate the logarithm of a number in another base, call the method. @@ -2102,11 +2052,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -2142,11 +2087,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -2351,11 +2291,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -2510,11 +2445,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -2934,11 +2864,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Double @@ -3045,11 +2970,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Int32 @@ -3102,11 +3022,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Int64 @@ -3610,11 +3525,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -3874,11 +3784,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -4571,11 +4476,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -4893,11 +4793,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -5157,11 +5052,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Boolean @@ -5319,11 +5209,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -5374,11 +5259,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -5520,11 +5400,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -5571,11 +5446,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -5623,11 +5493,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -5667,11 +5532,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -5699,7 +5559,7 @@ value Mod 2 = 0 |*digits*|A sequence of digits ranging from 0 to 9. Any leading zeros are ignored.| > [!NOTE] -> The string specified by the `value` parameter is interpreted by using the style. It cannot contain any group separators or decimal separator, and it cannot have a decimal portion. +> The string specified by the `value` parameter is interpreted by using the style. It cannot contain any group separators or decimal separator, and it cannot have a decimal portion. The `value` parameter is parsed by using the formatting information in a object that is initialized for the current system culture. For more information, see . To parse a string by using the formatting information of a specific culture, use the method. @@ -5763,7 +5623,7 @@ value Mod 2 = 0 [*ws*][*$*][*sign*][*digits*,]*digits*[.*fractional_digits*][E[*sign*]*exponential_digits*][*ws*] - If `style` includes , the `value` parameter may contain the following elements: + If `style` includes , the `value` parameter may contain the following elements: [*ws*]*hexdigits*[*ws*] @@ -5771,16 +5631,16 @@ value Mod 2 = 0 |Element|Description| |-------------|-----------------| -|*ws*|Optional white space. White space can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag.| -|*$*|A culture-specific currency symbol. Its position in the string is defined by the and properties of the current culture. The current culture's currency symbol can appear in `value` if `style` includes the flag.| -|*sign*|An optional sign. The sign can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag. Parentheses can be used in `value` to indicate a negative value if `style` includes the flag.| +|*ws*|Optional white space. White space can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag.| +|*$*|A culture-specific currency symbol. Its position in the string is defined by the and properties of the current culture. The current culture's currency symbol can appear in `value` if `style` includes the flag.| +|*sign*|An optional sign. The sign can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag. Parentheses can be used in `value` to indicate a negative value if `style` includes the flag.| |*digits*

*fractional_digits*

*exponential_digits*|A sequence of digits from 0 through 9. For *fractional_digits*, only the digit 0 is valid.| -|*,*|A culture-specific group separator symbol. The current culture's group separator can appear in `value` if `style` includes the flag.| -|*.*|A culture-specific decimal point symbol. The current culture's decimal point symbol can appear in `value` if `style` includes the flag. Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if *fractional_digits* includes any other digit, a is thrown.| -|E|The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| +|*,*|A culture-specific group separator symbol. The current culture's group separator can appear in `value` if `style` includes the flag.| +|*.*|A culture-specific decimal point symbol. The current culture's decimal point symbol can appear in `value` if `style` includes the flag. Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if *fractional_digits* includes any other digit, a is thrown.| +|E|The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| |*hexdigits*|A sequence of hexadecimal digits from 0 through f, or 0 through F.| - A string with digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be present, but are not required to be present, in the input string. The following table indicates how individual members affect the elements that may be present in `value`. + A string with digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be present, but are not required to be present, in the input string. The following table indicates how individual members affect the elements that may be present in `value`. |`NumberStyles` value|Elements permitted in `value` in addition to digits| |--------------------------|---------------------------------------------------------| @@ -5802,7 +5662,7 @@ value Mod 2 = 0 > [!IMPORTANT] > If you use the method to round-trip the string representation of a value that was output by the method, you should use the method with the "R" format specifier to generate the string representation of the value. Otherwise, the string representation of the preserves only the 50 most significant digits of the original value, and data may be lost when you use the method to restore the value. - Unlike the other values, which allow for, but do not require, the presence of particular style elements in `value`, the style value means that the individual numeric characters in `value` are always interpreted as hexadecimal characters. Valid hexadecimal characters are 0-9, A-F, and a-f. The only other flags that can be combined with the `style` parameter are and . (The enumeration includes a composite number style, , that includes both white-space flags.) + Unlike the other values, which allow for, but do not require, the presence of particular style elements in `value`, the style value means that the individual numeric characters in `value` are always interpreted as hexadecimal characters. Valid hexadecimal characters are 0-9, A-F, and a-f. The only other flags that can be combined with the `style` parameter are and . (The enumeration includes a composite number style, , that includes both white-space flags.) > [!NOTE] > If `value` is the string representation of a hexadecimal number, it cannot be preceded by any decoration (such as `0x` or `&h`) that differentiates it as a hexadecimal number. This causes the conversion to fail. @@ -5884,7 +5744,7 @@ value Mod 2 = 0 |*digits*|A sequence of digits ranging from 0 to 9. Any leading zeros are ignored.| > [!NOTE] -> The string specified by the `value` parameter is interpreted using the style. It cannot contain any group separators or decimal separator, and it cannot have a decimal portion. +> The string specified by the `value` parameter is interpreted using the style. It cannot contain any group separators or decimal separator, and it cannot have a decimal portion. > [!IMPORTANT] > If you use the method to round-trip the string representation of a value that was output by the method, you should use the method with the "R" format specifier to generate the string representation of the value. Otherwise, the string representation of the preserves only the 50 most significant digits of the original value, and data may be lost when you use the method to restore the value. @@ -5970,7 +5830,7 @@ value Mod 2 = 0 [*ws*][*$*][*sign*][*digits*,]*digits*[*.fractional_digits*][E[*sign*]*exponential_digits*][*ws*] - If `style` includes , the `value` parameter may include the following elements: + If `style` includes , the `value` parameter may include the following elements: [*ws*]*hexdigits*[*ws*] @@ -5978,16 +5838,16 @@ value Mod 2 = 0 |Element|Description| |-------------|-----------------| -|*ws*|Optional white space. White space can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag.| -|*$*|A culture-specific currency symbol. Its position in the string is defined by the and properties of the culture indicated by the `provider` parameter. The current culture's currency symbol can appear in `value` if `style` includes the flag.| -|*sign*|An optional sign. The sign can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag. Parentheses can be used in `value` to indicate a negative value if `style` includes the flag.| +|*ws*|Optional white space. White space can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag.| +|*$*|A culture-specific currency symbol. Its position in the string is defined by the and properties of the culture indicated by the `provider` parameter. The current culture's currency symbol can appear in `value` if `style` includes the flag.| +|*sign*|An optional sign. The sign can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag. Parentheses can be used in `value` to indicate a negative value if `style` includes the flag.| |*digits*

*fractional_digits*

*exponential_digits*|A sequence of digits from 0 through 9. For *fractional_digits*, only the digit 0 is valid.| -|*,*|A culture-specific group separator symbol. The group separator symbol of the culture specified by `provider` can appear in `value` if `style` includes the flag.| -|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture designated by `provider` can appear in `value` if `style` includes the flag. Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if *fractional_digits* includes any other digit, a is thrown.| -|E|The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| +|*,*|A culture-specific group separator symbol. The group separator symbol of the culture specified by `provider` can appear in `value` if `style` includes the flag.| +|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture designated by `provider` can appear in `value` if `style` includes the flag. Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if *fractional_digits* includes any other digit, a is thrown.| +|E|The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| |*hexdigits*|A sequence of hexadecimal digits from 0 through f, or 0 through F.| - A string with digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be present, but are not required to be present, in the input string. The following table indicates how individual members affect the elements that may be present in `value`. + A string with digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be present, but are not required to be present, in the input string. The following table indicates how individual members affect the elements that may be present in `value`. |NumberStyles value|Elements permitted in value in addition to digits| |------------------------|-------------------------------------------------------| @@ -6009,7 +5869,7 @@ value Mod 2 = 0 > [!IMPORTANT] > If you use the method to round-trip the string representation of a value that was output by the method, you should use the method with the "R" format specifier to generate the string representation of the value. Otherwise, the string representation of the preserves only the 50 most significant digits of the original value, and data may be lost when you use the method to restore the value. - Unlike the other values, which allow for but do not require the presence of particular style elements in `value`, the style value means that the individual numeric characters in `value` are always interpreted as hexadecimal characters. Valid hexadecimal characters are 0-9, A-F, and a-f. The only other flags that can be combined with the `style` parameter are and . (The enumeration includes a composite number style, , that includes both white-space flags.) + Unlike the other values, which allow for but do not require the presence of particular style elements in `value`, the style value means that the individual numeric characters in `value` are always interpreted as hexadecimal characters. Valid hexadecimal characters are 0-9, A-F, and a-f. The only other flags that can be combined with the `style` parameter are and . (The enumeration includes a composite number style, , that includes both white-space flags.) > [!NOTE] > If `value` is the string representation of a hexadecimal number, it cannot be preceded by any decoration (such as `0x` or `&h`) that differentiates it as a hexadecimal number. This causes the conversion to fail. @@ -6075,11 +5935,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger @@ -6187,11 +6042,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Int32 @@ -6371,11 +6221,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.String @@ -6665,7 +6510,7 @@ value Mod 2 = 0 > [!NOTE] > The string specified by the `value` parameter cannot contain any group separators or decimal separator, and it cannot have a decimal portion. - The `value` parameter is interpreted by using the style. In addition to the decimal digits, only leading and trailing spaces with a leading sign are allowed. To explicitly define the style elements with the culture-specific formatting information that can be present in `value`, call the method. + The `value` parameter is interpreted by using the style. In addition to the decimal digits, only leading and trailing spaces with a leading sign are allowed. To explicitly define the style elements with the culture-specific formatting information that can be present in `value`, call the method. The `value` parameter is parsed by using the formatting information in a object for the current culture. For more information, see . @@ -6739,18 +6584,18 @@ value Mod 2 = 0 |Element|Description| |-------------|-----------------| -|*ws*|Optional white space. White space can appear at the start of `value` if `style` includes the flag, or at the end of `value` if `style` includes the flag.| -|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the object returned by the method of the `provider` parameter. The currency symbol can appear in `value` if `style` includes the flag.| -|*sign*|An optional sign. The sign can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag. Parentheses can be used in `value` to indicate a negative value if `style` includes the flag.| +|*ws*|Optional white space. White space can appear at the start of `value` if `style` includes the flag, or at the end of `value` if `style` includes the flag.| +|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the object returned by the method of the `provider` parameter. The currency symbol can appear in `value` if `style` includes the flag.| +|*sign*|An optional sign. The sign can appear at the start of `value` if `style` includes the flag, and it can appear at the end of `value` if `style` includes the flag. Parentheses can be used in `value` to indicate a negative value if `style` includes the flag.| |*digits*|A sequence of digits from 0 through 9.| -|*,*|A culture-specific group separator. The group separator of the culture specified by `provider` can appear in `value` if `style` includes the flag.| -|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture specified by `provider` can appear in `value` if `style` includes the flag.| -|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `value` only if `style` includes the flag.| -|E|The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| -|*exponential_digits*|A sequence of digits from 0 through 9. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| +|*,*|A culture-specific group separator. The group separator of the culture specified by `provider` can appear in `value` if `style` includes the flag.| +|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture specified by `provider` can appear in `value` if `style` includes the flag.| +|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `value` only if `style` includes the flag.| +|E|The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| +|*exponential_digits*|A sequence of digits from 0 through 9. The `value` parameter can represent a number in exponential notation if `style` includes the flag.| |*hexdigits*|A sequence of hexadecimal digits from 0 through f, or 0 through F.| - A string with decimal digits only (which corresponds to the flag) always parses successfully. Most of the remaining members control elements that may be present, but are not required to be present, in this input string. The following table indicates how individual members affect the elements that may be present in `value`. + A string with decimal digits only (which corresponds to the flag) always parses successfully. Most of the remaining members control elements that may be present, but are not required to be present, in this input string. The following table indicates how individual members affect the elements that may be present in `value`. |Non-composite `NumberStyles` values|Elements permitted in value in addition to digits| |------------------------------------------|-------------------------------------------------------| @@ -6772,7 +6617,7 @@ value Mod 2 = 0 > [!IMPORTANT] > If you use the method to round-trip the string representation of a value that was output by the method, you should use the method with the "R" format specifier to generate the string representation of the value. Otherwise, the string representation of the preserves only the 50 most significant digits of the original value, and data may be lost when you use the method to restore the value. - If the flag is used, `value` must be a hexadecimal value. The only other flags that can be present in `style` are and . (The enumeration has a composite style, , that includes both white-space flags.) + If the flag is used, `value` must be a hexadecimal value. The only other flags that can be present in `style` are and . (The enumeration has a composite style, , that includes both white-space flags.) > [!NOTE] > If `value` is the string representation of a hexadecimal number, it cannot be preceded by any decoration (such as `0x` or `&h`) that differentiates it as a hexadecimal number. This causes the conversion to fail. @@ -6834,11 +6679,6 @@ value Mod 2 = 0 netstandard 2.0.0.0 - - FSharp.Core - 2.3.98.1 - 3.98.4.0 - System.Numerics.BigInteger diff --git a/xml/System.Numerics/Complex.xml b/xml/System.Numerics/Complex.xml index 2cd4ec1c9cc3d..ea8fbc91dd741 100644 --- a/xml/System.Numerics/Complex.xml +++ b/xml/System.Numerics/Complex.xml @@ -2294,7 +2294,7 @@ This API is not CLS-compliant. , the method returns . For other values, if `power` is 0, the method returns , and if `power` is 1, it returns `value`. + If `value` is , the method returns . For other values, if `power` is 0, the method returns , and if `power` is 1, it returns `value`. This method corresponds to the method for primitive numeric types. @@ -2420,14 +2420,14 @@ This API is not CLS-compliant. when the two numbers are multiplied. If a complex number is represented by a +bi, its reciprocal is represented by the expression a/(a2+b2) + -b/(a2 + b2). + The reciprocal, or multiplicative inverse, of a number *x* is a number *y* where *x* multiplied by *y* yields 1. The reciprocal of a complex number is the complex number that produces when the two numbers are multiplied. If a complex number is represented by a +bi, its reciprocal is represented by the expression a/(a2+b2) + -b/(a2 + b2). - If value is , the method returns . Otherwise, it returns the result of the expression /`value`. + If value is , the method returns . Otherwise, it returns the result of the expression /`value`. ## Examples - The following example uses the method to calculate the reciprocal values of several complex numbers. It also demonstrates that the result of multiplying a complex number by its reciprocal is . + The following example uses the method to calculate the reciprocal values of several complex numbers. It also demonstrates that the result of multiplying a complex number by its reciprocal is . [!code-csharp[System.Numerics.Complex.Reciprocal#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.numerics.complex.reciprocal/cs/reciprocal1.cs#1)] [!code-vb[System.Numerics.Complex.Reciprocal#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.numerics.complex.reciprocal/vb/reciprocal1.vb#1)] @@ -2856,7 +2856,7 @@ This API is not CLS-compliant. or is `null`, the real and imaginary parts of the complex number are formatted with the general format specifier ("G"). If `format` is any other value, the method throws a . + The string representation of the complex number returned by this method displays the number using its Cartesian coordinates in the form `(`*a*`,` *b*`)`, where *a* is the real part of the complex number, and *b* is its imaginary part. Both *a* and *b* are formatted using the format string specified by `format`. The `format` parameter can be any valid standard numeric format specifier, or any combination of custom numeric format specifiers. If `format` is equal to or is `null`, the real and imaginary parts of the complex number are formatted with the general format specifier ("G"). If `format` is any other value, the method throws a . The .NET Framework provides extensive formatting support, which is described in greater detail in the following topics: @@ -2915,7 +2915,7 @@ This API is not CLS-compliant. or is `null`, the real and imaginary parts of the complex number are formatted with the general format specifier ("G"). If `format` is any other value, the method throws a . + The string representation of the complex number returned by this method displays the number using its Cartesian coordinates in the form `(`*a*`,` *b*`)`, where *a* is the real part of the complex number, and *b* is its imaginary part. Both *a* and *b* are formatted using the format string specified by `format`. The `format` parameter can be any valid standard numeric format specifier, or any combination of custom numeric format specifiers. If `format` is equal to or is `null`, the real and imaginary parts of the complex number are formatted with the general format specifier ("G"). If `format` is any other value, the method throws a . The .NET Framework provides extensive formatting support, which is described in greater detail in the following topics: diff --git a/xml/System.Reflection.Emit/AssemblyBuilder.xml b/xml/System.Reflection.Emit/AssemblyBuilder.xml index a6a3ca950bd6e..7674446086530 100644 --- a/xml/System.Reflection.Emit/AssemblyBuilder.xml +++ b/xml/System.Reflection.Emit/AssemblyBuilder.xml @@ -62,15 +62,15 @@ ### Dynamic assembly access modes Dynamic assemblies can be created using one of the following access modes: -- +- The dynamic assembly represented by an object is transient. The dynamic assembly can only be used to execute the emitted code. -- +- The dynamic assembly represented by an object is persistable but cannot be executed until the saved portable executable (PE) file has been loaded from disk. -- +- The dynamic assembly represented by an object is persistable, but can also be executed before and/or after the assembly is saved to disk. @@ -81,7 +81,7 @@ ## Examples The following code example shows how to define a dynamic assembly with one module. The module in the example assembly contains one type, `MyDynamicType`, which has a private field, a property that gets and sets the private field, constructors that initialize the private field, and a method that multiplies a user-supplied number by the private field value and returns the result. - is specified when the assembly is created. The assembly code is used immediately, and the assembly is also saved to disk so that it can be examined with [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) or used in another program. + is specified when the assembly is created. The assembly code is used immediately, and the assembly is also saved to disk so that it can be examined with [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) or used in another program. [!code-cpp[AssemblyBuilderClass#1](~/samples/snippets/cpp/VS_Snippets_CLR/AssemblyBuilderClass/cpp/24895.cpp#1)] [!code-csharp[AssemblyBuilderClass#1](~/samples/snippets/csharp/VS_Snippets_CLR/AssemblyBuilderClass/cs/24895.cs#1)] @@ -139,7 +139,7 @@ The specified resource file must be in the directory where the assembly will be saved. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -208,7 +208,7 @@ The specified resource file must be in the directory where the assembly will be saved. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -389,7 +389,7 @@ > To suppress optimizations when debugging dynamic modules, apply the attribute to the dynamic assembly before calling . Create an instance of with the flag and apply it using the method. The attribute must be applied to the dynamic assembly. It has no effect if applied to the module. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -460,7 +460,7 @@ > To suppress optimizations when debugging dynamic modules, apply the attribute to the dynamic assembly before calling . Create an instance of with the flag and apply it using the method. The attribute must be applied to the dynamic assembly. It has no effect if applied to the module. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -532,7 +532,7 @@ > To suppress optimizations when debugging dynamic modules, apply the attribute to the dynamic assembly before calling . Create an instance of with the flag and apply it using the method. The attribute must be applied to the dynamic assembly. It has no effect if applied to the module. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -612,7 +612,7 @@ > To suppress optimizations when debugging dynamic modules, apply the attribute to the dynamic assembly before calling . Create an instance of with the flag and apply it using the method. The attribute must be applied to the dynamic assembly. It has no effect if applied to the module. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -689,7 +689,7 @@ The runtime calls the method when the dynamic assembly is saved. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -764,7 +764,7 @@ The runtime calls the method when the dynamic assembly is saved. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -858,7 +858,7 @@ An assembly can be associated with only one unmanaged resource. This means that calling or after either one of the methods was called previously will throw the System.ArgumentException. Multiple unmanaged resources need to be merged with a tool such as the Microsoft ResMerge utility (not supplied with the common language runtime). > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -920,7 +920,7 @@ The information is inferred from the `AssemblyName` object used to define this dynamic assembly. This assembly's custom attributes override information specified in the `AssemblyName` object. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -980,7 +980,7 @@ The structure of the version resource includes data that identifies the version, language, and distribution of the file. Installation programs use the functions in the file installation library (VER.DLL) to retrieve the version information resource from a file and to extract the version information blocks from the resource. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1925,7 +1925,7 @@ when you create the . If a dynamic assembly is emitted in the reflection-only context, its code cannot be executed. + To emit a dynamic assembly in the reflection-only context, specify when you create the . If a dynamic assembly is emitted in the reflection-only context, its code cannot be executed. > [!NOTE] > After you have saved a dynamic assembly to disk, you can use the method to load the completed assembly into the reflection-only context. However, the assembly can no longer be modified. @@ -2034,7 +2034,7 @@ with , is ignored. + If `imageFileMachine` and `portableExecutableKind` are incompatible, `imageFileMachine` takes precedence over `portableExecutableKind`. No exception is thrown. For example, if you specify with , is ignored. This method saves all non-transient dynamic modules defined in this dynamic assembly. Transient dynamic modules are not saved. The assembly file name can be the same as the name of one of the module. If so, the assembly manifest is stored within that module. `assemblyFileName` can be different from the names of all of the modules contained within the assembly. If so, the assembly file contains only the assembly manifest. @@ -2094,7 +2094,7 @@ ) for the dynamic assemblies it generates. + The [!INCLUDE[net_v40_long](~/includes/net-v40-long-md.md)] always enforces level 2 transparency () for the dynamic assemblies it generates. ]]> @@ -2133,7 +2133,7 @@ > cannot be used to set declarative security attributes. Use one of the overloads of that takes required, optional, and refused permissions. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -2195,7 +2195,7 @@ > cannot be used to set declarative security attributes. Use one of the overloads of that takes required, optional, and refused permissions. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -2271,7 +2271,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> diff --git a/xml/System.Reflection.Emit/DynamicMethod.xml b/xml/System.Reflection.Emit/DynamicMethod.xml index f0a1b96c1c751..dc4618f88b62d 100644 --- a/xml/System.Reflection.Emit/DynamicMethod.xml +++ b/xml/System.Reflection.Emit/DynamicMethod.xml @@ -31,9 +31,9 @@ A dynamic method can be anonymously hosted, or it can belogically associated with a module or with a type. -- If the dynamic method is anonymously hosted, it is located in a system-provided assembly, and therefore is isolated from other code. By default, it does not have access to any non-public data. An anonymously hosted dynamic method can have restricted ability to skip the JIT compiler's visibility checks, if it has been granted with the flag. The trust level of the assembly whose non-public members are accessed by the dynamic method must be equal to, or a subset of, the trust level of the call stack that emitted the dynamic method. For more information about anonymously hosted dynamic methods, see [Walkthrough: Emitting Code in Partial Trust Scenarios](~/docs/framework/reflection-and-codedom/walkthrough-emitting-code-in-partial-trust-scenarios.md). +- If the dynamic method is anonymously hosted, it is located in a system-provided assembly, and therefore is isolated from other code. By default, it does not have access to any non-public data. An anonymously hosted dynamic method can have restricted ability to skip the JIT compiler's visibility checks, if it has been granted with the flag. The trust level of the assembly whose non-public members are accessed by the dynamic method must be equal to, or a subset of, the trust level of the call stack that emitted the dynamic method. For more information about anonymously hosted dynamic methods, see [Walkthrough: Emitting Code in Partial Trust Scenarios](~/docs/framework/reflection-and-codedom/walkthrough-emitting-code-in-partial-trust-scenarios.md). -- If the dynamic method is associated with a module that you specify, the dynamic method is effectively global to that module. It can access all types in the module and all `internal` (`Friend` in Visual Basic) members of the types. You can associate a dynamic method with any module, regardless of whether you created the module, provided that a demand for with the flag can be satisfied by the call stack that includes your code. If the flag is included in the grant, the dynamic method can skip the JIT compiler's visibility checks and access the private data of all types declared in the module or in any other module in any assembly. +- If the dynamic method is associated with a module that you specify, the dynamic method is effectively global to that module. It can access all types in the module and all `internal` (`Friend` in Visual Basic) members of the types. You can associate a dynamic method with any module, regardless of whether you created the module, provided that a demand for with the flag can be satisfied by the call stack that includes your code. If the flag is included in the grant, the dynamic method can skip the JIT compiler's visibility checks and access the private data of all types declared in the module or in any other module in any assembly. > [!NOTE] > When you specify the module with which a dynamic method is associated, that module must not be in the system-provided assembly that is used for anonymous hosting. @@ -48,7 +48,7 @@ |Skipping JIT visibility checks, with restrictions|Public members of public types in any assembly.|All members of all types, only in assemblies whose trust levels are equal to or less than the trust level of the assembly that emitted the dynamic method.| > [!NOTE] -> Prior to the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], emitting code required with the flag. This permission is included by default in the FullTrust and LocalIntranet named permission sets, but not in the Internet permission set. Therefore, in earlier versions of the [!INCLUDE[dnprdnshort](~/includes/dnprdnshort-md.md)] a library can be used with Internet permissions only if it has the attribute and also executes an for . Such libraries require careful security review because coding errors could result in security holes. The [!INCLUDE[net_v20SP1_short](~/includes/net-v20sp1-short-md.md)] allows code to be emitted in partial trust scenarios without issuing any security demands, because generating code is not inherently a privileged operation. That is, the generated code has no more permissions than the assembly that emits it. This allows libraries that emit code to be security transparent and removes the need to assert , which simplifies the task of writing a secure library. To use this feature, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Prior to the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], emitting code required with the flag. This permission is included by default in the FullTrust and LocalIntranet named permission sets, but not in the Internet permission set. Therefore, in earlier versions of the [!INCLUDE[dnprdnshort](~/includes/dnprdnshort-md.md)] a library can be used with Internet permissions only if it has the attribute and also executes an for . Such libraries require careful security review because coding errors could result in security holes. The [!INCLUDE[net_v20SP1_short](~/includes/net-v20sp1-short-md.md)] allows code to be emitted in partial trust scenarios without issuing any security demands, because generating code is not inherently a privileged operation. That is, the generated code has no more permissions than the assembly that emits it. This allows libraries that emit code to be security transparent and removes the need to assert , which simplifies the task of writing a secure library. To use this feature, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. The following table shows which types and members are accessible to a dynamic method that is associated with a module or with a type in a module. @@ -127,7 +127,7 @@ When an anonymously hosted dynamic method is constructed, the call stack of the emitting assembly is included. When the method is invoked, the permissions of the emitting assembly are used instead of the permissions of the actual caller. Thus, the dynamic method cannot execute at a higher level of privilege than that of the assembly that emitted it, even if it is passed to and executed by an assembly that has a higher trust level. - This constructor specifies the method attributes and , and the calling convention . + This constructor specifies the method attributes and , and the calling convention . > [!NOTE] > This constructor was introduced in the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -181,7 +181,7 @@ - The target members belong to an assembly that has a level of trust equal to or lower than the call stack that emits the dynamic method. -- The call stack that emits the dynamic method is granted with the flag. This is always true when the code is executed with full trust. For partially trusted code, it is true only if the host explicitly grants the permission. +- The call stack that emits the dynamic method is granted with the flag. This is always true when the code is executed with full trust. For partially trusted code, it is true only if the host explicitly grants the permission. > [!IMPORTANT] > If the permission has not been granted, a security exception is thrown when is called or when the dynamic method is invoked, not when this constructor is called. No special permissions are required to emit the dynamic method. @@ -192,7 +192,7 @@ When an anonymously hosted dynamic method is constructed, the call stack of the emitting assembly is included. When the method is invoked, the permissions of the emitting call stack are used instead of the permissions of the actual caller. Thus, the dynamic method cannot execute at a higher level of privilege than that of the assembly that emitted it, even if it is passed to and executed by an assembly that has a higher trust level. - This constructor specifies the method attributes and , and the calling convention . + This constructor specifies the method attributes and , and the calling convention . > [!NOTE] > This constructor was introduced in the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -237,15 +237,15 @@ and , calling convention , and does not skip just-in-time (JIT) visibility checks. + This constructor specifies method attributes and , calling convention , and does not skip just-in-time (JIT) visibility checks. The dynamic method created with this constructor has access to public and `internal` (`Friend` in Visual Basic) members of all the types contained in module `m`. > [!NOTE] -> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `m` is a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. +> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `m` is a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -307,13 +307,13 @@ ## Remarks The dynamic method created with this constructor has access to all members of the type `owner`, and to public and `internal` (`Friend` in Visual Basic) members of all the other types in the module that contains `owner`. - This constructor specifies method attributes and , calling convention , and does not skip just-in-time (JIT) visibility checks. + This constructor specifies method attributes and , calling convention , and does not skip just-in-time (JIT) visibility checks. > [!NOTE] -> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `owner` is in a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. +> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `owner` is in a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -389,15 +389,15 @@ and , and calling convention . + This constructor specifies method attributes and , and calling convention . The dynamic method created with this constructor has access to public and `internal` (`Friend` in Visual Basic) members of all the types in contained module `m`. Skipping the JIT compiler's visibility checks allows the dynamic method to access private and protected members of all other types as well. This is useful, for example, when writing code to serialize objects. > [!NOTE] -> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `m` is a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. +> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `m` is a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -453,13 +453,13 @@ ## Remarks The dynamic method created with this constructor has access to all members of the type `owner`, and to public and `internal` (`Friend` in Visual Basic) members of all the other types in the module that contains `owner`. Skipping the JIT compiler's visibility checks allows the dynamic method to access private and protected members of all other types as well. This is useful, for example, when writing code to serialize objects. - This constructor specifies method attributes and , and calling convention . + This constructor specifies method attributes and , and calling convention . > [!NOTE] -> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `owner` is in a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. +> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `owner` is in a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -522,10 +522,10 @@ Skipping the JIT compiler's visibility checks allows the dynamic method to access private and protected members of all other types in the module and in all other assemblies as well. This is useful, for example, when writing code to serialize objects. > [!NOTE] -> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `m` is a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. +> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `m` is a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -596,10 +596,10 @@ The dynamic method created with this constructor has access to all members of the type `owner`, and to public and `internal` (`Friend` in Visual Basic) members of all the types contained in the module that contains `owner`. Skipping the JIT compiler's visibility checks allows the dynamic method to access private and protected members of all other types as well. This is useful, for example, when writing code to serialize objects. > [!NOTE] -> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `owner` is in a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. +> For backward compatibility, this constructor demands with the flag if the following conditions are both true: `owner` is in a module other than the calling module, and the demand for with the flag has failed. If the demand for succeeds, the operation is allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -1324,7 +1324,7 @@ > [!NOTE] > This method overload is called by the method overload inherited from the class, so the preceding remarks apply to both overloads. - This method does not demand permissions directly, but invoking the dynamic method can result in security demands, depending on the method. For example, no demands are made for anonymously hosted dynamic methods that are created with the `restrictedSkipVisibility` parameter set to `false`. On the other hand, if you create a method with `restrictedSkipVisibility` set to `true` so it can access a hidden member of a target assembly, the method will cause a demand for the permissions of the target assembly plus with the flag. + This method does not demand permissions directly, but invoking the dynamic method can result in security demands, depending on the method. For example, no demands are made for anonymously hosted dynamic methods that are created with the `restrictedSkipVisibility` parameter set to `false`. On the other hand, if you create a method with `restrictedSkipVisibility` set to `true` so it can access a hidden member of a target assembly, the method will cause a demand for the permissions of the target assembly plus with the flag. > [!NOTE] > Prior to the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method required with the flag. diff --git a/xml/System.Reflection.Emit/ILGenerator.xml b/xml/System.Reflection.Emit/ILGenerator.xml index 8516e9d69d45d..ea62d29b93e76 100644 --- a/xml/System.Reflection.Emit/ILGenerator.xml +++ b/xml/System.Reflection.Emit/ILGenerator.xml @@ -1255,7 +1255,7 @@ ## Remarks Use to put a instruction onto the stream. Do not use . - If `optionalParameterTypes` specifies optional arguments, `callingConvention` must include the flag. + If `optionalParameterTypes` specifies optional arguments, `callingConvention` must include the flag. ]]> diff --git a/xml/System.Reflection.Emit/MethodBuilder.xml b/xml/System.Reflection.Emit/MethodBuilder.xml index 983df2c2c8971..57b62588e8035 100644 --- a/xml/System.Reflection.Emit/MethodBuilder.xml +++ b/xml/System.Reflection.Emit/MethodBuilder.xml @@ -47,7 +47,7 @@ Global methods must be static. If a dynamic module contains global methods, the method must be called before persisting the dynamic module or the containing dynamic assembly because the common language runtime postpones fixing up the dynamic module until all global functions have been defined. - A global native method is defined by using the method. Platform invoke (PInvoke) methods must not be declared abstract or virtual. The runtime sets the attribute for a platform invoke method. + A global native method is defined by using the method. Platform invoke (PInvoke) methods must not be declared abstract or virtual. The runtime sets the attribute for a platform invoke method. ### Methods as members of types A method is defined as a type member by using the method, which returns a object. @@ -57,19 +57,19 @@ ## Attributes Members of the enumeration define the precise character of a dynamic method: -- Static methods are specified using the attribute. +- Static methods are specified using the attribute. -- Final methods (methods that cannot be overridden) are specified using the attribute. +- Final methods (methods that cannot be overridden) are specified using the attribute. -- Virtual methods are specified using the attribute. +- Virtual methods are specified using the attribute. -- Abstract methods are specified using the attribute. +- Abstract methods are specified using the attribute. - Several attributes determine method visibility. See the description of the enumeration. -- Methods that implement overloaded operators must set the attribute. +- Methods that implement overloaded operators must set the attribute. -- Finalizers must set the attribute. +- Finalizers must set the attribute. ## Known Issues @@ -1534,7 +1534,7 @@ method in combination with the method, be aware of potential interactions. For example, using the method to add the attribute also sets the flag. If you subsequently call the method, the flag is overwritten. There are two ways to avoid this: + When you use the method in combination with the method, be aware of potential interactions. For example, using the method to add the attribute also sets the flag. If you subsequently call the method, the flag is overwritten. There are two ways to avoid this: - Call the method before you call the method. The method always respects existing method implementation flags. diff --git a/xml/System.Reflection.Emit/ModuleBuilder.xml b/xml/System.Reflection.Emit/ModuleBuilder.xml index e82444b559e77..74c5883c62f9d 100644 --- a/xml/System.Reflection.Emit/ModuleBuilder.xml +++ b/xml/System.Reflection.Emit/ModuleBuilder.xml @@ -126,7 +126,7 @@ This method should be called when the user is done with defining all the global functions within this dynamic module. After calling this function, no more new global functions or new global data are allowed. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -233,7 +233,7 @@ > In the .NET Framework versions 1.0 and 1.1, it is necessary to define enumerations using because emits enumerations whose elements are of type instead of the enumeration type. In the .NET Framework version 2.0, emits enumerations whose elements have the correct type. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -300,7 +300,7 @@ The global method that this method defines is not usable until you call . > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -368,7 +368,7 @@ You cannot use the global method that this method defines until you call . > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -442,7 +442,7 @@ You cannot use the global method that this method defines until you call . > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -494,7 +494,7 @@ The data defined by this method is not created until the method is called. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -626,7 +626,7 @@ Some DLL import attributes (see the description of System.Runtime.InteropServices.DllImportAttribute) cannot be specified as arguments to this method. Such attributes should be set by emitting a custom attribute for the method. For example, the DLL import attribute `PreserveSig` is set by emitting a custom attribute. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -634,7 +634,7 @@ The following example illustrates the use of the `DefinePInvokeMethod` method to create a for an external unmanaged method, `MessageBoxA`, in the Win32 API. The example displays a message box with **Retry** and **Cancel** buttons, and displays the return value from the message box. > [!IMPORTANT] -> To get a non-zero return value, you must add to the method implementation flags after you create the , by using the and methods. +> To get a non-zero return value, you must add to the method implementation flags after you create the , by using the and methods. [!code-cpp[ModuleBuilder_DefinePInvokeMethod1#1](~/samples/snippets/cpp/VS_Snippets_CLR/ModuleBuilder_DefinePInvokeMethod1/CPP/modulebuilder_definepinvokemethod1.cpp#1)] [!code-csharp[ModuleBuilder_DefinePInvokeMethod1#1](~/samples/snippets/csharp/VS_Snippets_CLR/ModuleBuilder_DefinePInvokeMethod1/CS/modulebuilder_definepinvokemethod1.cs#1)] @@ -699,7 +699,7 @@ Some DLL import attributes (see the description of ) cannot be specified as arguments to this method. Such attributes should be set by emitting a custom attribute for the method. For example, the DLL import attribute `PreserveSig` is set by emitting a custom attribute. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -707,7 +707,7 @@ The following example illustrates the use of the `DefinePInvokeMethod` method to create a for an external unmanaged method, `MessageBoxA`, in the Win32 API. The example displays a message box with **Retry** and **Cancel** buttons, and displays the return value from the message box. > [!IMPORTANT] -> To get a non-zero return value, you must add to the method implementation flags after you create the , by using the and methods. +> To get a non-zero return value, you must add to the method implementation flags after you create the , by using the and methods. This example uses a different overload of the method, but the technique is the same. @@ -754,7 +754,7 @@ Use this method to embed a managed resource. To embed a manifest resource blob, use the method. For a summary of embedding and linking managed resources and manifest resource blobs, see the method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -810,7 +810,7 @@ Use this method to embed a managed resource. To embed a manifest resource blob, use the method. For a summary of embedding and linking managed resources and manifest resource blobs, see the method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -865,7 +865,7 @@ Type names must be unique within an assembly. You cannot have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -921,7 +921,7 @@ Type names must be unique within an assembly. You cannot have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -979,7 +979,7 @@ Type names must be unique within an assembly. You cannot have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1039,7 +1039,7 @@ Type names must be unique within an assembly. It is forbidden to have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1099,7 +1099,7 @@ Type names must be unique within an assembly. You cannot have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1164,7 +1164,7 @@ Type names must be unique within an assembly. You cannot have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1226,7 +1226,7 @@ Type names must be unique within an assembly. You cannot have two types with the same name in two different modules of an assembly. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1286,7 +1286,7 @@ The data defined by this method is not created until the method is called. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -1327,7 +1327,7 @@ An assembly can be associated with only one unmanaged resource. This means that calling `DefineVersionInfoResource` or `DefineUnmanagedResource` after either one of the methods was called previously throws . Multiple unmanaged resources need to be merged with a tool such as the Microsoft ResMerge utility (not supplied with the common language runtime). > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -1362,7 +1362,7 @@ An assembly can be associated with only one unmanaged resource. This means that calling `DefineVersionInfoResource` or `DefineUnmanagedResource` after either one of the methods was called previously throws . Multiple unmanaged resources need to be merged with a tool such as the Microsoft ResMerge utility (not supplied with the common language runtime). > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -1967,7 +1967,7 @@ and `machine` is always 0 (zero). + For dynamic modules, `peKind` is always and `machine` is always 0 (zero). ]]> @@ -2106,7 +2106,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2144,7 +2144,7 @@ Do not use this method to generate array types, pointer types, or byref types. Use the , , and methods instead. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2190,7 +2190,7 @@ Do not use this method to generate array types, pointer types, or byref types. Use the , , and methods instead. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2240,7 +2240,7 @@ Do not use this method to generate array types, pointer types, or byref types. Use the , , and methods instead. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2279,7 +2279,7 @@ For example, if the class initializers of one of the classes throws an exception while it is being loaded, a `TargetInvocationException` is stored in the corresponding element of the `LoaderExceptions` array. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2866,7 +2866,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2912,7 +2912,7 @@ For more information about how to format `binaryAttribute`, see the Common Language Infrastructure (CLI) documentation, especially "Partition II: Metadata Definition and Semantics". The documentation is available online; see [ECMA C# and Common Language Infrastructure Standards](http://go.microsoft.com/fwlink/?LinkID=99212) on MSDN and [Standard ECMA-335 - Common Language Infrastructure (CLI)](http://go.microsoft.com/fwlink/?LinkID=65552) on the Ecma International Web site. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2948,7 +2948,7 @@ This method does nothing. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
@@ -2982,7 +2982,7 @@ The compiler might generate a startup stub before calling user main. The startup stub will be the entry point. While the user main will be the user entry point so that debugger will not step into the compiler entry point. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]>
diff --git a/xml/System.Reflection.Emit/PackingSize.xml b/xml/System.Reflection.Emit/PackingSize.xml index 956c402b1ff93..5f543393f6b6a 100644 --- a/xml/System.Reflection.Emit/PackingSize.xml +++ b/xml/System.Reflection.Emit/PackingSize.xml @@ -30,7 +30,7 @@ . The packing size is one of two factors that determine the offset of a field when the structure or class is marshaled; the other factor is the effective size of the field. To determine the offset of a field: + Packing size affects the alignment of fields in structures and classes whose organization is . The packing size is one of two factors that determine the offset of a field when the structure or class is marshaled; the other factor is the effective size of the field. To determine the offset of a field: 1. Compute the minimum value for the offset by adding the size of the preceding field to the offset of the preceding field. diff --git a/xml/System.Reflection.Emit/TypeBuilder.xml b/xml/System.Reflection.Emit/TypeBuilder.xml index 207e4acc15e94..4335905be7f23 100644 --- a/xml/System.Reflection.Emit/TypeBuilder.xml +++ b/xml/System.Reflection.Emit/TypeBuilder.xml @@ -67,13 +67,13 @@ ## Attributes The class uses the enumeration to further specify the characteristics of the type to be created: -- Interfaces are specified using the and attributes. +- Interfaces are specified using the and attributes. -- Concrete classes (classes that cannot be extended) are specified using the attribute. +- Concrete classes (classes that cannot be extended) are specified using the attribute. - Several attributes determine type visibility. See the description of the enumeration. -- If is specified, the class loader lays out fields in the order they are read from metadata. The class loader considers the specified packing size but ignores any specified field offsets. The metadata preserves the order in which the field definitions are emitted. Even across a merge, the metadata will not reorder the field definitions. The loader will honor the specified field offsets only if is specified. +- If is specified, the class loader lays out fields in the order they are read from metadata. The class loader considers the specified packing size but ignores any specified field offsets. The metadata preserves the order in which the field definitions are emitted. Even across a merge, the metadata will not reorder the field definitions. The loader will honor the specified field offsets only if is specified. ## Known Issues @@ -90,7 +90,7 @@ The following code example shows how to define a dynamic assembly with one module. The module in the example assembly contains one type, `MyDynamicType`, which has a private field, a property that gets and sets the private field, constructors that initialize the private field, and a method that multiplies a user-supplied number by the private field value and returns the result. - The field is specified when the assembly is created. The assembly code is used immediately, and the assembly is also saved to disk so that it can be examined with [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) or used in another program. + The field is specified when the assembly is created. The assembly code is used immediately, and the assembly is also saved to disk so that it can be examined with [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) or used in another program. [!code-cpp[AssemblyBuilderClass#1](~/samples/snippets/cpp/VS_Snippets_CLR/AssemblyBuilderClass/cpp/24895.cpp#1)] [!code-csharp[AssemblyBuilderClass#1](~/samples/snippets/csharp/VS_Snippets_CLR/AssemblyBuilderClass/cs/24895.cs#1)] @@ -156,7 +156,7 @@ ## Examples - The following example demonstrates the use of the `AddDeclarativeSecurity` method to add a security demand for with the flag to a dynamic type named `MyDynamicClass`, in an assembly named EmittedExample.dll. The example produces no console output; after you run it, you can use [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) to examine EmittedExample.dll. In `MyDynamicClass`, open the `.class public auto ansi` statement to see the declarative permission. + The following example demonstrates the use of the `AddDeclarativeSecurity` method to add a security demand for with the flag to a dynamic type named `MyDynamicClass`, in an assembly named EmittedExample.dll. The example produces no console output; after you run it, you can use [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) to examine EmittedExample.dll. In `MyDynamicClass`, open the `.class public auto ansi` statement to see the declarative permission. [!code-cpp[TypeBuilder_AddDeclarativeSecurity#1](~/samples/snippets/cpp/VS_Snippets_CLR/TypeBuilder_AddDeclarativeSecurity/CPP/typebuilder_adddeclarativesecurity.cpp#1)] [!code-csharp[TypeBuilder_AddDeclarativeSecurity#1](~/samples/snippets/csharp/VS_Snippets_CLR/TypeBuilder_AddDeclarativeSecurity/CS/typebuilder_adddeclarativesecurity.cs#1)] @@ -943,7 +943,7 @@ ## Remarks Use this method overload when you do not know the method signature at the time you define the method. For example, the parameter types and return type of a generic method might be specified by the method's generic type parameters, which must be defined after the method has been added to the type. The parameters and return type of the method can be set later using the method. - This method overload defines a method with . If you need to define a method without a signature, with a different calling convention, use the method overload. + This method overload defines a method with . If you need to define a method without a signature, with a different calling convention, use the method overload. @@ -1758,15 +1758,15 @@ ) cannot be specified as arguments to this method. For example, the DLL import attribute must be added after the `PInvoke` method is created, if the method returns a value. The example shows how to do this. + Some DLL import attributes (see the description of ) cannot be specified as arguments to this method. For example, the DLL import attribute must be added after the `PInvoke` method is created, if the method returns a value. The example shows how to do this. ## Examples - The following example demonstrates how to use the method to create a `PInvoke` method, and how to add the flag to the method implementation flags after you create the , by using the and methods. + The following example demonstrates how to use the method to create a `PInvoke` method, and how to add the flag to the method implementation flags after you create the , by using the and methods. > [!IMPORTANT] -> To get a non-zero return value, you must add the flag. +> To get a non-zero return value, you must add the flag. The example creates a dynamic assembly with one dynamic module and a single type, `MyType`, that contains the `PInvoke` method. The `PInvoke` method represents the Win32 `GetTickCount` function. @@ -1840,15 +1840,15 @@ ) cannot be specified as arguments to this method. For example, the DLL import attribute must be added after the `PInvoke` method is created, if the method returns a value. The example shows how to do this. + Some DLL import attributes (see the description of ) cannot be specified as arguments to this method. For example, the DLL import attribute must be added after the `PInvoke` method is created, if the method returns a value. The example shows how to do this. ## Examples - The following code example demonstrates how to use the method to create a `PInvoke` method, and how to add the flag to the method implementation flags after you create the , by using the and methods. + The following code example demonstrates how to use the method to create a `PInvoke` method, and how to add the flag to the method implementation flags after you create the , by using the and methods. > [!IMPORTANT] -> To get a non-zero return value, you must add the flag. +> To get a non-zero return value, you must add the flag. The example creates a dynamic assembly with one dynamic module and a single type, `MyType`, that contains the `PInvoke` method. The `PInvoke` method represents the Win32 `GetTickCount` function. @@ -1930,7 +1930,7 @@ ) cannot be specified as arguments to this method. For example, the DLL import attribute must be added after the `PInvoke` method is created, if the method returns a value. The example shows how to do this. + Some DLL import attributes (see the description of ) cannot be specified as arguments to this method. For example, the DLL import attribute must be added after the `PInvoke` method is created, if the method returns a value. The example shows how to do this. > [!NOTE] > For more information on custom modifiers, see the ECMA Partition II Metadata documentation. The documentation is available online; see [ECMA C# and Common Language Infrastructure Standards](http://go.microsoft.com/fwlink/?LinkID=99212) on MSDN and [Standard ECMA-335 - Common Language Infrastructure (CLI)](http://go.microsoft.com/fwlink/?LinkID=65552) on the Ecma International Web site. @@ -1938,12 +1938,12 @@ ## Examples - The following code example demonstrates how to use the [\], Type\[\], Type\[\], Type\[\]\[\], Type\[\]\ method to create a `PInvoke` method, and how to add the flag to the method implementation flags after you create the , by using the and methods. + The following code example demonstrates how to use the [\], Type\[\], Type\[\], Type\[\]\[\], Type\[\]\ method to create a `PInvoke` method, and how to add the flag to the method implementation flags after you create the , by using the and methods. The example creates a dynamic assembly with one dynamic module and a single type, `MyType`, that contains the `PInvoke` method. The `PInvoke` method represents the Win32 `GetTickCount` function. > [!IMPORTANT] -> To get a non-zero return value, you must add the flag. +> To get a non-zero return value, you must add the flag. > [!NOTE] > The example uses an overload that does not specify custom modifiers. To specify custom modifiers, change the example code to use this method overload instead. @@ -4670,7 +4670,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> @@ -4717,7 +4717,7 @@ For more information on how to format `binaryAttribute`, see the Common Language Infrastructure (CLI) documentation, especially "Partition II: Metadata Definition and Semantics". The documentation is available online; see [ECMA C# and Common Language Infrastructure Standards](http://go.microsoft.com/fwlink/?LinkID=99212) on MSDN and [Standard ECMA-335 - Common Language Infrastructure (CLI)](http://go.microsoft.com/fwlink/?LinkID=65552) on the Ecma International Web site. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this member no longer requires with the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. ]]> diff --git a/xml/System.Reflection.Emit/UnmanagedMarshal.xml b/xml/System.Reflection.Emit/UnmanagedMarshal.xml index d30882dfc3c5b..80d36d75d9e8c 100644 --- a/xml/System.Reflection.Emit/UnmanagedMarshal.xml +++ b/xml/System.Reflection.Emit/UnmanagedMarshal.xml @@ -32,7 +32,7 @@ ## Examples - The following code example shows replacement code for the obsolete type. The example emits a single-module assembly named `EmitMarshalAs.dll`, containing a type named `Sample`. The type has a method named `Test`, with one parameter of type . The code example applies the with to the parameter. + The following code example shows replacement code for the obsolete type. The example emits a single-module assembly named `EmitMarshalAs.dll`, containing a type named `Sample`. The type has a method named `Test`, with one parameter of type . The code example applies the with to the parameter. You can use the [Ildasm.exe (IL Disassembler)](~/docs/framework/tools/ildasm-exe-il-disassembler.md) to examine the emitted assembly and observe that the parameter is marked `marshal(bstr)`. @@ -228,7 +228,7 @@ passed to this method must be a simple native type. None of the following values may be used: , , , , or . + The passed to this method must be a simple native type. None of the following values may be used: , , , , or . Only unmanaged marshal constructs can be made using this method. diff --git a/xml/System.Reflection/Assembly.xml b/xml/System.Reflection/Assembly.xml index 4747af45ba9e5..6defc5eb259b4 100644 --- a/xml/System.Reflection/Assembly.xml +++ b/xml/System.Reflection/Assembly.xml @@ -846,7 +846,7 @@ When `M1` is not inlined, returns `A2`. When `M1` is inlined, returns `A3`. Similarly, when `M2` is not inlined, returns `A2`. When `M2` is inlined, returns `A3`. - This effect also occurs when `M1` executes as a tail call from `M2`, or when `M2` executes as a tail call from `M3`. You can prevent the JIT compiler from inlining the method that calls , by applying the attribute with the flag, but there is no similar mechanism for preventing tail calls. + This effect also occurs when `M1` executes as a tail call from `M2`, or when `M2` executes as a tail call from `M3`. You can prevent the JIT compiler from inlining the method that calls , by applying the attribute with the flag, but there is no similar mechanism for preventing tail calls. @@ -1524,7 +1524,7 @@ Resource information is returned only if the resource is visible to the caller, or the caller has . > [!NOTE] -> This method returns `null` if a private resource in another assembly is accessed and the caller does not have with the flag. +> This method returns `null` if a private resource in another assembly is accessed and the caller does not have with the flag. If the assembly manifest lists a resource file, returns a object even if the resource file cannot be found on disk at the time. If the resource file is not found, passing the resulting object to the constructor causes an . @@ -1590,7 +1590,7 @@ Resource information is returned only if the resource is visible to the caller, or the caller has . > [!NOTE] -> This method returns `null` if a private resource in another assembly is accessed and the caller does not have with the flag. +> This method returns `null` if a private resource in another assembly is accessed and the caller does not have with the flag. If the assembly manifest lists a resource file, returns a object even if the resource file cannot be found on disk at the time. If the resource file is not found, passing the resulting object to the constructor causes an . @@ -1884,7 +1884,7 @@ ## Remarks > [!IMPORTANT] -> Starting with the [!INCLUDE[net_v40_long](~/includes/net-v40-long-md.md)], the property of an object that is returned by this method is if there is no hash algorithm for the referenced assembly, or if the hash algorithm of the referenced assembly is not identified by the enumeration. In previous versions of the .NET Framework, the property returned in this situation. +> Starting with the [!INCLUDE[net_v40_long](~/includes/net-v40-long-md.md)], the property of an object that is returned by this method is if there is no hash algorithm for the referenced assembly, or if the hash algorithm of the referenced assembly is not identified by the enumeration. In previous versions of the .NET Framework, the property returned in this situation. @@ -3201,7 +3201,7 @@ - If an assembly is loaded with , and the probing path includes an assembly with the same identity but a different location, an , , or other unexpected behavior can occur. -- demands and , or , on the specified path. +- demands and , or , on the specified path. - If a native image exists for `assemblyFile`, it is not used. The assembly cannot be loaded as domain neutral. @@ -3294,7 +3294,7 @@ - If an assembly is loaded with , and the probing path includes an assembly with the same identity but a different location, an , , or other unexpected behavior can occur. -- demands and , or , on the specified path. +- demands and , or , on the specified path. - If a native image exists for `assemblyFile`, it is not used. The assembly cannot be loaded as domain neutral. @@ -3400,7 +3400,7 @@ - If an assembly is loaded with , and the probing path includes an assembly with the same identity but a different location, an , , or other unexpected behavior can occur. -- demands and , or , on the specified path. +- demands and , or , on the specified path. - If a native image exists for `assemblyFile`, it is not used. The assembly cannot be loaded as domain-neutral. @@ -3489,7 +3489,7 @@ - If an assembly is loaded with , and the probing path includes an assembly with the same identity but a different location, an , , or other unexpected behavior can occur. -- demands and , or , on the specified path. +- demands and , or , on the specified path. - If a native image exists for `assemblyFile`, it is not used. The assembly cannot be loaded as domain neutral. diff --git a/xml/System.Reflection/AssemblyName.xml b/xml/System.Reflection/AssemblyName.xml index d04756215ea20..30aee723cfe38 100644 --- a/xml/System.Reflection/AssemblyName.xml +++ b/xml/System.Reflection/AssemblyName.xml @@ -779,7 +779,7 @@ mylib, Version=1.2.1900.0, Culture=neutral, PublicKeyToken=a14f3033def15840 ## Remarks > [!IMPORTANT] -> Starting with the [!INCLUDE[net_v40_long](~/includes/net-v40-long-md.md)], the property of an object that is returned by the method is if there is no hash algorithm for the referenced assembly, or if the hash algorithm of the referenced assembly is not identified by the enumeration. In previous versions of the .NET Framework, the property returned in this situation. +> Starting with the [!INCLUDE[net_v40_long](~/includes/net-v40-long-md.md)], the property of an object that is returned by the method is if there is no hash algorithm for the referenced assembly, or if the hash algorithm of the referenced assembly is not identified by the enumeration. In previous versions of the .NET Framework, the property returned in this situation. @@ -951,7 +951,7 @@ mylib, Version=1.2.1900.0, Culture=neutral, PublicKeyToken=a14f3033def15840 for reference assemblies. + Beginning with the [!INCLUDE[net_v40_long](~/includes/net-v40-long-md.md)], this property always returns for reference assemblies. ]]> @@ -1385,7 +1385,7 @@ mylib, Version=1.2.1900.0, Culture=neutral, PublicKeyToken=a14f3033def15840 ## Remarks information indicates, for example, that the assembly cannot execute side-by-side with other versions due to conflicts over a device driver. - Currently, always returns , and is not used by the loader. This property is reserved for a future feature. + Currently, always returns , and is not used by the loader. This property is reserved for a future feature. ]]> diff --git a/xml/System.Reflection/Binder.xml b/xml/System.Reflection/Binder.xml index 1d89bfb813d8b..59ea3f3a5e5d4 100644 --- a/xml/System.Reflection/Binder.xml +++ b/xml/System.Reflection/Binder.xml @@ -124,7 +124,7 @@ , the default binder implementation provided by simply returns the first element of `match`. No selection is done. + If `bindingAttr` does not include , the default binder implementation provided by simply returns the first element of `match`. No selection is done. This method controls the binding provided by . diff --git a/xml/System.Reflection/ConstructorInfo.xml b/xml/System.Reflection/ConstructorInfo.xml index 966c2b06b9df3..7d5e7e80f55d7 100644 --- a/xml/System.Reflection/ConstructorInfo.xml +++ b/xml/System.Reflection/ConstructorInfo.xml @@ -256,7 +256,7 @@ This method is a convenience method for the following overloaded version, using default values. This method cannot be overridden. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -332,7 +332,7 @@ > To create an instance of a value type that has no instance constructors, use the method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. diff --git a/xml/System.Reflection/EventInfo.xml b/xml/System.Reflection/EventInfo.xml index 431ad4756637f..5a9029964d100 100644 --- a/xml/System.Reflection/EventInfo.xml +++ b/xml/System.Reflection/EventInfo.xml @@ -878,7 +878,7 @@ remove_( handler) . Therefore, when you examine a set of objects — for example, the array returned by — the property returns only when a given member is an event. + This property overrides . Therefore, when you examine a set of objects — for example, the array returned by — the property returns only when a given member is an event. ]]> diff --git a/xml/System.Reflection/ExceptionHandlingClause.xml b/xml/System.Reflection/ExceptionHandlingClause.xml index 1a956160c8786..c776c4ba6debf 100644 --- a/xml/System.Reflection/ExceptionHandlingClause.xml +++ b/xml/System.Reflection/ExceptionHandlingClause.xml @@ -43,7 +43,7 @@ You can use Ildasm.exe to examine the MSIL for the compiled code example, to see how the offsets and lengths are calculated. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. @@ -133,7 +133,7 @@ The following code example defines a test method named `MethodBodyExample`, and displays its local variable information and exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects and display their properties. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. @@ -183,7 +183,7 @@ clause. + A filter clause contains user-suppliedMicrosoft intermediate language (MSIL) that determines whether an exception is handled by this clause. For example, any clause containing the Visual Basic `When` keyword is a clause. > [!NOTE] > Working with exception-handling clauses requires a thorough understanding of metadata and MSIL instruction formats. Information can be found in the Common Language Infrastructure (CLI) documentation, especially "Partition II: Metadata Definition and Semantics" and "Partition III: CIL Instruction Set". The documentation is available online; see [ECMA C# and Common Language Infrastructure Standards](http://go.microsoft.com/fwlink/?LinkID=99212) on MSDN and [Standard ECMA-335 - Common Language Infrastructure (CLI)](http://go.microsoft.com/fwlink/?LinkID=65552) on the Ecma International Web site. @@ -231,7 +231,7 @@ The following code example defines a test method named `MethodBodyExample`, and displays its local variable information and exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects and display their properties. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. @@ -290,7 +290,7 @@ The following code example defines a test method named `MethodBodyExample`, and displays its local variable information and exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects and display their properties. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. @@ -349,7 +349,7 @@ The following code example defines a test method named `MethodBodyExample`, and displays its local variable information and exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects and display their properties. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. @@ -437,7 +437,7 @@ The following code example defines a test method named `MethodBodyExample`, and displays its local variable information and exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects and display their properties. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. @@ -496,7 +496,7 @@ The following code example defines a test method named `MethodBodyExample`, and displays its local variable information and exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects and display their properties. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code is part of a larger example located in the class topic. diff --git a/xml/System.Reflection/FieldInfo.xml b/xml/System.Reflection/FieldInfo.xml index 6c812117d3972..cc6b282a38907 100644 --- a/xml/System.Reflection/FieldInfo.xml +++ b/xml/System.Reflection/FieldInfo.xml @@ -617,7 +617,7 @@ > Access restrictions are ignored for fully trusted code. That is, private constructors, methods, fields, and properties can be accessed and invoked through reflection whenever the code is fully trusted. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -737,7 +737,7 @@ ## Remarks The actual visibility of a field is limited by the visibility of its type. The property might be `true` for a field, but if it is a field of a private nested type then the field is not visible outside the containing type. - The visibility of a field is exactly described by if the only visibility modifier is `internal` (`Friend` in Visual Basic). This property is `false` for fields that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such fields. + The visibility of a field is exactly described by if the only visibility modifier is `internal` (`Friend` in Visual Basic). This property is `false` for fields that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such fields. @@ -745,7 +745,7 @@ The following code example defines fields with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. [!code-cpp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CS/source.cs#1)] @@ -790,7 +790,7 @@ if the only visibility modifier is `protected`. This property is `false` for fields that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such fields. + The visibility of a field is exactly described by if the only visibility modifier is `protected`. This property is `false` for fields that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such fields. @@ -798,7 +798,7 @@ The following code example defines fields with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. [!code-cpp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CS/source.cs#1)] @@ -845,7 +845,7 @@ ## Remarks If a field has level visibility, it can be called from any member in a derived class that is also in the same assembly, but not from any other type. - The visibility of a field is exactly described by if the visibility modifier is `protected private` in C++. Fields with this visibility cannot be defined in Visual Basic or C#. + The visibility of a field is exactly described by if the visibility modifier is `protected private` in C++. Fields with this visibility cannot be defined in Visual Basic or C#. @@ -853,7 +853,7 @@ The following code example defines fields with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. [!code-cpp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CS/source.cs#1)] @@ -902,7 +902,7 @@ The actual visibility of a field is limited by the visibility of its type. The property might be `true` for a field, but if it is a field of a private nested type then the field is not visible outside the containing type. - The visibility of a field is exactly described by if the visibility modifier is `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++). + The visibility of a field is exactly described by if the visibility modifier is `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++). @@ -910,7 +910,7 @@ The following code example defines fields with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define fields with visibility; that access level appears only in the C++ example. [!code-cpp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic FieldInfo.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic FieldInfo.IsAssembly Example/CS/source.cs#1)] @@ -957,9 +957,9 @@ ## Remarks If the returned value is `true`, the field can only be initialized, and is read-only thereafter. - To get the `IsInitOnly` property, first get the class `Type`. From the `Type`, get the `FieldInfo`. From the `FieldInfo`, get the `IsInitOnly` property. To access a non-public field, combine with either or both of and in the `GetField` method. + To get the `IsInitOnly` property, first get the class `Type`. From the `Type`, get the `FieldInfo`. From the `FieldInfo`, get the `IsInitOnly` property. To access a non-public field, combine with either or both of and in the `GetField` method. - The `IsInitOnly` property is set when the attribute is set. + The `IsInitOnly` property is set when the attribute is set. @@ -1502,7 +1502,7 @@ . Therefore, when you examine a set of objects — for example, the array returned by — the property returns only when a given member is a field. + This property overrides . Therefore, when you examine a set of objects — for example, the array returned by — the property returns only when a given member is a field. @@ -1641,7 +1641,7 @@ > Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1728,7 +1728,7 @@ > Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1785,7 +1785,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. diff --git a/xml/System.Reflection/IReflect.xml b/xml/System.Reflection/IReflect.xml index 7c9ed7e8a341f..4c4fe7284ce40 100644 --- a/xml/System.Reflection/IReflect.xml +++ b/xml/System.Reflection/IReflect.xml @@ -102,7 +102,7 @@ flag specifies that non-public methods are included in the search. The flag specifies that public methods are included in the search. + The match is based upon a name. Each field must have a unique name. The flag specifies that non-public methods are included in the search. The flag specifies that public methods are included in the search. ]]> @@ -142,7 +142,7 @@ method retrieves an array of objects by using the name and binding attribute that correspond to all public members or to all members that match a specified name. The case of the specified name is observed or ignored, as specified by . + The method retrieves an array of objects by using the name and binding attribute that correspond to all public members or to all members that match a specified name. The case of the specified name is observed or ignored, as specified by . ]]> @@ -471,7 +471,7 @@ > [!NOTE] > The array of parameter modifiers passed to the method must contain a single parameter modifier. Only the first parameter modifier is considered when determining which argument needs to be passed by reference when exposed to COM. - The binder finds all matching methods, in accordance with the type of binding requested (, , and so on). The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder. After the method is selected, it is invoked, and accessibility is checked at that point. The search may control which set of methods is searched based upon the accessibility attribute associated with the method. selects the method to be invoked. The default binder selects the most specific match. + The binder finds all matching methods, in accordance with the type of binding requested (, , and so on). The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder. After the method is selected, it is invoked, and accessibility is checked at that point. The search may control which set of methods is searched based upon the accessibility attribute associated with the method. selects the method to be invoked. The default binder selects the most specific match. Access restrictions are ignored for fully trusted code. That is, private constructors, methods, fields, and properties can be accessed and invoked through reflection whenever the code is fully trusted. diff --git a/xml/System.Reflection/MethodBase.xml b/xml/System.Reflection/MethodBase.xml index 880f65324f26b..d71ad27db76be 100644 --- a/xml/System.Reflection/MethodBase.xml +++ b/xml/System.Reflection/MethodBase.xml @@ -457,7 +457,7 @@ The property is used to obtain a list of objects and display their types and index order. The property is used to obtain a list of exception-handling clauses. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. [!code-cpp[MethodBody#1](~/samples/snippets/cpp/VS_Snippets_CLR/MethodBody/cpp/source.cpp#1)] [!code-csharp[MethodBody#1](~/samples/snippets/csharp/VS_Snippets_CLR/MethodBody/CS/source.cs#1)] @@ -721,7 +721,7 @@ > If this method overload is used to invoke an instance constructor, the object supplied for `obj` is reinitialized; that is, all instance initializers are executed. The return value is `null`. If a class constructor is invoked, the class is reinitialized; that is, all class initializers are executed. The return value is `null`. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -840,7 +840,7 @@ If the invoked method throws an exception, `TargetInvocationException.GetException` returns the exception. This implementation throws a `NotSupportedException`. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -961,7 +961,7 @@ ## Remarks The actual visibility of a method is limited by the visibility of its type. The property might be `true` for a method, but if it is a method of a private nested type then the method is not visible outside the containing type. - The visibility of a method or constructor is exactly described by if the only visibility modifier is `internal` (`Friend` in Visual Basic). This property is `false` for methods that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such methods. + The visibility of a method or constructor is exactly described by if the only visibility modifier is `internal` (`Friend` in Visual Basic). This property is `false` for methods that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such methods. @@ -969,7 +969,7 @@ The following code example defines methods with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. [!code-cpp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CS/source.cs#1)] @@ -1021,7 +1021,7 @@ ## Remarks > [!NOTE] -> The property returns `false` for a object in a dynamic type, unless the flag was included in the `attributes` parameter when the constructor was defined. Omitting the flag does not affect the correctness of the emitted constructor. +> The property returns `false` for a object in a dynamic type, unless the flag was included in the `attributes` parameter when the constructor was defined. Omitting the flag does not affect the correctness of the emitted constructor. ]]> @@ -1062,7 +1062,7 @@ if the only visibility modifier is `protected`. This property is `false` for methods that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such methods. + The visibility of a method or constructor is exactly described by if the only visibility modifier is `protected`. This property is `false` for methods that are `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++); use the property to identify such methods. @@ -1070,7 +1070,7 @@ The following code example defines methods with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. [!code-cpp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CS/source.cs#1)] @@ -1115,7 +1115,7 @@ if the visibility modifier is `protected private` in C++. Methods with this visibility cannot be defined in Visual Basic or C#. + The visibility of a method or constructor is exactly described by if the visibility modifier is `protected private` in C++. Methods with this visibility cannot be defined in Visual Basic or C#. @@ -1123,7 +1123,7 @@ The following code example defines methods with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. [!code-cpp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CS/source.cs#1)] @@ -1168,11 +1168,11 @@ visibility, it can be called from any member in a derived class or any member in the same assembly, but not from any other type. + If a type member has visibility, it can be called from any member in a derived class or any member in the same assembly, but not from any other type. The actual visibility of a method is limited by the visibility of its type. The property might be `true` for a method, but if it is a method of a private nested type then the method is not visible outside the containing type. - The visibility of a method or constructor is exactly described by if the visibility modifier is `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++). + The visibility of a method or constructor is exactly described by if the visibility modifier is `protected internal` in C# (`Protected Friend` in Visual Basic, `protected public` in C++). @@ -1180,7 +1180,7 @@ The following code example defines methods with varying levels of visibility, and displays the values of their , , , and properties. > [!NOTE] -> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. +> The Visual Basic and C# languages cannot define methods with visibility; that access level appears only in the C++ example. [!code-cpp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/cpp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CPP/source.cpp#1)] [!code-csharp[Classic MethodBase.IsAssembly Example#1](~/samples/snippets/csharp/VS_Snippets_CLR_Classic/classic MethodBase.IsAssembly Example/CS/source.cs#1)] diff --git a/xml/System.Reflection/MethodBody.xml b/xml/System.Reflection/MethodBody.xml index 815111021d965..802049dea2dc1 100644 --- a/xml/System.Reflection/MethodBody.xml +++ b/xml/System.Reflection/MethodBody.xml @@ -47,7 +47,7 @@ The example uses the property to obtain a list of objects and then displays their types and index order. The property is used to obtain a list of exception-handling clauses. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. [!code-cpp[MethodBody#1](~/samples/snippets/cpp/VS_Snippets_CLR/MethodBody/cpp/source.cpp#1)] [!code-csharp[MethodBody#1](~/samples/snippets/csharp/VS_Snippets_CLR/MethodBody/CS/source.cs#1)] @@ -127,7 +127,7 @@ The following code example defines a test method named `MethodBodyExample` and displays information about its exception-handling clauses. The method is used to obtain a object for the test method. The property is used to obtain a list of objects. > [!NOTE] -> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. +> Not all computer languages can generate clauses. The Visual Basic example shows a filter clause, using a Visual Basic `When` expression, which is omitted from the examples for other languages. This code example is part of a larger example provided for the class. diff --git a/xml/System.Reflection/MethodInfo.xml b/xml/System.Reflection/MethodInfo.xml index 2ef6e1bf1f120..cdb86f1c1f16a 100644 --- a/xml/System.Reflection/MethodInfo.xml +++ b/xml/System.Reflection/MethodInfo.xml @@ -631,7 +631,7 @@ public: . Therefore, when you examine a set of objects — for example, the array returned by — the property returns only when a given member is a method. + This property overrides . Therefore, when you examine a set of objects — for example, the array returned by — the property returns only when a given member is a method. To get the `MemberType` property, first get the class `Type`. From the `Type`, get the `MethodInfo`. From the `MethodInfo`, get the `MemberType`. diff --git a/xml/System.Reflection/ParameterInfo.xml b/xml/System.Reflection/ParameterInfo.xml index 820b84c4535bb..1fff3254527be 100644 --- a/xml/System.Reflection/ParameterInfo.xml +++ b/xml/System.Reflection/ParameterInfo.xml @@ -710,13 +710,13 @@ ## Examples - The following example shows how to test method parameters for the , , and attributes. + The following example shows how to test method parameters for the , , and attributes. The example contains a `DefineMethod` method that does the following: - Creates a dynamic assembly containing a `MyType` type. -- Adds a `MyMethod` method to `MyType`. `MyMethod` has three parameters. The first parameter is defined with , the second with , and the third with . +- Adds a `MyMethod` method to `MyType`. `MyMethod` has three parameters. The first parameter is defined with , the second with , and the third with . - Calls to complete the type. @@ -813,13 +813,13 @@ ## Examples - The following example shows how to test method parameters for the , , and attributes. + The following example shows how to test method parameters for the , , and attributes. The example contains a `DefineMethod` method that does the following: - Creates a dynamic assembly containing a `MyType` type. -- Adds a `MyMethod` method to `MyType`. `MyMethod` has three parameters. The first parameter is defined with , the second with , and the third with . +- Adds a `MyMethod` method to `MyType`. `MyMethod` has three parameters. The first parameter is defined with , the second with , and the third with . - Calls to complete the type. @@ -877,13 +877,13 @@ ## Examples - The following example shows how to test method parameters for the , , and attributes. + The following example shows how to test method parameters for the , , and attributes. The example contains a `DefineMethod` method that does the following: - Creates a dynamic assembly containing a `MyType` type. -- Adds a `MyMethod` method to `MyType`. `MyMethod` has three parameters. The first parameter is defined with , the second with , and the third with . +- Adds a `MyMethod` method to `MyType`. `MyMethod` has three parameters. The first parameter is defined with , the second with , and the third with . - Calls to complete the type. diff --git a/xml/System.Reflection/PropertyInfo.xml b/xml/System.Reflection/PropertyInfo.xml index 0b9f8d895bbb9..8392c0df49594 100644 --- a/xml/System.Reflection/PropertyInfo.xml +++ b/xml/System.Reflection/PropertyInfo.xml @@ -141,7 +141,7 @@ property returns the attributes associated with the property represented by this object. The attributes are primarily modifiers applied by a compiler when creating a property; they indicate whether a property is the default property, a `SpecialName` property, and so on. Note that, for almost all properties found in types in the .NET Framework class library, the value of the property is . + The property returns the attributes associated with the property represented by this object. The attributes are primarily modifiers applied by a compiler when creating a property; they indicate whether a property is the default property, a `SpecialName` property, and so on. Note that, for almost all properties found in types in the .NET Framework class library, the value of the property is . > [!TIP] > In most cases, you probably want to retrieve the custom attributes associated with a property. To do this, retrieve the value of the property, or call one of the overloads of the method. @@ -977,7 +977,7 @@ ## Remarks You call the overload to retrieve the value of a non-indexed property; if you try to retrieve the value of an indexed property, the method throws a exception. You can determine whether a property is indexed or not by calling the method. If the length of the returned array is zero, the property is not indexed. - This is a convenience method that provides an implementation for the abstract method with the parameter set to , the set to `null`, the object array of index values set to `null`, and the set to `null`. + This is a convenience method that provides an implementation for the abstract method with the parameter set to , the set to `null`, the object array of index values set to `null`, and the set to `null`. @@ -1052,7 +1052,7 @@ Console.WriteLine("CurrCult: " + To use the `GetValue` method, first get the class `Type`. From the `Type`, get the `PropertyInfo`. From the `PropertyInfo`, use the `GetValue` method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1148,7 +1148,7 @@ Console.WriteLine("CurrCult: " + To use the `GetValue` method, first get the class `Type`. From the `Type`, get the `PropertyInfo`. From the `PropertyInfo`, use the `GetValue` method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1470,12 +1470,12 @@ Console.WriteLine("CurrCult: " + If the property type of this object is a value type and `value` is `null`, the property will be set to the default value for that type. - This is a convenience method that calls the runtime implementation of the abstract method, specifying for the `BindingFlags` parameter, `null` for `Binder`, `null` for `Object[]`, and `null` for `CultureInfo`. + This is a convenience method that calls the runtime implementation of the abstract method, specifying for the `BindingFlags` parameter, `null` for `Binder`, `null` for `Object[]`, and `null` for `CultureInfo`. To use the method, first get a object that represents the class. From the , get the object. From the object, call the method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1567,12 +1567,12 @@ Console.WriteLine("CurrCult: " + To determine whether a property is indexed, use the method. If the resulting array has 0 (zero) elements, the property is not indexed. - This is a convenience method that calls the runtime implementation of the abstract method, specifying for the `BindingFlags` parameter, `null` for `Binder`, and `null` for `CultureInfo`. + This is a convenience method that calls the runtime implementation of the abstract method, specifying for the `BindingFlags` parameter, `null` for `Binder`, and `null` for `CultureInfo`. To use the method, first get a object that represents the class. From the , get the . From the , use the method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1685,7 +1685,7 @@ Console.WriteLine("CurrCult: " + To use the `SetValue` method, first get the class `Type`. From the `Type`, get the `PropertyInfo`. From the `PropertyInfo`, use the `SetValue` method. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access non-public members if the caller has been granted with the flag and if the grant set of the non-public members is restricted to the caller’s grant set, or a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. diff --git a/xml/System.Resources/MissingSatelliteAssemblyException.xml b/xml/System.Resources/MissingSatelliteAssemblyException.xml index a89e95d5d0a7b..01720dd1a667d 100644 --- a/xml/System.Resources/MissingSatelliteAssemblyException.xml +++ b/xml/System.Resources/MissingSatelliteAssemblyException.xml @@ -30,7 +30,7 @@ is thrown if the resource manager tries to retrieve but cannot find a resource for the default culture. However, the .NET Framework will load the resources for an app's default culture from a satellite assembly if the attribute specifies a value of for the location parameter. When this is the case, the exception is thrown when the resource manager tries to retrieve a resource of the default culture and the satellite assembly for the culture specified in the attribute is missing. Note that the exception is thrown by a resource retrieval method such as or , and not when the object is instantiated. + The default culture is the culture whose resources are loaded if the appropriate culture-specific resources cannot be found. By default, resources for the default culture are located in the main assembly, and a is thrown if the resource manager tries to retrieve but cannot find a resource for the default culture. However, the .NET Framework will load the resources for an app's default culture from a satellite assembly if the attribute specifies a value of for the location parameter. When this is the case, the exception is thrown when the resource manager tries to retrieve a resource of the default culture and the satellite assembly for the culture specified in the attribute is missing. Note that the exception is thrown by a resource retrieval method such as or , and not when the object is instantiated. uses the HRESULT COR_E_MISSINGSATELLITEASSEMBLY, which has the value 0x80131536. diff --git a/xml/System.Resources/ResXDataNode.xml b/xml/System.Resources/ResXDataNode.xml index d70bf1b23b718..6bb8d350e9ad5 100644 --- a/xml/System.Resources/ResXDataNode.xml +++ b/xml/System.Resources/ResXDataNode.xml @@ -166,7 +166,7 @@ property is . + If a comment has not been assigned to the resource item, the value of the property is . You access the property of an data node in an existing XML resource file by instantiating a object, setting the property to `true`, and calling the method to retrieve an object that you use to enumerate the items in the XML resource file. The property returns the object. diff --git a/xml/System.Resources/ResXResourceSet.xml b/xml/System.Resources/ResXResourceSet.xml index dc89d946e5abf..48b7435bf5661 100644 --- a/xml/System.Resources/ResXResourceSet.xml +++ b/xml/System.Resources/ResXResourceSet.xml @@ -19,7 +19,7 @@ The class enumerates over an , loads every name and value, and stores them in a hash table. You can then enumerate the resources in the object or retrieve individual resources by name. > [!NOTE] -> This class contains a and an at the class level that applies to all members. A exception is thrown when the immediate caller or a derived class does not have full-trust permission. +> This class contains a and an at the class level that applies to all members. A exception is thrown when the immediate caller or a derived class does not have full-trust permission. A object provides a convenient way to read all the resources in a .resx file into memory. You can use the method to retrieve a particular resource when the .resx file has been read into a instance. diff --git a/xml/System.Runtime.InteropServices/ClassInterfaceAttribute.xml b/xml/System.Runtime.InteropServices/ClassInterfaceAttribute.xml index a9c0faf0af28e..65846b1e26845 100644 --- a/xml/System.Runtime.InteropServices/ClassInterfaceAttribute.xml +++ b/xml/System.Runtime.InteropServices/ClassInterfaceAttribute.xml @@ -46,7 +46,7 @@ Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. For example, consider a managed class that exposes a class interface to COM clients. The first version of the class contains methods `North` and `South`. An unmanaged client can bind to the class interface, which provides `North` as the first method in the class interface and method `South` as the second method. Now consider the next version of the class, which has a new method, `East`, inserted between methods `North` and `South`. Unmanaged clients that try to bind to the new class through the old class interface end up calling method `East` when they intend to call method `South`, because the positioning of methods within the interface has changed. Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. Managed clients, which bind directly to classes, do not exhibit the same versioning problems. For specific guidelines on using a class interface, see [COM Callable Wrapper](~/docs/framework/interop/com-callable-wrapper.md). - The [Tlbimp.exe (Type Library Importer)](~/docs/framework/tools/tlbimp-exe-type-library-importer.md) always applies to imported classes the enumeration member to indicate that existing COM classes never expose managed interfaces. + The [Tlbimp.exe (Type Library Importer)](~/docs/framework/tools/tlbimp-exe-type-library-importer.md) always applies to imported classes the enumeration member to indicate that existing COM classes never expose managed interfaces. diff --git a/xml/System.Runtime.InteropServices/FieldOffsetAttribute.xml b/xml/System.Runtime.InteropServices/FieldOffsetAttribute.xml index 61bfda2a73e51..fb2b10c47badb 100644 --- a/xml/System.Runtime.InteropServices/FieldOffsetAttribute.xml +++ b/xml/System.Runtime.InteropServices/FieldOffsetAttribute.xml @@ -39,7 +39,7 @@ ## Remarks You can apply this attribute to fields. - This attribute is used when , with passed to its constructor, is applied to a class or structure to specify the offset of each non- `static` or constant member within the unmanaged representation of that class or structure. + This attribute is used when , with passed to its constructor, is applied to a class or structure to specify the offset of each non- `static` or constant member within the unmanaged representation of that class or structure. diff --git a/xml/System.Runtime.InteropServices/ICustomMarshaler.xml b/xml/System.Runtime.InteropServices/ICustomMarshaler.xml index 34f88d20b3e1c..a5592b22c675f 100644 --- a/xml/System.Runtime.InteropServices/ICustomMarshaler.xml +++ b/xml/System.Runtime.InteropServices/ICustomMarshaler.xml @@ -120,7 +120,7 @@ static ICustomMarshaler *GetInstance(String *pstrCookie); ## Applying MarshalAsAttribute To use a custom marshaler, you must apply the attribute to the parameter or field that is being marshaled. - You must also pass the enumeration value to the constructor. In addition, you must specify the field with one of the following named parameters: + You must also pass the enumeration value to the constructor. In addition, you must specify the field with one of the following named parameters: - (required): The assembly-qualified name of the custom marshaler. The name should include the namespace and class of the custom marshaler. If the custom marshaler is not defined in the assembly it is used in, you must specify the name of the assembly in which it is defined. @@ -161,7 +161,7 @@ library UserLib { [!code-csharp[System.Runtime.InteropServices.ICustomMarshaler#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.runtime.interopservices.icustommarshaler/cs/source.cs#5)] [!code-vb[System.Runtime.InteropServices.ICustomMarshaler#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.runtime.interopservices.icustommarshaler/vb/source.vb#5)] - In the previous examples, the first parameter provided to the attribute is the enumeration value `UnmanagedType.CustomMarshaler`. + In the previous examples, the first parameter provided to the attribute is the enumeration value `UnmanagedType.CustomMarshaler`. The second parameter is the field, which provides the assembly-qualified name of the custom marshaler. This name consists of the namespace and class of the custom marshaler (`MarshalType="MyCompany.NewOldMarshaler"`). diff --git a/xml/System.Runtime.InteropServices/Marshal.xml b/xml/System.Runtime.InteropServices/Marshal.xml index 32f7da5642c93..ebef01d434598 100644 --- a/xml/System.Runtime.InteropServices/Marshal.xml +++ b/xml/System.Runtime.InteropServices/Marshal.xml @@ -7375,7 +7375,7 @@ ## Remarks If `structure` is a value type, it can be boxed or unboxed. If it is boxed, it is unboxed before copying. - A formatted class is a reference type whose layout is specified by the attribute, as either or . + A formatted class is a reference type whose layout is specified by the attribute, as either or . copies the contents of `structure` to the pre-allocated block of memory that the `ptr` parameter points to. If `structure` contains reference types that marshal to COM interface pointers (interfaces, classes without layout, and ), the managed objects are kept alive with reference counts. All other reference types (for example, strings and arrays) are marshaled to copies. To release these managed or unmanaged objects, you must call the method before you free the memory block. @@ -7460,7 +7460,7 @@ attribute, as either or . + A formatted class is a reference type whose layout is specified by the attribute, as either or . copies the contents of `structure` to the pre-allocated block of memory that the `ptr` parameter points to. If `structure` contains reference types that marshal to COM interface pointers (interfaces, classes without layout, and ), the managed objects are kept alive with reference counts. All other reference types (for example, strings and arrays) are marshaled to copies. To release these managed or unmanaged objects, you must call the method before you free the memory block. diff --git a/xml/System.Runtime.InteropServices/MarshalAsAttribute.xml b/xml/System.Runtime.InteropServices/MarshalAsAttribute.xml index b77a6021bde98..9c8af037b9902 100644 --- a/xml/System.Runtime.InteropServices/MarshalAsAttribute.xml +++ b/xml/System.Runtime.InteropServices/MarshalAsAttribute.xml @@ -183,7 +183,7 @@ enumeration to specify the type of the array's elements. If a type is not specified, the default unmanaged type corresponding to the managed array's element type is used. For example, the `ArraySubType` for a `LPWStr` array in COM is . For additional information, see [Default Marshaling for Arrays](~/docs/framework/interop/default-marshaling-for-arrays.md). + You can set this parameter to a value from the enumeration to specify the type of the array's elements. If a type is not specified, the default unmanaged type corresponding to the managed array's element type is used. For example, the `ArraySubType` for a `LPWStr` array in COM is . For additional information, see [Default Marshaling for Arrays](~/docs/framework/interop/default-marshaling-for-arrays.md). ]]> @@ -426,7 +426,7 @@ is either , , or . For additional information, see [Default Marshaling for Arrays](~/docs/framework/interop/default-marshaling-for-arrays.md). + Initialize this field with your custom type to enable the elements of the `SAFEARRAY` to be marshaled successfully. This field is only needed when the is either , , or . For additional information, see [Default Marshaling for Arrays](~/docs/framework/interop/default-marshaling-for-arrays.md). ]]> @@ -516,7 +516,7 @@ The zero-based index of the array size parameter is defined by using the field. - If you specify both and with a field, the sum of the fields' values produces a size total. + If you specify both and with a field, the sum of the fields' values produces a size total. For more information, see [Default Marshaling for Arrays](~/docs/framework/interop/default-marshaling-for-arrays.md). diff --git a/xml/System.Runtime.InteropServices/StructLayoutAttribute.xml b/xml/System.Runtime.InteropServices/StructLayoutAttribute.xml index 4940e92bf39b9..ebf3a1df53c88 100644 --- a/xml/System.Runtime.InteropServices/StructLayoutAttribute.xml +++ b/xml/System.Runtime.InteropServices/StructLayoutAttribute.xml @@ -39,14 +39,14 @@ ## Remarks You can apply this attribute to classes or structures. - The common language runtime controls the physical layout of the data fields of a class or structure in managed memory. However, if you want to pass the type to unmanaged code, you can use the attribute to control the unmanaged layout of the type. Use the attribute with to force the members to be laid out sequentially in the order they appear. For , controls both the layout in managed memory and the layout in unmanaged memory. For non-blittable types, it controls the layout when the class or structure is marshaled to unmanaged code, but does not control the layout in managed memory. Use the attribute with to control the precise position of each data member. This affects both managed and unmanaged layout, for both blittable and non-blittable types. Using requires that you use the attribute to indicate the position of each field within the type. + The common language runtime controls the physical layout of the data fields of a class or structure in managed memory. However, if you want to pass the type to unmanaged code, you can use the attribute to control the unmanaged layout of the type. Use the attribute with to force the members to be laid out sequentially in the order they appear. For , controls both the layout in managed memory and the layout in unmanaged memory. For non-blittable types, it controls the layout when the class or structure is marshaled to unmanaged code, but does not control the layout in managed memory. Use the attribute with to control the precise position of each data member. This affects both managed and unmanaged layout, for both blittable and non-blittable types. Using requires that you use the attribute to indicate the position of each field within the type. - C#, Visual Basic, and C++ compilers apply the layout value to structures by default. For classes, you must apply the value explicitly. The [Tlbimp.exe (Type Library Importer)](~/docs/framework/tools/tlbimp-exe-type-library-importer.md) also applies the attribute; it always applies the value when it imports a type library. + C#, Visual Basic, and C++ compilers apply the layout value to structures by default. For classes, you must apply the value explicitly. The [Tlbimp.exe (Type Library Importer)](~/docs/framework/tools/tlbimp-exe-type-library-importer.md) also applies the attribute; it always applies the value when it imports a type library. ## Examples - The following example demonstrates a managed declaration of the `GetSystemTime` function and defines `MySystemTime` class with layout. `GetSystemTime` gets the system time and prints to the console. + The following example demonstrates a managed declaration of the `GetSystemTime` function and defines `MySystemTime` class with layout. `GetSystemTime` gets the system time and prints to the console. [!code-cpp[StructLayoutAttribute#1](~/samples/snippets/cpp/VS_Snippets_CLR/StructLayoutAttribute/CPP/structlayoutattribute.cpp#1)] [!code-csharp[StructLayoutAttribute#1](~/samples/snippets/csharp/VS_Snippets_CLR/StructLayoutAttribute/CS/structlayoutattribute.cs#1)] @@ -159,7 +159,7 @@ , all string arguments are converted to Unicode characters (`LPWSTR`) before they are passed to the unmanaged implementation. If the field is set to , the strings are converted to ANSI strings (`LPSTR`). If the `CharSet` field is set to , the conversion is platform-dependent (ANSI on Windows 98 and Windows Me, and Unicode on later versions). + If the `CharSet` field is set to , all string arguments are converted to Unicode characters (`LPWSTR`) before they are passed to the unmanaged implementation. If the field is set to , the strings are converted to ANSI strings (`LPSTR`). If the `CharSet` field is set to , the conversion is platform-dependent (ANSI on Windows 98 and Windows Me, and Unicode on later versions). ]]> @@ -196,7 +196,7 @@ field controls the alignment of a type's fields in memory. It affects both and . By default, the value is 0, indicating the default packing size for the current platform. The value of must be 0, 1, 2, 4, 8, 16, 32, 64, or 128: + The field controls the alignment of a type's fields in memory. It affects both and . By default, the value is 0, indicating the default packing size for the current platform. The value of must be 0, 1, 2, 4, 8, 16, 32, 64, or 128: The fields of a type instance are aligned by using the following rules: diff --git a/xml/System.Runtime.InteropServices/TypeLibConverter.xml b/xml/System.Runtime.InteropServices/TypeLibConverter.xml index ed8f872c06913..5d9b4c1f1ba1b 100644 --- a/xml/System.Runtime.InteropServices/TypeLibConverter.xml +++ b/xml/System.Runtime.InteropServices/TypeLibConverter.xml @@ -132,7 +132,7 @@ . Otherwise, at least one of these parameters must be specified. If `publicKey` is `null`, the public key in `keyPair` will be set in the target assembly's manifest metadata and a signature will be generated based on the contents of the assembly. If `keyPair` is `null`, `publicKey` will be set in the target assembly's manifest metadata and no signature will be generated. Specifying both parameters is not generally useful, and can result in an invalid signature. + If you do not want to generate a strong name for your assembly, it is valid for `publicKey` and `keyPair` to be `null`, as long as `flags` does not equal . Otherwise, at least one of these parameters must be specified. If `publicKey` is `null`, the public key in `keyPair` will be set in the target assembly's manifest metadata and a signature will be generated based on the contents of the assembly. If `keyPair` is `null`, `publicKey` will be set in the target assembly's manifest metadata and no signature will be generated. Specifying both parameters is not generally useful, and can result in an invalid signature. For more information on `ITypeLib`, please see its existing documentation in the MSDN library. @@ -207,7 +207,7 @@ . Otherwise, atleast one of these parameters must be specified. If `publicKey` is `null`, the public key in `keyPair` will be set in the target assembly's manifest metadata and a signature will be generated based on the contents of the assembly. If `keyPair` is `null`, `publicKey` will be set in the target assembly's manifest metadata and no signature will be generated. Specifying both parameters is not generally useful, and can result in an invalid signature. + If you do not want to generate a strong name for your assembly, it is valid for `publicKey` and `keyPair` to be `null`, as long as `flags` does not equal . Otherwise, atleast one of these parameters must be specified. If `publicKey` is `null`, the public key in `keyPair` will be set in the target assembly's manifest metadata and a signature will be generated based on the contents of the assembly. If `keyPair` is `null`, `publicKey` will be set in the target assembly's manifest metadata and no signature will be generated. Specifying both parameters is not generally useful, and can result in an invalid signature. For more information on `ITypeLib`, please see its existing documentation in the MSDN library. diff --git a/xml/System.Runtime.Remoting.Lifetime/ILease.xml b/xml/System.Runtime.Remoting.Lifetime/ILease.xml index 3d8441823a0e1..0c0dcdd764765 100644 --- a/xml/System.Runtime.Remoting.Lifetime/ILease.xml +++ b/xml/System.Runtime.Remoting.Lifetime/ILease.xml @@ -95,7 +95,7 @@ property is set to , then the lease will never time out and the object associated with it will have an infinite lifetime. + If the property is set to , then the lease will never time out and the object associated with it will have an infinite lifetime. ]]> @@ -240,7 +240,7 @@ is , then this lease will not take sponsors. + If the is , then this lease will not take sponsors. If a sponsor does not respond to a call to renew a lease within the time-out period, it is assumed to be dead and is removed from the list of sponsors for the current lease. diff --git a/xml/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.xml b/xml/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.xml index 92af59725d6d2..e64ef45d90703 100644 --- a/xml/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.xml +++ b/xml/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.xml @@ -120,7 +120,7 @@ |Property Type|Condition| |-------------------|---------------| ||`null`| -||A with a value that indicates that serialized data can be transmitted to or received from any of the other contexts. ()| +||A with a value that indicates that serialized data can be transmitted to or received from any of the other contexts. ()| @@ -663,7 +663,7 @@ ## Remarks Headers are used only for specific remoting applications. - This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. Do not use this method if your code can be called from partially trusted code. In partially trusted scenarios, use instead. In full trust scenarios, provides better performance than . + This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. Do not use this method if your code can be called from partially trusted code. In partially trusted scenarios, use instead. In full trust scenarios, provides better performance than . For successful deserialization, the current position in the stream must be at the beginning of the object graph. @@ -716,7 +716,7 @@ ## Remarks Details about the caller object are not sent to the remote object during the method call. Instead, these details are obtained from the original method call that is passed to the current method in the `methodCallMessage` parameter. - This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. Do not use this method if your code can be called from partially trusted code. In partially trusted scenarios, use instead. In full trust scenarios, provides better performance than . + This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. Do not use this method if your code can be called from partially trusted code. In partially trusted scenarios, use instead. In full trust scenarios, provides better performance than . For successful deserialization, the current position in the stream must be at the beginning of the object graph. diff --git a/xml/System.Runtime.Serialization.Formatters/IFieldInfo.xml b/xml/System.Runtime.Serialization.Formatters/IFieldInfo.xml index c6b4df38a8cfc..4ccf9074c1a0d 100644 --- a/xml/System.Runtime.Serialization.Formatters/IFieldInfo.xml +++ b/xml/System.Runtime.Serialization.Formatters/IFieldInfo.xml @@ -56,7 +56,7 @@ ## Remarks If a name is `null`, a default parameter name is used. - This property's `get` and `set` accessors are protected by a for the with the specified. + This property's `get` and `set` accessors are protected by a for the with the specified. ]]> @@ -95,7 +95,7 @@ for the with the specified. + This property's `get` and `set` accessors are protected by a for the with the specified. ]]> diff --git a/xml/System.Runtime.Serialization.Json/DataContractJsonSerializer.xml b/xml/System.Runtime.Serialization.Json/DataContractJsonSerializer.xml index 39b3fa7c75b2a..86e79045b9e55 100644 --- a/xml/System.Runtime.Serialization.Json/DataContractJsonSerializer.xml +++ b/xml/System.Runtime.Serialization.Json/DataContractJsonSerializer.xml @@ -438,7 +438,9 @@ 2.0.5.0 4.0.0.0 - + + + @@ -562,7 +564,9 @@ System.Runtime.Serialization.Json 4.0.0.0 - + + + @@ -786,7 +790,9 @@ 2.0.5.0 4.0.0.0 - + + + @@ -853,7 +859,9 @@ System.Runtime.Serialization.Json 4.0.0.0 - + + + @@ -958,7 +966,9 @@ 2.0.5.0 4.0.0.0 - + + + @@ -1030,7 +1040,9 @@ 2.0.5.0 4.0.0.0 - + + + diff --git a/xml/System.Runtime.Serialization/IObjectReference.xml b/xml/System.Runtime.Serialization/IObjectReference.xml index 2f9a03a13231b..9485f8ed7dcb7 100644 --- a/xml/System.Runtime.Serialization/IObjectReference.xml +++ b/xml/System.Runtime.Serialization/IObjectReference.xml @@ -79,7 +79,7 @@ For example, consider how objects are serialized. Instead of transmitting the data from the object, the system transmits a holder object with the name of the type object and information on the assembly where it is found in an object implementing . When both the type name and assembly name are available, the deserialization infrastructure calls on the holder object that has been transmitted. This holder returns the object that is inserted into the graph. - This method is protected by a for the with the specified. + This method is protected by a for the with the specified. diff --git a/xml/System.Runtime.Serialization/ISerializable.xml b/xml/System.Runtime.Serialization/ISerializable.xml index 399c268eab2f2..b6d376fd2a103 100644 --- a/xml/System.Runtime.Serialization/ISerializable.xml +++ b/xml/System.Runtime.Serialization/ISerializable.xml @@ -109,7 +109,7 @@ ## Remarks Any objects that are included in the are automatically tracked and serialized by the formatter. - Code that calls requires the for providing serialization services. Associated enumeration: . + Code that calls requires the for providing serialization services. Associated enumeration: . > [!NOTE] > It is not guaranteed that this method will be called only once per object instance during serialization. Therefore, the method should be implemented in such a way that its behavior will be the same regardless of the number of times it is called. diff --git a/xml/System.Runtime.Serialization/ISerializationSurrogate.xml b/xml/System.Runtime.Serialization/ISerializationSurrogate.xml index f6206f7ff2808..83db912433f8a 100644 --- a/xml/System.Runtime.Serialization/ISerializationSurrogate.xml +++ b/xml/System.Runtime.Serialization/ISerializationSurrogate.xml @@ -70,7 +70,7 @@ Having located the surrogate, this method stores information on the object `obj` in the `info` parameter. This information describes its view of that object, including the object's fields, properties, and current values. The might correspond to the actual object, or it can be a synthesized view of the surrogate. - This method is protected by a for the with the specified. + This method is protected by a for the with the specified. ]]> @@ -122,7 +122,7 @@ ## Remarks The method is called during deserialization. With this method, you can take the empty `obj` that has already been created, and enter `info` data into that object. Constructors are not invoked during deserialization of information and reconstruction of the object. - This method is protected by a for the with the specified. + This method is protected by a for the with the specified. ]]> diff --git a/xml/System.Runtime.Serialization/ISurrogateSelector.xml b/xml/System.Runtime.Serialization/ISurrogateSelector.xml index db32b8910e5eb..c92f9fac075e5 100644 --- a/xml/System.Runtime.Serialization/ISurrogateSelector.xml +++ b/xml/System.Runtime.Serialization/ISurrogateSelector.xml @@ -69,7 +69,7 @@ for the with the specified. + This method is protected by a for the with the specified. ]]> @@ -110,7 +110,7 @@ for the with the specified. + This method is protected by a for the with the specified. ]]> @@ -158,7 +158,7 @@ for the with the specified. + This method is protected by a for the with the specified. ]]> diff --git a/xml/System.Runtime.Versioning/ComponentGuaranteesAttribute.xml b/xml/System.Runtime.Versioning/ComponentGuaranteesAttribute.xml index 967ce51f57d41..13958b55722ef 100644 --- a/xml/System.Runtime.Versioning/ComponentGuaranteesAttribute.xml +++ b/xml/System.Runtime.Versioning/ComponentGuaranteesAttribute.xml @@ -38,27 +38,27 @@ ## Levels of Compatibility The supports the following levels of compatibility, which are represented by members of the enumeration: -- No version-to-version compatibility (). The client can expect that future versions will break the existing client. For more information, see the [No Compatibility](#None) section later in this topic. +- No version-to-version compatibility (). The client can expect that future versions will break the existing client. For more information, see the [No Compatibility](#None) section later in this topic. -- Side-by-side version-to-version compatibility (). The component has been tested to work when more than one version of the assembly is loaded in the same application domain. In general, future versions can break compatibility. However, when breaking changes are made, the old version is not modified but exists alongside the new version. Side-by-side execution is the expected way to make existing clients work when breaking changes are made. For more information, see the [Side-by-Side Compatibility](#SideBySide) section later in this topic. +- Side-by-side version-to-version compatibility (). The component has been tested to work when more than one version of the assembly is loaded in the same application domain. In general, future versions can break compatibility. However, when breaking changes are made, the old version is not modified but exists alongside the new version. Side-by-side execution is the expected way to make existing clients work when breaking changes are made. For more information, see the [Side-by-Side Compatibility](#SideBySide) section later in this topic. -- Stable version-to-version compatibility (). Future versions should not break the client, and side-by-side execution should not be needed. However, if the client is inadvertently broken, it may be possible to use side-by-side execution to fix the problem. For more information, see the [Stable Compatibility](#Standard) section. +- Stable version-to-version compatibility (). Future versions should not break the client, and side-by-side execution should not be needed. However, if the client is inadvertently broken, it may be possible to use side-by-side execution to fix the problem. For more information, see the [Stable Compatibility](#Standard) section. -- Exchange version-to-version compatibility (). Extraordinary care is taken to ensure that future versions will not break the client. The client should use only these types in the signature of interfaces that are used for communication with other assemblies that are deployed independently of one another. Only one version of these types is expected to be in a given application domain, which means that if a client breaks, side-by-side execution cannot fix the compatibility problem. For more information, see the [Exchange Type Compatibility](#Exchange) section. +- Exchange version-to-version compatibility (). Extraordinary care is taken to ensure that future versions will not break the client. The client should use only these types in the signature of interfaces that are used for communication with other assemblies that are deployed independently of one another. Only one version of these types is expected to be in a given application domain, which means that if a client breaks, side-by-side execution cannot fix the compatibility problem. For more information, see the [Exchange Type Compatibility](#Exchange) section. The following sections discuss each level of guarantee in greater detail. ### No Compatibility - Marking a component as indicates that the provider makes no guarantees about compatibility. Clients should avoid taking any dependencies on the exposed interfaces. This level of compatibility is useful for types that are experimental or that are publicly exposed but are intended only for components that are always updated at the same time. explicitly indicates that this component should not be used by external components. + Marking a component as indicates that the provider makes no guarantees about compatibility. Clients should avoid taking any dependencies on the exposed interfaces. This level of compatibility is useful for types that are experimental or that are publicly exposed but are intended only for components that are always updated at the same time. explicitly indicates that this component should not be used by external components. ### Side-by-Side Compatibility - Marking a component as indicates that the component has been tested to work when more than one version of the assembly is loaded into the same application domain. Breaking changes are allowed as long as they are made to the assembly that has the greater version number. Components that are bound to an old version of the assembly are expected to continue to bind to the old version, and other components can bind to the new version. It is also possible to update a component that is declared to be by destructively modifying the old version. + Marking a component as indicates that the component has been tested to work when more than one version of the assembly is loaded into the same application domain. Breaking changes are allowed as long as they are made to the assembly that has the greater version number. Components that are bound to an old version of the assembly are expected to continue to bind to the old version, and other components can bind to the new version. It is also possible to update a component that is declared to be by destructively modifying the old version. ### Stable Compatibility - Marking a type as indicates that the type should remain stable across versions. However, it may also be possible for side-by-side versions of a stable type to exist in the same application domain. + Marking a type as indicates that the type should remain stable across versions. However, it may also be possible for side-by-side versions of a stable type to exist in the same application domain. Stable types maintain a high binary compatibility bar. Because of this, providers should avoid making breaking changes to stable types. The following kinds of changes are acceptable: @@ -84,7 +84,7 @@ ### Exchange Type Compatibility - Marking a type as provides a stronger version compatibility guarantee than , and should be applied to the most stable of all types. These types are intended to be used for interchange between independently built components across all component boundaries in both time (any version of the CLR or any version of a component or application) and space (cross-process, cross-CLR in one process, cross-application domain in one CLR). If a breaking change is made to an exchange type, it is impossible to fix the issue by loading multiple versions of the type. + Marking a type as provides a stronger version compatibility guarantee than , and should be applied to the most stable of all types. These types are intended to be used for interchange between independently built components across all component boundaries in both time (any version of the CLR or any version of a component or application) and space (cross-process, cross-CLR in one process, cross-application domain in one CLR). If a breaking change is made to an exchange type, it is impossible to fix the issue by loading multiple versions of the type. Exchange types should be changed only when a problem is very serious (such as a severe security issue) or the probability of breakage is very low (that is, if the behavior was already broken in a random way that code could not have conceivably taken a dependency on). You can make the following kinds of changes to an exchange type: diff --git a/xml/System.Runtime/GCSettings.xml b/xml/System.Runtime/GCSettings.xml index cc30599888294..3b4a5470f654e 100644 --- a/xml/System.Runtime/GCSettings.xml +++ b/xml/System.Runtime/GCSettings.xml @@ -137,12 +137,12 @@ ## Remarks The LOH is used for allocating memory for large objects (such as arrays) that require more than 85,000 bytes. Because of the performance impact of copying large blocks of memory, the garbage collector ordinarily sweeps the LOH, which involves creating a list of the memory locations that were occupied by dead objects and that can be reused to satisfy future requests for allocation of memory for large objects. However, in apps that make extensive use of the LOH to store transient objects, memory fragmentation can also adversely impact performance. In this case, it is possible to use the property to compact rather than simply sweep the LOH during a garbage collection. - The default value of the property is , which indicates that the LOH is not compacted during garbage collections. If you assign the property a value of , the LOH is compacted during the next full blocking garbage collection, and the property value is reset to . + The default value of the property is , which indicates that the LOH is not compacted during garbage collections. If you assign the property a value of , the LOH is compacted during the next full blocking garbage collection, and the property value is reset to . > [!NOTE] -> Background garbage collections are not blocking. This means that, if you set the property to , any background generation 2 collections that occur subsequently do not compact the LOH. Only the first blocking generation 2 collection compacts the LOH. +> Background garbage collections are not blocking. This means that, if you set the property to , any background generation 2 collections that occur subsequently do not compact the LOH. Only the first blocking generation 2 collection compacts the LOH. - After the property is set to , the next full blocking garbage collection (and compaction of the LOH) occurs at an indeterminate future time. You can compact the LOH immediately by using code like the following: + After the property is set to , the next full blocking garbage collection (and compaction of the LOH) occurs at an indeterminate future time. You can compact the LOH immediately by using code like the following: [!code-csharp[System.Runtime.GCSettings#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.runtime.gcsettings/cs/lohcompactionmode1.cs#1)] [!code-vb[System.Runtime.GCSettings#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.runtime.gcsettings/vb/lohcompactionmode1.vb#1)] @@ -193,7 +193,7 @@ ## Remarks You can reduce the level of intrusiveness of garbage collection in your application by setting the to during critical operations. After such operations are completed, return to a higher latency mode so that more objects can be reclaimed to increase memory. - Ordinarily, you set the value of the property to define the garbage collector's latency mode. However, you cannot set the no GC region latency mode by assigning the enumeration value to the property. Instead, you call the method to begin the no GC region latency mode, and you call the to end it. + Ordinarily, you set the value of the property to define the garbage collector's latency mode. However, you cannot set the no GC region latency mode by assigning the enumeration value to the property. Instead, you call the method to begin the no GC region latency mode, and you call the to end it. See [Latency Modes](~/docs/standard/garbage-collection/latency.md) for a discussion of how the runtime configuration settings for garbage collection affect the default value of the enumeration. diff --git a/xml/System.Security.AccessControl/EventWaitHandleAccessRule.xml b/xml/System.Security.AccessControl/EventWaitHandleAccessRule.xml index c800d0c95431b..a4fee378e9426 100644 --- a/xml/System.Security.AccessControl/EventWaitHandleAccessRule.xml +++ b/xml/System.Security.AccessControl/EventWaitHandleAccessRule.xml @@ -90,7 +90,7 @@ (by calling the , or method), a user must have access. To signal an event by calling the method, or to reset it to the unsignaled state by calling the method, a user must have access. To signal an object and then wait on it by calling the method, a user must have and access. + To wait on an (by calling the , or method), a user must have access. To signal an event by calling the method, or to reset it to the unsignaled state by calling the method, a user must have access. To signal an object and then wait on it by calling the method, a user must have and access. ]]> @@ -139,7 +139,7 @@ (by calling the , or method), a user must have access. To signal an event by calling the method, or to reset it to the unsignaled state by calling the method, a user must have access. To signal an object and then wait on it by calling the method, a user must have and access. + To wait on an (by calling the , or method), a user must have access. To signal an event by calling the method, or to reset it to the unsignaled state by calling the method, a user must have access. To signal an object and then wait on it by calling the method, a user must have and access. This constructor is equivalent to creating an object, by passing `identity` to the constructor, and passing the newly created object to the constructor. diff --git a/xml/System.Security.AccessControl/EventWaitHandleRights.xml b/xml/System.Security.AccessControl/EventWaitHandleRights.xml index 5afa02d1ce88b..e85a2400b3718 100644 --- a/xml/System.Security.AccessControl/EventWaitHandleRights.xml +++ b/xml/System.Security.AccessControl/EventWaitHandleRights.xml @@ -34,7 +34,7 @@ ## Examples - The following code example demonstrates the use of values when creating and using objects. The example creates an object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing rule. + The following code example demonstrates the use of values when creating and using objects. The example creates an object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing rule. > [!NOTE] > This example does not attach the security object to an object; see , method, and . diff --git a/xml/System.Security.AccessControl/MutexAccessRule.xml b/xml/System.Security.AccessControl/MutexAccessRule.xml index f9a972b312c00..76e2b3f5f7240 100644 --- a/xml/System.Security.AccessControl/MutexAccessRule.xml +++ b/xml/System.Security.AccessControl/MutexAccessRule.xml @@ -90,7 +90,7 @@ (by calling the , or method), a user must have access. To release the mutex, by calling the method, the user must have access. + To wait on a (by calling the , or method), a user must have access. To release the mutex, by calling the method, the user must have access. ]]> @@ -139,7 +139,7 @@ (by calling the , or method), a user must have access. To release the mutex, by calling the methods, the user must have access. + To wait on a (by calling the , or method), a user must have access. To release the mutex, by calling the methods, the user must have access. This constructor is equivalent to creating an object, by passing `identity` to the constructor, and passing the newly created object to the constructor. diff --git a/xml/System.Security.AccessControl/MutexRights.xml b/xml/System.Security.AccessControl/MutexRights.xml index 665da37150549..335ba7e9ba58c 100644 --- a/xml/System.Security.AccessControl/MutexRights.xml +++ b/xml/System.Security.AccessControl/MutexRights.xml @@ -34,7 +34,7 @@ ## Examples - The following code example demonstrates the use of values when creating and using objects. The example creates an object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing rule. + The following code example demonstrates the use of values when creating and using objects. The example creates an object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing rule. > [!NOTE] > This example does not attach the security object to a object; see , method, and . diff --git a/xml/System.Security.AccessControl/RegistryAccessRule.xml b/xml/System.Security.AccessControl/RegistryAccessRule.xml index 99543df24850b..c92de2a582d0c 100644 --- a/xml/System.Security.AccessControl/RegistryAccessRule.xml +++ b/xml/System.Security.AccessControl/RegistryAccessRule.xml @@ -92,7 +92,7 @@ and . + This constructor specifies default propagation and inheritance. That is, and . ]]> @@ -144,7 +144,7 @@ and . + This constructor specifies default propagation and inheritance. That is, and . This constructor is equivalent to creating an object, by passing `identity` to the constructor, and passing the newly created object to the constructor. @@ -214,7 +214,7 @@ flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. + All registry keys are containers, so the only inheritance flag that is meaningful for registry keys is the flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. |Propagation flags|S|CS|GS| |-----------------------|-------|--------|--------| @@ -228,7 +228,7 @@ For example, if the flag is specified for `inheritanceFlags` and the propagation flag is specified for `propagationFlags`, this rule does not apply to the immediate subkey, but does apply to all its immediate child subkeys and to all subkeys they contain. > [!NOTE] -> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the combination of otherwise compatible rules. +> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the combination of otherwise compatible rules. ]]> @@ -292,7 +292,7 @@ flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. + All registry keys are containers, so the only inheritance flag that is meaningful for registry keys is the flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. |Propagation flags|S|CS|GS| |-----------------------|-------|--------|--------| @@ -306,7 +306,7 @@ For example, if the flag is specified for `inheritanceFlags` and the propagation flag is specified for `propagationFlags`, this rule does not apply to the immediate subkey, but does apply to all its immediate child subkeys and to all subkeys they contain. > [!NOTE] -> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the combination of otherwise compatible rules. +> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the combination of otherwise compatible rules. This constructor is equivalent to creating an object, by passing `identity` to the constructor, and passing the newly created object to the constructor. diff --git a/xml/System.Security.AccessControl/RegistryAuditRule.xml b/xml/System.Security.AccessControl/RegistryAuditRule.xml index 17d2505352ba6..0d59636bc6b97 100644 --- a/xml/System.Security.AccessControl/RegistryAuditRule.xml +++ b/xml/System.Security.AccessControl/RegistryAuditRule.xml @@ -84,7 +84,7 @@ flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. + All registry keys are containers, so the only inheritance flag that is meaningful for registry keys is the flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. |Propagation flags|S|CS|GS| |-----------------------|-------|--------|--------| @@ -98,7 +98,7 @@ For example, if the flag is specified for `inheritanceFlags` and the propagation flag is specified for `propagationFlags`, this rule does not apply to the immediate subkey, but does apply to all its immediate child subkeys and to all subkeys they contain. > [!NOTE] -> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. +> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. ]]> @@ -162,7 +162,7 @@ flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. + All registry keys are containers, so the only inheritance flag that is meaningful for registry keys is the flag. If this flag is not specified, the propagation flags are ignored, and only the immediate key is affected. If the flag is present, the rule is propagated as shown in the following table. The table assumes there is a subkey S with child subkey CS and grandchild subkey GS. That is, the path for the grandchild subkey is S\CS\GS. |Propagation flags|S|CS|GS| |-----------------------|-------|--------|--------| @@ -176,7 +176,7 @@ For example, if the flag is specified for `inheritanceFlags` and the propagation flag is specified for `propagationFlags`, this rule does not apply to the immediate subkey, but does apply to all its immediate child subkeys and to all subkeys they contain. > [!NOTE] -> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. +> Although you can specify the flag for `inheritanceFlags`, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. This constructor is equivalent to creating an object, by passing `identity` to the constructor, and passing the newly created object to the constructor. diff --git a/xml/System.Security.AccessControl/RegistrySecurity.xml b/xml/System.Security.AccessControl/RegistrySecurity.xml index cc0e8cc9edf84..9ad9fcfbbd0d7 100644 --- a/xml/System.Security.AccessControl/RegistrySecurity.xml +++ b/xml/System.Security.AccessControl/RegistrySecurity.xml @@ -70,7 +70,7 @@ The following code example shows how the method removes rights from a compatible rule, and how the method merges rights with compatible rules. - The example creates a object and adds a rule that allows the current user rights. The example then creates a rule that grants the user , with the same inheritance and propagation rights as the first rule, and uses the method to remove this new rule from the object. is a constituent of , so it is removed from the compatible rule. The rules in the object are displayed, showing the remaining constituents of . + The example creates a object and adds a rule that allows the current user rights. The example then creates a rule that grants the user , with the same inheritance and propagation rights as the first rule, and uses the method to remove this new rule from the object. is a constituent of , so it is removed from the compatible rule. The rules in the object are displayed, showing the remaining constituents of . The example code then calls the method to merge the right back into the rule in the object. @@ -203,7 +203,7 @@ The recommended way to create access control rules is to use the constructors of the class. > [!NOTE] -> Although you can specify the flag, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. +> Although you can specify the flag, there is no point in doing so. For the purposes of access control, the name/value pairs in a subkey are not separate objects. The access rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. ]]> @@ -286,7 +286,7 @@ ## Remarks The method searches for rules with the same user or group and the same as `rule`. If none are found, `rule` is added. If a matching rule is found, the rights in `rule` are merged with the existing rule. - Rules cannot be merged if they have different inheritance flags. For example, if a user is allowed read access with no inheritance flags, and is used to add a rule giving the user write access with inheritance for subkeys (), the two rules cannot be merged. + Rules cannot be merged if they have different inheritance flags. For example, if a user is allowed read access with no inheritance flags, and is used to add a rule giving the user write access with inheritance for subkeys (), the two rules cannot be merged. Rules with different values are never merged. @@ -344,7 +344,7 @@ ## Remarks The method searches for rules with the same user or group as `rule`. If none are found, `rule` is added. If a matching rule is found, the flags in `rule` are merged into the existing rule. - Rules cannot be merged if they have different inheritance flags. For example, if failed attempts to write to a key are audited for a particular user, with no inheritance flags, and is used to add a rule specifying that failed attempts to change permissions are to be audited for the same user, but with inheritance for subkeys (), the two rules cannot be merged. + Rules cannot be merged if they have different inheritance flags. For example, if failed attempts to write to a key are audited for a particular user, with no inheritance flags, and is used to add a rule specifying that failed attempts to change permissions are to be audited for the same user, but with inheritance for subkeys (), the two rules cannot be merged. ]]> @@ -395,7 +395,7 @@ The recommended way to create audit rules is to use the constructors of the class. > [!NOTE] -> Although you can specify the flag, there is no point in doing so. For the purposes of audit control, the name/value pairs in a subkey are not separate objects. The audit rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. +> Although you can specify the flag, there is no point in doing so. For the purposes of audit control, the name/value pairs in a subkey are not separate objects. The audit rights to name/value pairs are controlled by the rights of the subkey. Furthermore, since all subkeys are containers (that is, they can contain other subkeys), they are not affected by the flag. Finally, specifying the flag needlessly complicates the maintenance of rules, because it interferes with the normal combination of compatible rules. ]]> @@ -485,7 +485,7 @@ ## Examples The following code example shows how the method removes rights from a compatible rule, and how the method merges rights with compatible rules. - The example creates a object and adds a rule that allows the current user rights. The example then creates a rule that grants the user , with the same inheritance and propagation rights as the first rule, and uses the method to remove this new rule from the object. is a constituent of , so it is removed from the compatible rule. The rules in the object are displayed, showing the remaining constituents of . + The example creates a object and adds a rule that allows the current user rights. The example then creates a rule that grants the user , with the same inheritance and propagation rights as the first rule, and uses the method to remove this new rule from the object. is a constituent of , so it is removed from the compatible rule. The rules in the object are displayed, showing the remaining constituents of . The example code then calls the method to merge the right back into the rule in the object. @@ -534,7 +534,7 @@ ## Remarks The current is searched for rules that have the same user and the same value as `rule`. Any rights, inheritance flags, or propagation flags specified by `rule` are ignored when performing this search. If no matching rules are found, no action is taken. - For example, if a user has multiple rules that allow various rights with different inheritance and propagation flags, you can remove all those rules by creating a object that specifies the user and , with any arbitrary rights and flags, and passing that rule to the method. + For example, if a user has multiple rules that allow various rights with different inheritance and propagation flags, you can remove all those rules by creating a object that specifies the user and , with any arbitrary rights and flags, and passing that rule to the method. diff --git a/xml/System.Security.AccessControl/SemaphoreAccessRule.xml b/xml/System.Security.AccessControl/SemaphoreAccessRule.xml index 5f7f875e5ed24..8283e700c7447 100644 --- a/xml/System.Security.AccessControl/SemaphoreAccessRule.xml +++ b/xml/System.Security.AccessControl/SemaphoreAccessRule.xml @@ -95,7 +95,7 @@ , for example by calling the method, a user must have access. To exit the semaphore, by calling the method, the user must have access. + To enter a , for example by calling the method, a user must have access. To exit the semaphore, by calling the method, the user must have access. ]]> @@ -144,7 +144,7 @@ , for example by calling the method, a user must have access. To exit the semaphore, by calling the method, the user must have access. + To enter a , for example by calling the method, a user must have access. To exit the semaphore, by calling the method, the user must have access. This constructor is equivalent to creating an object, by passing `identity` to the constructor, and passing the newly created object to the constructor. diff --git a/xml/System.Security.AccessControl/SemaphoreRights.xml b/xml/System.Security.AccessControl/SemaphoreRights.xml index c59addf2c7241..7d118a3a3b8a5 100644 --- a/xml/System.Security.AccessControl/SemaphoreRights.xml +++ b/xml/System.Security.AccessControl/SemaphoreRights.xml @@ -39,7 +39,7 @@ ## Examples - The following code example demonstrates the use of values when creating and using objects. The example creates a object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing rule. + The following code example demonstrates the use of values when creating and using objects. The example creates a object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing rule. > [!NOTE] > This example does not attach the security object to an object; see , method, and . diff --git a/xml/System.Security.Cryptography.Pkcs/CmsSigner.xml b/xml/System.Security.Cryptography.Pkcs/CmsSigner.xml index 4252b059e3e7e..936796be044fd 100644 --- a/xml/System.Security.Cryptography.Pkcs/CmsSigner.xml +++ b/xml/System.Security.Cryptography.Pkcs/CmsSigner.xml @@ -62,7 +62,7 @@ . An exception to those values when this constructor is used is that is set to . + For the default property values used with this constructor, see . An exception to those values when this constructor is used is that is set to . ]]> diff --git a/xml/System.Security.Cryptography.Pkcs/EnvelopedCms.xml b/xml/System.Security.Cryptography.Pkcs/EnvelopedCms.xml index c2aaca2fe9bd8..e12872f43ed1e 100644 --- a/xml/System.Security.Cryptography.Pkcs/EnvelopedCms.xml +++ b/xml/System.Security.Cryptography.Pkcs/EnvelopedCms.xml @@ -343,9 +343,9 @@ ## .NET Framework Security The following permissions are required to access the decryption key: -- +- -- +- ]]> @@ -385,9 +385,9 @@ ## .NET Framework Security The following permissions are required to access the decryption key: -- +- -- +- ]]> @@ -428,9 +428,9 @@ ## .NET Framework Security The following permissions are required to access the decryption key: -- +- -- +- ]]> @@ -473,9 +473,9 @@ ## .NET Framework Security The following permissions are required to access the decryption key: -- +- -- +- ]]> @@ -550,7 +550,7 @@ ## .NET Framework Security The following permissions are required to display the user interface: -- +- ]]> diff --git a/xml/System.Security.Cryptography.Pkcs/SignedCms.xml b/xml/System.Security.Cryptography.Pkcs/SignedCms.xml index 527a3efe0d34c..3d9624af2a9d0 100644 --- a/xml/System.Security.Cryptography.Pkcs/SignedCms.xml +++ b/xml/System.Security.Cryptography.Pkcs/SignedCms.xml @@ -381,13 +381,13 @@ ## .NET Framework Security The following permissions are required to display the user interface: -- +- The following permissions are required to access the signature key: -- +- -- +- @@ -434,9 +434,9 @@ ## .NET Framework Security The following permissions are required to access the signature key: -- +- -- +- @@ -486,13 +486,13 @@ ## .NET Framework Security The following permissions are required to display the user interface: -- +- The following permissions are required to access the signature key: -- +- -- +- ]]> diff --git a/xml/System.Security.Cryptography.Pkcs/SignerInfo.xml b/xml/System.Security.Cryptography.Pkcs/SignerInfo.xml index 5a1a275230d8e..f16ae2b5d069f 100644 --- a/xml/System.Security.Cryptography.Pkcs/SignerInfo.xml +++ b/xml/System.Security.Cryptography.Pkcs/SignerInfo.xml @@ -181,13 +181,13 @@ ## .NET Framework Security The following permissions are required to display the user interface: -- +- The following permissions are required to access the signature key: -- +- -- +- ]]> @@ -222,9 +222,9 @@ ## .NET Framework Security The following permissions are required to access the signature key: -- +- -- +- ]]> diff --git a/xml/System.Security.Cryptography.X509Certificates/X509Store.xml b/xml/System.Security.Cryptography.X509Certificates/X509Store.xml index d7940b6864618..39c3850a27c08 100644 --- a/xml/System.Security.Cryptography.X509Certificates/X509Store.xml +++ b/xml/System.Security.Cryptography.X509Certificates/X509Store.xml @@ -49,7 +49,7 @@ This example tries to open each standard store in each standard location on the current computer. It prints a summary that shows whether each store exists and, if so, the number of certificates it contains. - The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. + The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. [!code-csharp[x509store2#2](~/samples/snippets/csharp/VS_Snippets_CLR/x509store2/CS/storenames1.cs#2)] [!code-vb[x509store2#2](~/samples/snippets/visualbasic/VS_Snippets_CLR/x509store2/vb/storenames1.vb#2)] @@ -579,7 +579,7 @@ This example tries to open each standard store in each standard location on the current computer. It prints a summary that shows whether each store exists and, if so, the number of certificates it contains. - The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. + The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. [!code-csharp[x509store2#2](~/samples/snippets/csharp/VS_Snippets_CLR/x509store2/CS/storenames1.cs#2)] [!code-vb[x509store2#2](~/samples/snippets/visualbasic/VS_Snippets_CLR/x509store2/vb/storenames1.vb#2)] @@ -739,7 +739,7 @@ This example tries to open each standard store in each standard location on the current computer. It prints a summary that shows whether each store exists and, if so, the number of certificates it contains. - The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. + The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. [!code-csharp[x509store2#2](~/samples/snippets/csharp/VS_Snippets_CLR/x509store2/CS/storenames1.cs#2)] [!code-vb[x509store2#2](~/samples/snippets/visualbasic/VS_Snippets_CLR/x509store2/vb/storenames1.vb#2)] @@ -799,7 +799,7 @@ This example tries to open each standard store in each standard location on the current computer. It prints a summary that shows whether each store exists and, if so, the number of certificates it contains. - The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. + The example creates an object for each combination of standard name and standard location. It calls the method with the flag, which opens the physical store only if it already exists. If the physical store exists, the example uses the , , and properties to display the number of certificates in the store. [!code-csharp[x509store2#2](~/samples/snippets/csharp/VS_Snippets_CLR/x509store2/CS/storenames1.cs#2)] [!code-vb[x509store2#2](~/samples/snippets/visualbasic/VS_Snippets_CLR/x509store2/vb/storenames1.vb#2)] diff --git a/xml/System.Security.Cryptography/CngKey.xml b/xml/System.Security.Cryptography/CngKey.xml index 616f05c1601c6..65fd51923d64a 100644 --- a/xml/System.Security.Cryptography/CngKey.xml +++ b/xml/System.Security.Cryptography/CngKey.xml @@ -1073,7 +1073,7 @@ - Key storage provider (KSP): . Use the overload if you want to specify another KSP. -- Key open options: . +- Key open options: . ]]> diff --git a/xml/System.Security.Cryptography/CngKeyCreationParameters.xml b/xml/System.Security.Cryptography/CngKeyCreationParameters.xml index 858e48c53b371..c85d45a2cc513 100644 --- a/xml/System.Security.Cryptography/CngKeyCreationParameters.xml +++ b/xml/System.Security.Cryptography/CngKeyCreationParameters.xml @@ -127,7 +127,7 @@ object defines options that are used when you create a new object. These options determine whether the key is created in the user or machine key store, and whether a new key should overwrite an existing key. By default, if is not specified, the key is created in the user store. + The returned object defines options that are used when you create a new object. These options determine whether the key is created in the user or machine key store, and whether a new key should overwrite an existing key. By default, if is not specified, the key is created in the user store. ]]> diff --git a/xml/System.Security.Cryptography/ECDiffieHellmanCng.xml b/xml/System.Security.Cryptography/ECDiffieHellmanCng.xml index 4bb4353ace1b1..eef2c176ec3c6 100644 --- a/xml/System.Security.Cryptography/ECDiffieHellmanCng.xml +++ b/xml/System.Security.Cryptography/ECDiffieHellmanCng.xml @@ -524,7 +524,7 @@ field contains named curve parameters; otherwise, it contains explicit parameters. + If the key was created as a named curve, the field contains named curve parameters; otherwise, it contains explicit parameters. ]]> diff --git a/xml/System.Security.Cryptography/ECDiffieHellmanCngPublicKey.xml b/xml/System.Security.Cryptography/ECDiffieHellmanCngPublicKey.xml index 93284eb6c5751..2ac4b92f4530d 100644 --- a/xml/System.Security.Cryptography/ECDiffieHellmanCngPublicKey.xml +++ b/xml/System.Security.Cryptography/ECDiffieHellmanCngPublicKey.xml @@ -102,7 +102,7 @@ field contains named curve parameters; otherwise, it contains explicit parameters. + If the key was created as a named curve, the field contains named curve parameters; otherwise, it contains explicit parameters. ]]> @@ -222,7 +222,7 @@ for information about the XML format that this method uses. + See for information about the XML format that this method uses. ]]> diff --git a/xml/System.Security.Cryptography/ECDsaCng.xml b/xml/System.Security.Cryptography/ECDsaCng.xml index 75fb97afcc07f..a7dfd9d612717 100644 --- a/xml/System.Security.Cryptography/ECDsaCng.xml +++ b/xml/System.Security.Cryptography/ECDsaCng.xml @@ -628,7 +628,7 @@ ## Remarks This method generates a signature for the specified data by hashing the input data using the property, and then signing the result. - The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. + The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. ]]> @@ -672,7 +672,7 @@ ## Remarks This method generates a signature for the specified data stream by hashing the input data using the property, and then signing the result. - The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. + The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. ]]> @@ -720,7 +720,7 @@ ## Remarks This method generates a signature for the specified data by hashing the input data using the property, and then signing the result - The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. + The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. ]]> @@ -765,7 +765,7 @@ flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. + The flag is required if the Cryptography Next Generation (CNG) key is not randomly generated by the object. ]]> diff --git a/xml/System.Security.Permissions/ReflectionPermission.xml b/xml/System.Security.Permissions/ReflectionPermission.xml index 8ad9d8404211e..a64670ef6968d 100644 --- a/xml/System.Security.Permissions/ReflectionPermission.xml +++ b/xml/System.Security.Permissions/ReflectionPermission.xml @@ -33,9 +33,9 @@ Without , code can use reflection to access only the public members of objects. Code with and the appropriate flags can access the `protected` and `private` members of objects. > [!CAUTION] -> Because can provide access to non-public types and members, we recommend that you do not grant to Internet code, except with the flag. allows access to non-public members, with the restriction that the grant set of the non-public members must be equal to, or a subset of, the grant set of the code that accesses the non-public members. +> Because can provide access to non-public types and members, we recommend that you do not grant to Internet code, except with the flag. allows access to non-public members, with the restriction that the grant set of the non-public members must be equal to, or a subset of, the grant set of the code that accesses the non-public members. - Certain features of reflection emit, such as emitting debug symbols, require with the flag. + Certain features of reflection emit, such as emitting debug symbols, require with the flag. For more information, see the enumeration. diff --git a/xml/System.Security.Permissions/ReflectionPermissionAttribute.xml b/xml/System.Security.Permissions/ReflectionPermissionAttribute.xml index c5f06ce91b090..8a22616042b1d 100644 --- a/xml/System.Security.Permissions/ReflectionPermissionAttribute.xml +++ b/xml/System.Security.Permissions/ReflectionPermissionAttribute.xml @@ -173,7 +173,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], emitting code no longer requires with the flag. Some features of reflection emit, such as emitting debug symbols, still require the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], emitting code no longer requires with the flag. Some features of reflection emit, such as emitting debug symbols, still require the flag. (See [Security Issues in Reflection Emit](~/docs/framework/reflection-and-codedom/security-issues-in-reflection-emit.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. diff --git a/xml/System.Security/CodeAccessPermission.xml b/xml/System.Security/CodeAccessPermission.xml index 857f29a02f7a9..d234f41496ef3 100644 --- a/xml/System.Security/CodeAccessPermission.xml +++ b/xml/System.Security/CodeAccessPermission.xml @@ -33,7 +33,7 @@ . + Code access permissions use a stack walk to ensure that all callers of the code have been granted a permission. If a permission object is `null`, it is handled the same as a permission object with the state . The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack. diff --git a/xml/System.Security/HostProtectionException.xml b/xml/System.Security/HostProtectionException.xml index f7b40b4bb9791..06d25d2c9e1e0 100644 --- a/xml/System.Security/HostProtectionException.xml +++ b/xml/System.Security/HostProtectionException.xml @@ -60,8 +60,8 @@ |Property|Value| |--------------|-----------| -||| -||| +||| +||| ]]> @@ -191,7 +191,7 @@ attribute that indicates that the method exposes shared state. When the method is called, the performs a link demand for shared state. If the host has set shared state as a prohibited category, then a is raised with a `demandedResources` property value of . + The `demandedResources` parameter specifies the demanded host protection categories that caused the exception to be thrown. For example, suppose that a method has a attribute that indicates that the method exposes shared state. When the method is called, the performs a link demand for shared state. If the host has set shared state as a prohibited category, then a is raised with a `demandedResources` property value of . ]]> @@ -221,7 +221,7 @@ attribute that indicates that the method exposes shared state. When the method is called, the performs a link demand for shared state. If the host has set shared state as a prohibited category, then a is raised, and the value of the property is . + This property returns the demanded host protection categories that caused the exception to be thrown. For example, suppose that a method has a attribute that indicates that the method exposes shared state. When the method is called, the performs a link demand for shared state. If the host has set shared state as a prohibited category, then a is raised, and the value of the property is . ]]> diff --git a/xml/System.Security/SecurityContext.xml b/xml/System.Security/SecurityContext.xml index 2f69e454bbb21..00390b352891f 100644 --- a/xml/System.Security/SecurityContext.xml +++ b/xml/System.Security/SecurityContext.xml @@ -319,7 +319,7 @@ Use the method on the returned structure to return the object to its previous state. - This method is protected with a for permission. A fully trusted component can call this method to suppress the flow of the information during asynchronous calls. When the flow is suppressed, the method returns `null`. + This method is protected with a for permission. A fully trusted component can call this method to suppress the flow of the information during asynchronous calls. When the flow is suppressed, the method returns `null`. ]]> diff --git a/xml/System.Security/SecurityCriticalAttribute.xml b/xml/System.Security/SecurityCriticalAttribute.xml index a1cc4f8b18ae4..7edf7a73ab474 100644 --- a/xml/System.Security/SecurityCriticalAttribute.xml +++ b/xml/System.Security/SecurityCriticalAttribute.xml @@ -39,7 +39,7 @@ > [!NOTE] > The is equivalent to a link demand for full trust. A type or member marked with the can be called only by fully trusted code; it does not have to demand specific permissions. It cannot be called by partially trusted code. - Applying the at the assembly level identifies the assembly as a security-critical assembly. The entire assembly can be identified as critical by setting the scope parameter . + Applying the at the assembly level identifies the assembly as a security-critical assembly. The entire assembly can be identified as critical by setting the scope parameter . ]]> diff --git a/xml/System.ServiceModel.Activities/CorrelationScope.xml b/xml/System.ServiceModel.Activities/CorrelationScope.xml index c766723f81dd9..1b5d8b8174e96 100644 --- a/xml/System.ServiceModel.Activities/CorrelationScope.xml +++ b/xml/System.ServiceModel.Activities/CorrelationScope.xml @@ -21,7 +21,7 @@ ## Examples - The following example shows how to create a . This example creates a and adds a (among other activites). The contains a that is composed of a and activity. + The following example shows how to create a . This example creates a and adds a (among other activites). The contains a that is composed of a and activity. [!code-csharp[ContentBasedCorrelation#3](~/samples/snippets/csharp/VS_Snippets_CFX/contentbasedcorrelation/cs/client.cs#3)] diff --git a/xml/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.xml b/xml/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.xml index dfd0784e4832e..d665bdb16d675 100644 --- a/xml/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.xml +++ b/xml/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.xml @@ -251,7 +251,7 @@ enumeration for further values and their descriptions. + See the enumeration for further values and their descriptions. ]]> diff --git a/xml/System.ServiceModel.Configuration/NetMsmqBindingElement.xml b/xml/System.ServiceModel.Configuration/NetMsmqBindingElement.xml index 33982681a2baa..9282d428897f7 100644 --- a/xml/System.ServiceModel.Configuration/NetMsmqBindingElement.xml +++ b/xml/System.ServiceModel.Configuration/NetMsmqBindingElement.xml @@ -123,7 +123,7 @@ minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. + The minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. ]]> diff --git a/xml/System.ServiceModel.Configuration/WebHttpBindingElement.xml b/xml/System.ServiceModel.Configuration/WebHttpBindingElement.xml index 507b6aa8c99fa..ff99cb45ed559 100644 --- a/xml/System.ServiceModel.Configuration/WebHttpBindingElement.xml +++ b/xml/System.ServiceModel.Configuration/WebHttpBindingElement.xml @@ -320,7 +320,7 @@ minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. + The minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. ]]> diff --git a/xml/System.ServiceModel.Description/DurableServiceAttribute.xml b/xml/System.ServiceModel.Description/DurableServiceAttribute.xml index 8f880b6bf368e..4d86a5b2a06b5 100644 --- a/xml/System.ServiceModel.Description/DurableServiceAttribute.xml +++ b/xml/System.ServiceModel.Description/DurableServiceAttribute.xml @@ -42,7 +42,7 @@ - If the contract permits or allows sessions then all operations for which is set to `true` must be request/response operations, that is cannot be set to `true`. -- If is set to `true`, then all operations on the service must either be marked with set to `true` or marked with . Additionally, must be set to Single. +- If is set to `true`, then all operations on the service must either be marked with set to `true` or marked with . Additionally, must be set to Single. ]]> @@ -133,7 +133,7 @@ is set to `true`, then all operations on the service must either be marked with set to `true` or marked with . Additionally, must be set to Single. + If is set to `true`, then all operations on the service must either be marked with set to `true` or marked with . Additionally, must be set to Single. Setting to `true` makes the service state transactional with the operation transaction. This means that if the operation's transaction rolls back, the service state also rolls back. diff --git a/xml/System.ServiceModel.Description/MetadataExchangeClient.xml b/xml/System.ServiceModel.Description/MetadataExchangeClient.xml index 473e300c5af9a..b7fa687ebdd1a 100644 --- a/xml/System.ServiceModel.Description/MetadataExchangeClient.xml +++ b/xml/System.ServiceModel.Description/MetadataExchangeClient.xml @@ -68,8 +68,8 @@ |Scheme|Binding| |------------|-------------| -|http| ()| -|https| ()| +|http| ()| +|https| ()| |net.tcp| with a | |net.pipe| with a | @@ -611,7 +611,7 @@ - When there is an attempt to resolve a . -- When is used. +- When is used. ]]> diff --git a/xml/System.ServiceModel.Description/MetadataResolver.xml b/xml/System.ServiceModel.Description/MetadataResolver.xml index b39fe81998c96..01210296ae920 100644 --- a/xml/System.ServiceModel.Description/MetadataResolver.xml +++ b/xml/System.ServiceModel.Description/MetadataResolver.xml @@ -79,7 +79,7 @@ are used to retrieve the metadata and the default is . + The default settings on the are used to retrieve the metadata and the default is . To download metadata but not resolve the information into objects, use the directly. @@ -122,7 +122,7 @@ are used to retrieve the metadata and the default is . + The default settings on the are used to retrieve the metadata and the default is . To download metadata but not resolve the information into objects, use the directly. @@ -169,7 +169,7 @@ is . + The default is . To download metadata but not resolve the information into objects, use the directly. @@ -389,7 +389,7 @@ are used to retrieve the metadata and the default is . + The default settings on the are used to retrieve the metadata and the default is . To download metadata but not resolve the information into objects, use the directly. @@ -430,7 +430,7 @@ ## Remarks Use the method to specify the contract and the metadata address to use when downloading and resolving metadata. - The default settings on the are used to retrieve the metadata and the default is . + The default settings on the are used to retrieve the metadata and the default is . To download metadata but not resolve the information into objects, use the directly. @@ -480,7 +480,7 @@ is . + The default is . To download metadata but not resolve the information into objects, use the directly. diff --git a/xml/System.ServiceModel.Description/WebServiceEndpoint.xml b/xml/System.ServiceModel.Description/WebServiceEndpoint.xml index 3c335f948dd65..8e2cd267ec745 100644 --- a/xml/System.ServiceModel.Description/WebServiceEndpoint.xml +++ b/xml/System.ServiceModel.Description/WebServiceEndpoint.xml @@ -122,7 +122,7 @@ minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. + The minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. ]]> diff --git a/xml/System.ServiceModel.Discovery/DiscoveryEndpoint.xml b/xml/System.ServiceModel.Discovery/DiscoveryEndpoint.xml index e571e66a65193..069a60e98a394 100644 --- a/xml/System.ServiceModel.Discovery/DiscoveryEndpoint.xml +++ b/xml/System.ServiceModel.Discovery/DiscoveryEndpoint.xml @@ -31,7 +31,7 @@ is set to and is set to . + By default, is set to and is set to . ]]> @@ -121,8 +121,8 @@ System.ServiceModel.Discovery.ServiceDiscoveryMode - Gets the for the endpoint. - One of the enumeration values. + Gets the discovery mode for the endpoint. + One of the enumeration values. to prevent this default behavior. If any error handler returns `true` it instructs [!INCLUDE[indigo2](~/includes/indigo2-md.md)] that it is safe to continue using state associated with the failed request. - If no error handler returns `true` from the method the exception is considered unhandled and the default response applies, potentially resulting in an aborted and channel when communicating on a session channel or the property is not set to . + If no error handler returns `true` from the method the exception is considered unhandled and the default response applies, potentially resulting in an aborted and channel when communicating on a session channel or the property is not set to . The `error` parameter is never `null` and contains the exception object that was thrown. diff --git a/xml/System.ServiceModel/FaultContractAttribute.xml b/xml/System.ServiceModel/FaultContractAttribute.xml index d6fc64050d917..4b05b0ade2e2c 100644 --- a/xml/System.ServiceModel/FaultContractAttribute.xml +++ b/xml/System.ServiceModel/FaultContractAttribute.xml @@ -45,7 +45,7 @@ > [!CAUTION] > If a fault message carries information that is sensitive or can lead to security problems, it is strongly recommended that the property be set. -- If you set the explicitly to either or , then you must use a binding with security enabled using the property on the binding or an exception is thrown. +- If you set the explicitly to either or , then you must use a binding with security enabled using the property on the binding or an exception is thrown. - If you select a binding that enables security and you do not set the property anywhere on the contract, all application data will be encrypted and signed. @@ -307,11 +307,11 @@ property to specify the degree to which the binding must encrypt, sign, or both when sending the SOAP fault. It is strongly recommended that an operation's fault explicitly decide the security protection level requirements on the contract. The default protection level is , meaning that the SOAP fault message you are defining does not require encryption or a digital signature (although your binding may provide this support if it is configured to do so). If a fault message carries information that is sensitive or can lead to security problems, it is strongly recommended that the property be set to . For more about security issues, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). + Use the property to specify the degree to which the binding must encrypt, sign, or both when sending the SOAP fault. It is strongly recommended that an operation's fault explicitly decide the security protection level requirements on the contract. The default protection level is , meaning that the SOAP fault message you are defining does not require encryption or a digital signature (although your binding may provide this support if it is configured to do so). If a fault message carries information that is sensitive or can lead to security problems, it is strongly recommended that the property be set to . For more about security issues, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). The protection behavior at runtime is the combination of the protection-level properties that have a hierarchical structure. Setting the outermost value establishes the default setting for all narrower scopes unless a different value for a narrower scope is explicitly set. In this case, the outer value remains the default for all narrower scopes with the exception of that specifically set. - For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed, including fault messages. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed, including fault messages. + For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed, including fault messages. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed, including fault messages. The scopes at which these values are set are: @@ -327,7 +327,7 @@ The property on . - When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . + When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . ]]> diff --git a/xml/System.ServiceModel/HostNameComparisonMode.xml b/xml/System.ServiceModel/HostNameComparisonMode.xml index 22bd23024f586..20090c1dd6be3 100644 --- a/xml/System.ServiceModel/HostNameComparisonMode.xml +++ b/xml/System.ServiceModel/HostNameComparisonMode.xml @@ -16,7 +16,7 @@ for a standard binding using one of the preceding transports, such as , using the corresponding property. Configure the value of the for a binding element using one of the preceding transports, such as , using the corresponding property. + The value is used to specify the URI matching rules used by transports such as HTTP, Net.Tcp, and Net.Pipe when dispatching incoming messages. Configure the value of the for a standard binding using one of the preceding transports, such as , using the corresponding property. Configure the value of the for a binding element using one of the preceding transports, such as , using the corresponding property. Each value of the corresponds to a specific type of matching rule. The sequence of matching rules attempted is always ordered as follows: diff --git a/xml/System.ServiceModel/MessageContractMemberAttribute.xml b/xml/System.ServiceModel/MessageContractMemberAttribute.xml index 66ed30690f9db..afd1de32d1616 100644 --- a/xml/System.ServiceModel/MessageContractMemberAttribute.xml +++ b/xml/System.ServiceModel/MessageContractMemberAttribute.xml @@ -211,7 +211,7 @@ public class BankingTransaction property in either the or attributes you must properly configure the binding and behaviors. If these security features are used without a proper configuration (for example, using with a message part without supplying security credentials) an exception is thrown at run time. + To make use of the property in either the or attributes you must properly configure the binding and behaviors. If these security features are used without a proper configuration (for example, using with a message part without supplying security credentials) an exception is thrown at run time. In addition, the protection level is determined for each header individually. However, the SOAP body has only one protection level, regardless of the number of body parts. The protection level of the body is determined by the highest property value of all the body parts. For example, consider the following class: @@ -228,11 +228,11 @@ public class PatientRecord } ``` - In this example, the `recordID` header is not protected, `patientName` is signed, and `SSN` is encrypted and signed. There is at least one body part, `medicalHistory`, with and thus the entire message body is encrypted and signed, even though the `comments` and `diagnosis` body parts specify lower protection levels. + In this example, the `recordID` header is not protected, `patientName` is signed, and `SSN` is encrypted and signed. There is at least one body part, `medicalHistory`, with and thus the entire message body is encrypted and signed, even though the `comments` and `diagnosis` body parts specify lower protection levels. The protection behavior at runtime is the combination of the protection-level values set on the following properties. These properties have a hierarchical structure. Setting the outermost value establishes the default setting for all narrower scopes unless a different value for a narrower scope is explicitly set. In this case, the outer value remains the default for all narrower scopes with the exception of that specifically set. - For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed. + For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed. For details about protection levels and their assumptions and scopes, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). @@ -250,7 +250,7 @@ public class PatientRecord The property on . - When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . + When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . ]]> diff --git a/xml/System.ServiceModel/MsmqTransportSecurity.xml b/xml/System.ServiceModel/MsmqTransportSecurity.xml index 30d0f93c9b538..879e52bb1c9f9 100644 --- a/xml/System.ServiceModel/MsmqTransportSecurity.xml +++ b/xml/System.ServiceModel/MsmqTransportSecurity.xml @@ -167,7 +167,7 @@ . + The default hash algorithm is . ]]> diff --git a/xml/System.ServiceModel/NetMsmqBinding.xml b/xml/System.ServiceModel/NetMsmqBinding.xml index d38136485f3d8..5f892f4ff7df0 100644 --- a/xml/System.ServiceModel/NetMsmqBinding.xml +++ b/xml/System.ServiceModel/NetMsmqBinding.xml @@ -203,7 +203,7 @@ minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. + The minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. diff --git a/xml/System.ServiceModel/OperationContractAttribute.xml b/xml/System.ServiceModel/OperationContractAttribute.xml index 7e1dae6f33a5b..8a5410ae672cf 100644 --- a/xml/System.ServiceModel/OperationContractAttribute.xml +++ b/xml/System.ServiceModel/OperationContractAttribute.xml @@ -588,7 +588,7 @@ public class InitializeAndTerminateService It is important to remember that the protection behavior at runtime is the combination of the protection-level values set on the following properties. These properties have a hierarchical structure. Setting the outermost value establishes the default setting for all narrower scopes unless a different value for a narrower scope is explicitly set. In this case, the outer value remains the default for all narrower scopes with the exception of that specifically set. - For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed. + For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed. For details about protection levels and their assumptions and scopes, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). @@ -606,7 +606,7 @@ public class InitializeAndTerminateService The property on . - When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . + When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . ]]> diff --git a/xml/System.ServiceModel/ServiceContractAttribute.xml b/xml/System.ServiceModel/ServiceContractAttribute.xml index 075d06add3e2d..0cb15b01afa49 100644 --- a/xml/System.ServiceModel/ServiceContractAttribute.xml +++ b/xml/System.ServiceModel/ServiceContractAttribute.xml @@ -49,7 +49,7 @@ Services implement service contracts, which represent the data exchange that a service type supports. A service class can implement a service contract (by implementing an interface marked with that has methods marked with ) or it can be marked with the and apply the attribute to its own methods. (If a class implements an interface marked with , it cannot be itself marked with .) Methods on service types that are marked with the are treated as part of a default service contract specified by the service type itself. For details about service operations, see . - By default, the and properties are the name of the contract type and `http://tempuri.org`, respectively, and is . It is recommended that service contracts explicitly set their names, namespaces, and protection levels using these properties. Doing so accomplishes two goals. First, it builds a contract that is not directly connected to the managed type information, enabling you to refactor your managed code and namespaces without breaking the contract as it is expressed in WSDL. Second, explicitly requiring a certain level of protection on the contract itself enables the runtime to validate whether the binding configuration supports that level of security, preventing poor configuration from exposing sensitive information. For more information about protection levels, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). + By default, the and properties are the name of the contract type and `http://tempuri.org`, respectively, and is . It is recommended that service contracts explicitly set their names, namespaces, and protection levels using these properties. Doing so accomplishes two goals. First, it builds a contract that is not directly connected to the managed type information, enabling you to refactor your managed code and namespaces without breaking the contract as it is expressed in WSDL. Second, explicitly requiring a certain level of protection on the contract itself enables the runtime to validate whether the binding configuration supports that level of security, preventing poor configuration from exposing sensitive information. For more information about protection levels, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). To expose a service for use by client applications, create a host application to register your service endpoint with [!INCLUDE[indigo1](~/includes/indigo1-md.md)]. You can host [!INCLUDE[indigo2](~/includes/indigo2-md.md)] services using Windows Activation Services (WAS), in console applications, Windows Service applications, ASP.NET applications, Windows Forms applications, or any other kind of application domain. @@ -66,7 +66,7 @@ ## Examples - The following code example shows how to apply the to an interface to define a service contract with one service method, indicated by the . In this case, the protection level required of bindings for all messages is . + The following code example shows how to apply the to an interface to define a service contract with one service method, indicated by the . In this case, the protection level required of bindings for all messages is . The code example then implements that contract on the `SampleService` class. @@ -330,7 +330,7 @@ It is important to remember that the protection behavior at runtime is the combination of the protection-level values set on the following properties. These properties have a hierarchical structure. Setting the outermost value establishes the default setting for all narrower scopes unless a different value for a narrower scope is explicitly set. In this case, the outer value remains the default for all narrower scopes with the exception of that specifically set. - For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed. + For example, if is set to and no other narrower scopes have protection level settings, all messages in an operation contract are encrypted and signed. If, however, one of those operations has the set to , then the messages for that operation are signed but all other messages in the contract are encrypted and signed. For details about protection levels and their assumptions and scopes, see [Understanding Protection Level](~/docs/framework/wcf/understanding-protection-level.md). @@ -348,7 +348,7 @@ The property on . - When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . + When there is no protection level explicitly specified on the contract and the underlying binding supports security (whether at the transport or message level), the effective protection level for the whole contract is . If the binding does not support security (such as ), the effective is for the whole contract. The result is that depending upon the endpoint binding, clients can require different message or transport level security protection even when the contract specifies . ]]> @@ -381,7 +381,7 @@ ## Remarks Use the property to require bindings that support sessions between endpoints. A session is a way of correlating a set of messages exchanged between two or more endpoints. If your service supports channel sessions, you can then use the property to specify the relationship between instances your service contract implementation and the channel session. If a binding does not support sessions, an exception is thrown. - For example, if the property is set to and the property is set to , clients can use the same connection to make repeated calls to the same service object. + For example, if the property is set to and the property is set to , clients can use the same connection to make repeated calls to the same service object. For more information about sessions and service instances, see [Using Sessions](~/docs/framework/wcf/using-sessions.md) and [Sessions, Instancing, and Concurrency](~/docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md). diff --git a/xml/System.ServiceModel/ServiceHost.xml b/xml/System.ServiceModel/ServiceHost.xml index 28d66d5a0c72f..cc55e474c92d3 100644 --- a/xml/System.ServiceModel/ServiceHost.xml +++ b/xml/System.ServiceModel/ServiceHost.xml @@ -85,7 +85,7 @@ ## Remarks Use this constructor as an alternative to implementing a custom when you want to provide a specific object instance for use by a singleton service. You may want to use this overload when your service implementation type is difficult to construct (for example, if it does not implement a default public constructor that has no parameters). - Note that when an object is provided to this overload, some features related to the [!INCLUDE[indigo1](~/includes/indigo1-md.md)] instancing behavior work differently. For example, calling have no effect when a well-known object instance is provided using this constructor overload. Similarly, any other instance release mechanism is ignored. The always behaves as if the property is set to for all operations. + Note that when an object is provided to this overload, some features related to the [!INCLUDE[indigo1](~/includes/indigo1-md.md)] instancing behavior work differently. For example, calling have no effect when a well-known object instance is provided using this constructor overload. Similarly, any other instance release mechanism is ignored. The always behaves as if the property is set to for all operations. diff --git a/xml/System.ServiceModel/WebHttpBinding.xml b/xml/System.ServiceModel/WebHttpBinding.xml index 8690e89de62c2..bed86541fd53a 100644 --- a/xml/System.ServiceModel/WebHttpBinding.xml +++ b/xml/System.ServiceModel/WebHttpBinding.xml @@ -361,7 +361,7 @@ minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. + The minimizes the cost of using buffers by using a buffer pool. Buffers are required to process messages by the service when they come out of the channel. If there is not sufficient memory in the buffer pool to process the message load, the must allocate additional memory from the CLR heap, which increases the garbage collection overhead. Extensive allocation from the CLR garbage heap is an indication that the buffer pool size is too small and that performance can be improved with a larger allocation by increasing the limit. ]]> diff --git a/xml/System.Text.RegularExpressions/Capture.xml b/xml/System.Text.RegularExpressions/Capture.xml index 678a2d8a9f1c8..2907cd75e1af3 100644 --- a/xml/System.Text.RegularExpressions/Capture.xml +++ b/xml/System.Text.RegularExpressions/Capture.xml @@ -220,7 +220,7 @@ |Pattern|Description| |-------------|-----------------| |`^`|Begin the match at the beginning of the string.| -|`([a-z]+)`|Match one or more occurrences of any character from a to z. Because the regular expression engine is passed the option, this comparison is case-insensitive. This is the first capturing group.| +|`([a-z]+)`|Match one or more occurrences of any character from a to z. Because the regular expression engine is passed the option, this comparison is case-insensitive. This is the first capturing group.| |`(\d+)?`|Match zero or one occurrence of one or more decimal digits. This is the second capturing group.| |`\.`|Match a literal period character.| |`([a-z]+`|Match one or more occurrences of any character from a to z. The comparison is case-insensitive.| diff --git a/xml/System.Text.RegularExpressions/Regex.xml b/xml/System.Text.RegularExpressions/Regex.xml index 132e9b8715afb..fa3ee539fda1e 100644 --- a/xml/System.Text.RegularExpressions/Regex.xml +++ b/xml/System.Text.RegularExpressions/Regex.xml @@ -960,7 +960,7 @@ In a regular expression that is defined by using static text, characters that are to be interpreted literally rather than as metacharacters can be escaped by preceding them with a backslash symbol (\\) as well as by calling the method. In a regular expression that is defined dynamically using characters that are not known at design time, calling the method is particularly important to ensure that the regular expression engine interprets individual characters as literals rather than as metacharacters. > [!NOTE] -> If a regular expression pattern includes either the number sign (#) or literal white-space characters, they must be escaped if input text is parsed with the option enabled. +> If a regular expression pattern includes either the number sign (#) or literal white-space characters, they must be escaped if input text is parsed with the option enabled. While the method escapes the straight opening bracket ([) and opening brace ({) characters, it does not escape their corresponding closing characters (] and }). In most cases, escaping these is not necessary. If a closing bracket or brace is not preceded by its corresponding opening character, the regular expression engine interprets it literally. If an opening braket or brace is interpreted as a metacharacter, the regular expression engine interprets the first corresponding closing character as a metacharacter. If this is not the desired behavior, the closing bracket or brace should be escaped by explicitly prepending the backslash (\\) character. For an illustration, see the Example section. @@ -1166,7 +1166,7 @@ ## Remarks A regular expression pattern may contain either named or numbered capturing groups, which delineate subexpressions within a pattern match. Numbered groups are delimited by the syntax (*subexpression*) and are assigned numbers based on their order in the regular expression. Named groups are delimited by the syntax (?`<`*name*`>`*subexpression*) or (?'*name*'*subexpression*), where *name* is the name by which the subexpression will be identified. (For more information, see [Grouping Constructs](~/docs/standard/base-types/grouping-constructs-in-regular-expressions.md).) The method identifies both named groups and numbered groups by their ordinal positions in the regular expression. Ordinal position zero always represents the entire regular expression. All numbered groups are then counted before named groups, regardless of their actual position in the regular expression pattern. - If `i` is the number of a named group, the method returns the name of the group. If `i` is the number of an unnamed group, the method returns the string representation of the number. For example, if `i` is 1, the method returns "1". If `i` is not the number of a capturing group, the method returns . + If `i` is the number of a named group, the method returns the name of the group. If `i` is the number of an unnamed group, the method returns the string representation of the number. For example, if `i` is 1, the method returns "1". If `i` is not the number of a capturing group, the method returns . If a pattern match is found, the value returned by this method can then be used to retrieve the object that represents the captured group from the property. The object is returned by the property. @@ -1682,7 +1682,7 @@ |`[A-Z0-9]`|Match any single alphabetic character from `A` through `Z`, or any numeric character.| |`$`|End the match at the end of the string.| - Calling the method with the `options` parameter set to is equivalent to defining the following regular expression: + Calling the method with the `options` parameter set to is equivalent to defining the following regular expression: ``` [a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9] @@ -1782,7 +1782,7 @@ |`[A-Z0-9]`|Match any single alphabetic character from `A` through `Z`, or any numeric character.| |`$`|End the match at the end of the string.| - Calling the method with the `options` parameter set to is equivalent to defining the following regular expression: + Calling the method with the `options` parameter set to is equivalent to defining the following regular expression: ``` [a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9] @@ -1923,7 +1923,7 @@ The regular expression pattern for which the method searches is defined by the call to one of the class constructors. For more information about the elements that can form a regular expression pattern, see [Regular Expression Language - Quick Reference](~/docs/standard/base-types/regular-expression-language-quick-reference.md). - You can optionally specify a starting position in the string by using the `startat` parameter. When the regular expression engine parses from left to right (the default), the match and the scan move rightward, starting at the character specified in `startat`. When the regular expression engine parses from right to left (when the regular expression pattern is constructed with the option), the match and scan move in the opposite direction and begin with the character at `startat` -1. If you do not specify a starting position, the search begins at the default `startat` position. If the regular expression searches from left to right, the default `startat` position is at the left end of `input`; if it searches from right to left, the default `startat` position is at the right end of `input`. + You can optionally specify a starting position in the string by using the `startat` parameter. When the regular expression engine parses from left to right (the default), the match and the scan move rightward, starting at the character specified in `startat`. When the regular expression engine parses from right to left (when the regular expression pattern is constructed with the option), the match and scan move in the opposite direction and begin with the character at `startat` -1. If you do not specify a starting position, the search begins at the default `startat` position. If the regular expression searches from left to right, the default `startat` position is at the left end of `input`; if it searches from right to left, the default `startat` position is at the right end of `input`. If you want to restrict a match so that it begins at a particular character position in the string and the regular expression engine does not scan the remainder of the string for a match, anchor the regular expression with a `\G` (at the left for a left-to-right pattern, or at the right for a right-to-left pattern). This restricts the match so it must start exactly at `startat`. @@ -2065,7 +2065,7 @@ The regular expression pattern for which the method searches is defined by the call to one of the class constructors. For more information about the elements that can form a regular expression pattern, see [Regular Expression Language - Quick Reference](~/docs/standard/base-types/regular-expression-language-quick-reference.md). - The method searches the portion of `input` defined by the `beginning` and `length` parameters for the regular expression pattern. `beginning` always defines the index of the leftmost character to include in the search, and `length` defines the maximum number of characters to search. Together, they define the range of the search. If the search proceeds from left to right (the default), the regular expression engine searches from the character at index `beginning` to the character at index `beginning` + `length` – 1. If the regular expression engine was instantiated by using the option so that the search proceeds from right to left, the regular expression engine searches from the character at index `beginning` + `length` – 1 to the character at index `beginning`. This method returns the first match that it finds within this range. You can retrieve subsequent matches by repeatedly calling the returned object's method. + The method searches the portion of `input` defined by the `beginning` and `length` parameters for the regular expression pattern. `beginning` always defines the index of the leftmost character to include in the search, and `length` defines the maximum number of characters to search. Together, they define the range of the search. If the search proceeds from left to right (the default), the regular expression engine searches from the character at index `beginning` to the character at index `beginning` + `length` – 1. If the regular expression engine was instantiated by using the option so that the search proceeds from right to left, the regular expression engine searches from the character at index `beginning` + `length` – 1 to the character at index `beginning`. This method returns the first match that it finds within this range. You can retrieve subsequent matches by repeatedly calling the returned object's method. You can determine whether the regular expression pattern has been found in the input string by checking the value of the returned object's property. If a match is found, the returned object's property contains the substring from `input` that matches the regular expression pattern. If no match is found, its value is . @@ -2143,7 +2143,7 @@ ## Examples - The following example defines a regular expression that matches words beginning with the letter "a". It uses the option to ensure that the regular expression locates words beginning with both an uppercase "a" and a lowercase "a". + The following example defines a regular expression that matches words beginning with the letter "a". It uses the option to ensure that the regular expression locates words beginning with both an uppercase "a" and a lowercase "a". [!code-csharp[System.Text.RegularExpressions.Regex.Match#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.text.regularexpressions.regex.match/cs/match2.cs#2)] [!code-vb[System.Text.RegularExpressions.Regex.Match#2](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.text.regularexpressions.regex.match/vb/match2.vb#2)] @@ -2724,7 +2724,7 @@ property consists of one or more members of the enumeration. If no options were defined in the class constructor, its value is . The available options are discussed in detail in the [Regular Expression Options](~/docs/standard/base-types/regular-expression-options.md) topic. + The value of the property consists of one or more members of the enumeration. If no options were defined in the class constructor, its value is . The available options are discussed in detail in the [Regular Expression Options](~/docs/standard/base-types/regular-expression-options.md) topic. Note that the property does not reflect inline options defined in the regular expression pattern itself. @@ -3317,9 +3317,9 @@ |Pattern|Description| |-------------|-----------------| -|`^`|Match the start of a line. (Note that the object was instantiated by using the option; otherwise, this character class would only match the beginning of the input string.)| +|`^`|Match the start of a line. (Note that the object was instantiated by using the option; otherwise, this character class would only match the beginning of the input string.)| |`.*`|Match any character zero or more times.| -|`$`|Match the end of a line. (Note that the object was instantiated by using the option; otherwise, this character class would only match the beginning of the input string.)| +|`$`|Match the end of a line. (Note that the object was instantiated by using the option; otherwise, this character class would only match the beginning of the input string.)| The replacement string (`vbCrLf + "$&"` in Visual Basic, `"\n$&"` in C#) adds a new line before the matched string. Note that `\n` in the C# example is interpreted as the newline character by the C# compiler; it does not represent a regular expression character escape. @@ -3495,7 +3495,7 @@ ## Examples - The following example uses a regular expression to extract the individual words from a string, and then uses a delegate to call a method named `WordScramble` that scrambles the individual letters in the word. To do this, the `WordScramble` method creates an array that contains the characters in the match. It also creates a parallel array that it populates with random floating-point numbers. The arrays are sorted by calling the method, and the sorted array is provided as an argument to a class constructor. This newly created string is then returned by the `WordScramble` method. The regular expression pattern `\w+` matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character. The call to the method includes the option so that the comment in the regular expression pattern `\w+ # Matches all the characters in a word.` is ignored by the regular expression engine. + The following example uses a regular expression to extract the individual words from a string, and then uses a delegate to call a method named `WordScramble` that scrambles the individual letters in the word. To do this, the `WordScramble` method creates an array that contains the characters in the match. It also creates a parallel array that it populates with random floating-point numbers. The arrays are sorted by calling the method, and the sorted array is provided as an argument to a class constructor. This newly created string is then returned by the `WordScramble` method. The regular expression pattern `\w+` matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character. The call to the method includes the option so that the comment in the regular expression pattern `\w+ # Matches all the characters in a word.` is ignored by the regular expression engine. [!code-csharp[System.Text.RegularExpressions.Regex.Replace#10](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.text.regularexpressions.regex.replace/cs/replace6.cs#10)] [!code-vb[System.Text.RegularExpressions.Regex.Replace#10](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.text.regularexpressions.regex.replace/vb/replace6.vb#10)] @@ -3761,7 +3761,7 @@ ## Examples - The following example uses a regular expression to extract the individual words from a string, and then uses a delegate to call a method named `WordScramble` that scrambles the individual letters in the word. To do this, the `WordScramble` method creates an array that contains the characters in the match. It also creates a parallel array that it populates with random floating-point numbers. The arrays are sorted by calling the method, and the sorted array is provided as an argument to a class constructor. This newly created string is then returned by the `WordScramble` method. The regular expression pattern `\w+` matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character. The call to the method includes the option so that the comment in the regular expression pattern `\w+ # Matches all the characters in a word.` is ignored by the regular expression engine. + The following example uses a regular expression to extract the individual words from a string, and then uses a delegate to call a method named `WordScramble` that scrambles the individual letters in the word. To do this, the `WordScramble` method creates an array that contains the characters in the match. It also creates a parallel array that it populates with random floating-point numbers. The arrays are sorted by calling the method, and the sorted array is provided as an argument to a class constructor. This newly created string is then returned by the `WordScramble` method. The regular expression pattern `\w+` matches one or more word characters; the regular expression engine will continue to add characters to the match until it encounters a non-word character, such as a white-space character. The call to the method includes the option so that the comment in the regular expression pattern `\w+ # Matches all the characters in a word.` is ignored by the regular expression engine. [!code-csharp[System.Text.RegularExpressions.Regex.Replace#13](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.text.regularexpressions.regex.replace/cs/replace13.cs#13)] [!code-vb[System.Text.RegularExpressions.Regex.Replace#13](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.text.regularexpressions.regex.replace/vb/replace13.vb#13)] diff --git a/xml/System.Text/StringBuilder.xml b/xml/System.Text/StringBuilder.xml index 5c6713290d1c0..9f515ec231a6e 100644 --- a/xml/System.Text/StringBuilder.xml +++ b/xml/System.Text/StringBuilder.xml @@ -170,7 +170,7 @@ ### Iterating StringBuilder characters You can access the characters in a object by using the property. In C#, is an indexer; in Visual Basic, it is the default property of the class. This enables you to set or retrieve individual characters by using their index only, without explicitly referencing the property. Characters in a object begin at index 0 (zero) and continue to index - 1. - The following example illustrates the property. It appends ten random numbers to a object, and then iterates each character. If the character's Unicode category is , it decreases the number by 1 (or changes the number to 9 if its value is 0). The example displays the contents of the object both before and after the values of individual characters were changed. + The following example illustrates the property. It appends ten random numbers to a object, and then iterates each character. If the character's Unicode category is , it decreases the number by 1 (or changes the number to 9 if its value is 0). The example displays the contents of the object both before and after the values of individual characters were changed. [!code-csharp[System.Text.StringBuilder.Class#7](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.text.stringbuilder.class/cs/chars1.cs#7)] [!code-vb[System.Text.StringBuilder.Class#7](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.text.stringbuilder.class/vb/chars1.vb#7)] @@ -4331,7 +4331,7 @@ . However, this value is implementation-specific and might be different in other or later implementations. You can explicitly set the maximum capacity of a object by calling the constructor. + The maximum capacity for this implementation is . However, this value is implementation-specific and might be different in other or later implementations. You can explicitly set the maximum capacity of a object by calling the constructor. In the[!INCLUDE[net_v40_short](~/includes/net-v40-short-md.md)] and the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], when you instantiate the object by calling the constructor, both the length and the capacity of the instance can grow beyond the value of its property. This can occur particularly when you call the and methods to append small strings. @@ -4487,7 +4487,7 @@ , all occurrences of `oldValue` are removed. + This method performs an ordinal, case-sensitive comparison to identify occurrences of `oldValue` in the current instance. If `newValue` is `null` or , all occurrences of `oldValue` are removed. @@ -4611,7 +4611,7 @@ , all occurrences of `oldValue` are removed. + This method performs an ordinal, case-sensitive comparison to identify occurrences of `oldValue` in the specified substring. If `newValue` is `null` or , all occurrences of `oldValue` are removed. diff --git a/xml/System.Threading.Tasks/Task.xml b/xml/System.Threading.Tasks/Task.xml index 2db73e9e7e22f..0a9ab4f89809f 100644 --- a/xml/System.Threading.Tasks/Task.xml +++ b/xml/System.Threading.Tasks/Task.xml @@ -2278,8 +2278,8 @@ Task t Status: RanToCompletion, Result: 42 |Property|Value| |--------------|-----------| ||| -||| -||| +||| +||| ||`null`, or | The most common use of this property is to create and start a new task in a single call to the method. @@ -2818,7 +2818,7 @@ Task t Status: RanToCompletion, Result: 42 - Its cancellation token is . -- Its property value is . +- Its property value is . - It uses the default task scheduler. @@ -2938,7 +2938,7 @@ Task t Status: RanToCompletion, Result: 42 The method is a simpler alternative to the method. It creates a task with the following default values: -- Its property value is . +- Its property value is . - It uses the default task scheduler. @@ -3100,7 +3100,7 @@ Task t Status: RanToCompletion, Result: 42 - Its cancellation token is . -- Its property value is . +- Its property value is . - It uses the default task scheduler. @@ -3220,7 +3220,7 @@ Task t Status: RanToCompletion, Result: 42 The method is a simpler alternative to the method. It creates a task with the following default values: -- Its property value is . +- Its property value is . - It uses the default task scheduler. diff --git a/xml/System.Threading.Tasks/TaskCompletionSource`1.xml b/xml/System.Threading.Tasks/TaskCompletionSource`1.xml index 894078b6ab71f..ec1d5498ce6ba 100644 --- a/xml/System.Threading.Tasks/TaskCompletionSource`1.xml +++ b/xml/System.Threading.Tasks/TaskCompletionSource`1.xml @@ -420,11 +420,11 @@ ## Remarks The method returns false if the underlying object is already in one of the following three final states. -- +- -- +- -- +- This method also returns `false` if the underlying object has already been disposed. diff --git a/xml/System.Threading.Tasks/TaskFactory.xml b/xml/System.Threading.Tasks/TaskFactory.xml index 40e261a3c5bef..22c8dd6da36b7 100644 --- a/xml/System.Threading.Tasks/TaskFactory.xml +++ b/xml/System.Threading.Tasks/TaskFactory.xml @@ -3655,7 +3655,7 @@ ## Remarks Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], the method is the recommended way to launch a compute-bound task. Use the method only when you require fine-grained control for a long-running, compute-bound task. This includes scenarios in which you want to control the following: -- Task creation options. Tasks created by the method by default are created with the option. To override this behavior, or to provide other options, call a overload. +- Task creation options. Tasks created by the method by default are created with the option. To override this behavior, or to provide other options, call a overload. - Parameter passing. The overloads of the method do not allow you to pass a parameter to the task delegate. Overloads of the method do. @@ -3704,7 +3704,7 @@ ## Remarks Calling is functionally equivalent to creating a task by using one of its constructors, and then calling the method to schedule the task for execution. - Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can use the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see [Task.Run vs Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. + Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can use the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see [Task.Run vs Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. @@ -3760,7 +3760,7 @@ ## Remarks Calling `StartNew` is functionally equivalent to creating a Task using one of its constructors and then calling to schedule it for execution. - Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can use the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see [Task.Run vs Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. + Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can use the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see [Task.Run vs Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. @@ -4156,7 +4156,7 @@ ## Remarks Calling is functionally equivalent to creating a using one of its constructors and then calling to schedule it for execution. - Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can call the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see the entry [Task.Run vs. Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. + Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can call the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see the entry [Task.Run vs. Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. @@ -4268,7 +4268,7 @@ ## Remarks Calling is functionally equivalent to creating a using one of its constructors and then calling to schedule it for execution. - Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can use the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see the entry [Task.Run vs. Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. + Starting with the [!INCLUDE[net_v45](~/includes/net-v45-md.md)], you can use the method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : by default does not allow child tasks started with the option to attach to the current instance, whereas does. For more information and code examples, see the entry [Task.Run vs. Task.Factory.StartNew](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) in the Parallel Programming with .NET blog. diff --git a/xml/System.Threading.Tasks/Task`1.xml b/xml/System.Threading.Tasks/Task`1.xml index 5790424a51c71..2e861add7a01a 100644 --- a/xml/System.Threading.Tasks/Task`1.xml +++ b/xml/System.Threading.Tasks/Task`1.xml @@ -1597,8 +1597,8 @@ For operations that do not return a value, you use the || -||| -||| +||| +||| ||`null`, or | The most common use of this property is to create and start a new task in a single call to the method. diff --git a/xml/System.Threading/AutoResetEvent.xml b/xml/System.Threading/AutoResetEvent.xml index 51224998f70f6..f7454268c6da7 100644 --- a/xml/System.Threading/AutoResetEvent.xml +++ b/xml/System.Threading/AutoResetEvent.xml @@ -52,7 +52,7 @@ For more information about thread synchronization mechanisms, see [AutoResetEvent](~/docs/standard/threading/autoresetevent.md) in the conceptual documentation. - Beginning with the .NET Framework version 2.0, derives from the new class. An is functionally equivalent to an created with . + Beginning with the .NET Framework version 2.0, derives from the new class. An is functionally equivalent to an created with . > [!NOTE] > Unlike the class, the class provides access to named system synchronization events. diff --git a/xml/System.Threading/CompressedStack.xml b/xml/System.Threading/CompressedStack.xml index e2481029ccbae..ab10e99f4190b 100644 --- a/xml/System.Threading/CompressedStack.xml +++ b/xml/System.Threading/CompressedStack.xml @@ -153,7 +153,7 @@ If security is enabled, the current compressed stack is returned. If security is disabled, returns an empty object. > [!NOTE] -> This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. For important limitations on using the `LinkDemand` member, see [Demand vs. LinkDemand](http://msdn.microsoft.com/en-us/1ab877f2-70f4-4e0d-8116-943999dfe8f5). +> This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. For important limitations on using the `LinkDemand` member, see [Demand vs. LinkDemand](http://msdn.microsoft.com/en-us/1ab877f2-70f4-4e0d-8116-943999dfe8f5). > [!NOTE] > This member also makes a link demand for the ECMA public key, which is not a valid cryptographic key but a pseudo key. Within the .NET Framework the link demand for the ECMA pseudo key is automatically converted to a link demand for the Microsoft public key. The security exception is based on the Microsoft public key, not the ECMA pseudo key. diff --git a/xml/System.Threading/EventWaitHandle.xml b/xml/System.Threading/EventWaitHandle.xml index cf20c8f7b1da2..823de17a85c82 100644 --- a/xml/System.Threading/EventWaitHandle.xml +++ b/xml/System.Threading/EventWaitHandle.xml @@ -331,9 +331,9 @@ method uses the following combination of flags (combined using the bitwise OR operation) to search for permissions: , , and . + The method uses the following combination of flags (combined using the bitwise OR operation) to search for permissions: , , and . - The user must have rights to call this method, and the event must have been opened with the flag. + The user must have rights to call this method, and the event must have been opened with the flag. @@ -404,9 +404,9 @@ Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system event. - This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. + This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. - Specifying the flag allows a thread to wait on the named system event, and specifying the flag allows a thread to call the and methods. + Specifying the flag allows a thread to wait on the named system event, and specifying the flag allows a thread to call the and methods. @@ -470,7 +470,7 @@ flag to allow threads to wait on the event, and the flag to allow threads to call the and methods. + The `rights` parameter must include the flag to allow threads to wait on the event, and the flag to allow threads to call the and methods. The method tries to open an existing named system event. If the system event does not exist, this method throws an exception instead of creating the system event. To create the system event when it does not already exist, use one of the constructors that has a `name` parameter. @@ -631,7 +631,7 @@ rights to call this method, and the event must have been opened with the flag. + The user must have rights to call this method, and the event must have been opened with the flag. @@ -707,7 +707,7 @@ If you are uncertain whether a named synchronization event exists, use this method overload instead of the method overload, which throws an exception if the synchronization event does not exist. - This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. Specifying the flag allows a thread to wait on the named system event, and specifying the flag allows a thread to call the and methods. + This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. Specifying the flag allows a thread to wait on the named system event, and specifying the flag allows a thread to call the and methods. Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system event. @@ -764,7 +764,7 @@ If you are uncertain whether a named synchronization event exists, use this method overload instead of the method overload, which throws an exception if the synchronization event does not exist. - The `rights` parameter must include the flag to allow threads to wait on the event, and the flag to allow threads to call the and methods. + The `rights` parameter must include the flag to allow threads to wait on the event, and the flag to allow threads to call the and methods. Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system event. diff --git a/xml/System.Threading/ExecutionContext.xml b/xml/System.Threading/ExecutionContext.xml index 020577309f219..376a5015a236a 100644 --- a/xml/System.Threading/ExecutionContext.xml +++ b/xml/System.Threading/ExecutionContext.xml @@ -391,7 +391,7 @@ You must use the method on the returned structure to restore the flow of the . - This method is protected with a for permission. A fully trusted component can call this method to suppress the flow of the during asynchronous calls. While the flow is suppressed, the method returns `null`. + This method is protected with a for permission. A fully trusted component can call this method to suppress the flow of the during asynchronous calls. While the flow is suppressed, the method returns `null`. ]]> diff --git a/xml/System.Threading/Interlocked.xml b/xml/System.Threading/Interlocked.xml index 5582c76f62c3f..8edbfa815498f 100644 --- a/xml/System.Threading/Interlocked.xml +++ b/xml/System.Threading/Interlocked.xml @@ -96,7 +96,7 @@ and `value` is 1, the result is ; if `value` is 2, the result is ( + 1); and so on. No exception is thrown. + This method handles an overflow condition by wrapping: if the value at `location1` is and `value` is 1, the result is ; if `value` is 2, the result is ( + 1); and so on. No exception is thrown. ]]> @@ -144,7 +144,7 @@ and `value` is 1, the result is ; if `value` is 2, the result is ( + 1); and so on. No exception is thrown. + This method handles an overflow condition by wrapping: if the value at `location1` is and `value` is 1, the result is ; if `value` is 2, the result is ( + 1); and so on. No exception is thrown. The method and the 64-bit overloads of the , , and methods are truly atomic only on systems where a is 64 bits long. On other systems, these methods are atomic with respect to each other, but not with respect to other means of accessing the data. Thus, to be thread safe on 32-bit systems, any access to a 64-bit value must be made through the members of the class. @@ -583,7 +583,7 @@ , `location` - 1 = . No exception is thrown. + This method handles an overflow condition by wrapping: If `location` = , `location` - 1 = . No exception is thrown. @@ -637,7 +637,7 @@ , `location` - 1 = . No exception is thrown. + This method handles an overflow condition by wrapping: if `location` = , `location` - 1 = . No exception is thrown. The method and the 64-bit overloads of the , , and methods are truly atomic only on systems where a is 64 bits long. On other systems, these methods are atomic with respect to each other, but not with respect to other means of accessing the data. Thus, to be thread safe on 32-bit systems, any access to a 64-bit value must be made through the members of the class. @@ -1015,7 +1015,7 @@ , `location` + 1 = . No exception is thrown. + This method handles an overflow condition by wrapping: if `location` = , `location` + 1 = . No exception is thrown. @@ -1074,7 +1074,7 @@ , `location` + 1 = . No exception is thrown. + This method handles an overflow condition by wrapping: if `location` = , `location` + 1 = . No exception is thrown. The method and the 64-bit overloads of the , , and methods are truly atomic only on systems where a is 64 bits long. On other systems, these methods are atomic with respect to each other, but not with respect to other means of accessing the data. Thus, to be thread safe on 32-bit systems, any access to a 64-bit value must be made through the members of the class. diff --git a/xml/System.Threading/ManualResetEvent.xml b/xml/System.Threading/ManualResetEvent.xml index 32dd05d601587..84eccc105acde 100644 --- a/xml/System.Threading/ManualResetEvent.xml +++ b/xml/System.Threading/ManualResetEvent.xml @@ -32,7 +32,7 @@ derives from the new class. A is functionally equivalent to an created with . + In the .NET Framework version 2.0, derives from the new class. A is functionally equivalent to an created with . > [!NOTE] > Unlike the class, the class provides access to named system synchronization events. diff --git a/xml/System.Threading/Mutex.xml b/xml/System.Threading/Mutex.xml index cbfb534f1c011..7b6a034654c5e 100644 --- a/xml/System.Threading/Mutex.xml +++ b/xml/System.Threading/Mutex.xml @@ -220,7 +220,7 @@ This constructor initializes a object that represents a named system mutex. You can create multiple objects that represent the same named system mutex. - If the named mutex has already been created with access control security, and the caller does not have , an exception is thrown. To open an existing named mutex with only those permissions needed for synchronizing thread activities, see the method. + If the named mutex has already been created with access control security, and the caller does not have , an exception is thrown. To open an existing named mutex with only those permissions needed for synchronizing thread activities, see the method. If you specify `null` or an empty string for `name`, a local mutex is created, as if you had called the constructor. In this case, `createdNew` is always `true`. @@ -296,7 +296,7 @@ This constructor initializes a object that represents a named system mutex. You can create multiple objects that represent the same named system mutex. - If the named mutex has already been created with access control security, and the caller does not have rights, an exception is thrown. To open an existing named mutex with only those permissions needed for synchronizing thread activities, see the method. + If the named mutex has already been created with access control security, and the caller does not have rights, an exception is thrown. To open an existing named mutex with only those permissions needed for synchronizing thread activities, see the method. If you specify `null` or an empty string for `name`, a local mutex is created, as if you had called the constructor. In this case, `createdNew` is always `true`. @@ -367,7 +367,7 @@ > [!NOTE] > The caller has full control over the newly created object even if `mutexSecurity` denies or fails to grant some access rights to the current user. However, if the current user attempts to get another object to represent the same named mutex, using either a constructor or the method, Windows access control security is applied. - If the named mutex has already been created with access control security, and the caller does not have , an exception is thrown. To open an existing named mutex with only those permissions needed for synchronizing thread activities, see the method. + If the named mutex has already been created with access control security, and the caller does not have , an exception is thrown. To open an existing named mutex with only those permissions needed for synchronizing thread activities, see the method. If you specify `null` or an empty string for `name`, a local mutex is created, as if you had called the constructor. In this case, `createdNew` is always `true`. @@ -421,9 +421,9 @@ method uses the following combination of flags (combined using the bitwise OR operation) to search for permissions: , , and . + The method uses the following combination of flags (combined using the bitwise OR operation) to search for permissions: , , and . - The user must have to call this method, and the mutex must have been opened with . + The user must have to call this method, and the mutex must have been opened with . @@ -488,9 +488,9 @@ Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system mutex. - This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. + This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. - Specifying the flag allows a thread to wait on the mutex, and specifying the flag allows a thread to call the method. + Specifying the flag allows a thread to wait on the mutex, and specifying the flag allows a thread to call the method. This method does not request ownership of the mutex. @@ -551,7 +551,7 @@ flag to allow threads to wait on the mutex, and the flag to allow threads to call the method. + The `rights` parameter must include the flag to allow threads to wait on the mutex, and the flag to allow threads to call the method. The method tries to open an existing named mutex. If the system mutex does not exist, this method throws an exception instead of creating the system object. To create the system mutex when it does not already exist, use one of the constructors that has a `name` parameter. @@ -676,7 +676,7 @@ rights to call this method, and the mutex must have been opened with . + The user must have rights to call this method, and the mutex must have been opened with . @@ -748,7 +748,7 @@ Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system mutex. - This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. Specifying the flag allows a thread to wait on the mutex, and specifying the flag allows a thread to call the method. + This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. Specifying the flag allows a thread to wait on the mutex, and specifying the flag allows a thread to call the method. This method does not request ownership of the mutex. @@ -800,7 +800,7 @@ If you are uncertain whether a named mutex exists, use this method overload instead of the method overload, which throws an exception if the mutex does not exist. - The `rights` parameter must include the flag to allow threads to wait on the mutex, and the flag to allow threads to call the method. + The `rights` parameter must include the flag to allow threads to wait on the mutex, and the flag to allow threads to call the method. Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system mutex. diff --git a/xml/System.Threading/ReaderWriterLockSlim.xml b/xml/System.Threading/ReaderWriterLockSlim.xml index 0cb1860ca5200..971f03dc22ab8 100644 --- a/xml/System.Threading/ReaderWriterLockSlim.xml +++ b/xml/System.Threading/ReaderWriterLockSlim.xml @@ -36,7 +36,7 @@ > [!NOTE] > is similar to , but it has simplified rules for recursion and for upgrading and downgrading lock state. avoids many cases of potential deadlock. In addition, the performance of is significantly better than . is recommended for all new development. - By default, new instances of are created with the flag and do not allow recursion. This default policy is recommended for all new development, because recursion introduces unnecessary complications and makes your code more prone to deadlocks. To simplify migration from existing projects that use or , you can use the flag to create instances of that allow recursion. + By default, new instances of are created with the flag and do not allow recursion. This default policy is recommended for all new development, because recursion introduces unnecessary complications and makes your code more prone to deadlocks. To simplify migration from existing projects that use or , you can use the flag to create instances of that allow recursion. A thread can enter the lock in three modes: read mode, write mode, and upgradeable read mode. (In the rest of this topic, "upgradeable read mode" is referred to as "upgradeable mode", and the phrase "enter `x` mode" is used in preference to the longer phrase "enter the lock in `x` mode".) @@ -76,7 +76,7 @@ After downgrading to read mode, a thread cannot reenter upgradeable mode until it has exited from read mode. ## Entering the Lock Recursively - You can create a that supports recursive lock entry by using the constructor that specifies lock policy, and specifying . + You can create a that supports recursive lock entry by using the constructor that specifies lock policy, and specifying . > [!NOTE] > The use of recursion is not recommended for new development, because it introduces unnecessary complications and makes your code more prone to deadlocks. @@ -188,7 +188,7 @@ that is initialized with this constructor does not allow recursion. That is, the property returns . + A that is initialized with this constructor does not allow recursion. That is, the property returns . For more information about recursion policy and its effects, see the enumeration and the class. @@ -251,7 +251,7 @@ and a thread has entered the lock in read mode, is thrown if the thread tries to reenter the lock in read mode. Similarly, if a thread has entered the lock in write mode, is thrown if the thread tries to reenter the lock in any mode. + Recursion policy determines the restrictions on threads that enter the lock more than once. For example, if a lock was created with and a thread has entered the lock in read mode, is thrown if the thread tries to reenter the lock in read mode. Similarly, if a thread has entered the lock in write mode, is thrown if the thread tries to reenter the lock in any mode. > [!NOTE] > A thread in upgradeable mode can upgrade to write mode or downgrade to read mode regardless of the lock recursion policy setting. @@ -265,7 +265,7 @@ ## Examples The following example shows two exception scenarios, one that depends on the setting and one that does not. - In the first scenario, the thread enters read mode and then tries to enter read mode recursively. If the is created by using the default constructor, which sets recursion policy to , an exception is thrown. If is used to create the , no exception is thrown. + In the first scenario, the thread enters read mode and then tries to enter read mode recursively. If the is created by using the default constructor, which sets recursion policy to , an exception is thrown. If is used to create the , no exception is thrown. In the second scenario, the thread enters read mode and then tries to enter write mode. is thrown regardless of the lock recursion policy. @@ -921,7 +921,7 @@ and a thread has entered the lock in read mode, is thrown if the thread tries to reenter the lock in read mode. + Recursion policy determines the restrictions on threads that enter the lock more than once. For example, if a lock was created with and a thread has entered the lock in read mode, is thrown if the thread tries to reenter the lock in read mode. > [!NOTE] > A thread in upgradeable mode can upgrade to write mode or downgrade to read mode regardless of the lock recursion policy setting. diff --git a/xml/System.Threading/Semaphore.xml b/xml/System.Threading/Semaphore.xml index 538e1986620c7..e49cd3a3fd6e5 100644 --- a/xml/System.Threading/Semaphore.xml +++ b/xml/System.Threading/Semaphore.xml @@ -374,9 +374,9 @@ method uses the following combination of flags (combined using the bitwise OR operation) to search for permissions: , , and . + The method uses the following combination of flags (combined using the bitwise OR operation) to search for permissions: , , and . - The user must have rights to call this method, and the semaphore must have been opened with rights. + The user must have rights to call this method, and the semaphore must have been opened with rights. On a local semaphore, access control security is irrelevant. If the object does not represent a named system semaphore, this method returns a object that grants all rights to any user. @@ -443,9 +443,9 @@ Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system semaphore. - This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. + This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. - Specifying the flag allows a thread to enter the semaphore, and specifying the flag allows a thread to call the method. + Specifying the flag allows a thread to enter the semaphore, and specifying the flag allows a thread to call the method. @@ -506,7 +506,7 @@ flag to allow threads to enter the semaphore, and the flag to allow threads to call the method. + The `rights` parameter must include the flag to allow threads to enter the semaphore, and the flag to allow threads to call the method. The method tries to open an existing named semaphore. If the system semaphore does not exist, this method throws an exception instead of creating the system semaphore. To create the system semaphore when it does not already exist, use one of the constructors that has a `name` parameter. @@ -588,7 +588,7 @@ If a is thrown by the method, it does not necessarily indicate a problem with the calling thread. A programming error in another thread might have caused that thread to exit the semaphore more times than it entered. - If the current object represents a named system semaphore, the user must have rights and the semaphore must have been opened with rights. + If the current object represents a named system semaphore, the user must have rights and the semaphore must have been opened with rights. @@ -655,7 +655,7 @@ If a is thrown by the method, it does not necessarily indicate a problem with the calling thread. A programming error in another thread might have caused that thread to exit the semaphore more times than it entered. - If the current object represents a named system semaphore, the user must have rights and the semaphore must have been opened with rights. + If the current object represents a named system semaphore, the user must have rights and the semaphore must have been opened with rights. @@ -706,7 +706,7 @@ ## Remarks You can set access control security only on objects that represent named system semaphores. - The user must have rights to call this method, and the semaphore must have been opened with rights. + The user must have rights to call this method, and the semaphore must have been opened with rights. @@ -776,7 +776,7 @@ If you are uncertain whether a named semaphore exists, use this method overload instead of the method overload, which throws an exception if the semaphore does not exist. - This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. Specifying the flag allows a thread to enter the semaphore, and specifying the flag allows a thread to call the method. + This method overload is equivalent to calling the method overload and specifying and rights, combined by using the bitwise OR operation. Specifying the flag allows a thread to enter the semaphore, and specifying the flag allows a thread to call the method. ]]> @@ -825,7 +825,7 @@ If you are uncertain whether a named semaphore exists, use this method overload instead of the method overload, which throws an exception if the semaphore does not exist. - The `rights` parameter must include the flag to allow threads to enter the semaphore, and the flag to allow threads to call the method. + The `rights` parameter must include the flag to allow threads to enter the semaphore, and the flag to allow threads to call the method. Multiple calls to this method that use the same value for `name` do not necessarily return the same object, even though the objects that are returned represent the same named system semaphore. diff --git a/xml/System.Threading/Thread.xml b/xml/System.Threading/Thread.xml index 12157e194a8f4..63344cf730623 100644 --- a/xml/System.Threading/Thread.xml +++ b/xml/System.Threading/Thread.xml @@ -752,7 +752,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. An attempt to use the property to set the apartment state of a thread whose apartment state has already been set is ignored. However, the method throws a in this case. > [!IMPORTANT] -> In the .NET Framework version 2.0, new threads are initialized as if their apartment state has not been set before they are started. The main application thread is initialized to by default. You can no longer set the main application thread to by setting the property on the first line of code. Use the instead. +> In the .NET Framework version 2.0, new threads are initialized as if their apartment state has not been set before they are started. The main application thread is initialized to by default. You can no longer set the main application thread to by setting the property on the first line of code. Use the instead. In the .NET Framework version 2.0, you can specify the COM threading model for a C++ application using the [/CLRTHREADATTRIBUTE (Set CLR Thread Attribute)](http://msdn.microsoft.com/library/4907e9ef-5031-446c-aecf-0a0b32fae1e8) linker option. @@ -1426,7 +1426,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. ## Examples - The following code example demonstrates the , , and methods. The code example creates a thread. Before the thread is started, displays the initial state and changes the state to . The method then returns `false` when attempting to change the state to because the apartment state is already set. If the same operation had been attempted with , would have been thrown. + The following code example demonstrates the , , and methods. The code example creates a thread. Before the thread is started, displays the initial state and changes the state to . The method then returns `false` when attempting to change the state to because the apartment state is already set. If the same operation had been attempted with , would have been thrown. After the thread is started, the method is used again. This time it throws because the thread has already been started. @@ -1962,7 +1962,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. > [!WARNING] > You should never call the method of the object that represents the current thread from the current thread. This causes your app to hang because the current thread waits upon itself indefinitely, - This method changes the state of the calling thread to include . You cannot invoke `Join` on a thread that is in the state. + This method changes the state of the calling thread to include . You cannot invoke `Join` on a thread that is in the state. ]]> @@ -2018,7 +2018,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. If the thread has already terminated when is called, the method returns immediately. - This method changes the state of the calling thread to include . You cannot invoke `Join` on a thread that is in the state. + This method changes the state of the calling thread to include . You cannot invoke `Join` on a thread that is in the state. ]]> @@ -2068,7 +2068,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. If the thread has already terminated when is called, the method returns immediately. - This method changes the state of the current thread to include . You cannot invoke `Join` on a thread that is in the state. + This method changes the state of the current thread to include . You cannot invoke `Join` on a thread that is in the state. @@ -2268,7 +2268,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. ## Examples - The following example shows the result of changing the priority of a thread. Three threads are created, the priority of one thread is set to , and the priority of a second is set to . Each thread increments a variable in a `while` loop and runs for a set time. + The following example shows the result of changing the priority of a thread. Three threads are created, the priority of one thread is set to , and the priority of a second is set to . Each thread increments a variable in a `while` loop and runs for a set time. [!code-csharp[System.Threading.ThreadPriority#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/System.Threading.ThreadPriority/cs/Example1.cs#1)] [!code-vb[System.Threading.ThreadPriority#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/System.Threading.ThreadPriority/vb/Example1.vb#1)] @@ -2404,17 +2404,17 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. if their apartment state has not been set before they are started. Apartment state must be set before a thread is started. + New threads are initialized as if their apartment state has not been set before they are started. Apartment state must be set before a thread is started. > [!NOTE] -> The main application thread is initialized to by default. The only way to set the apartment state of the main application thread to is to apply the attribute to the entry point method. +> The main application thread is initialized to by default. The only way to set the apartment state of the main application thread to is to apply the attribute to the entry point method. The method, along with the method and the method, replaces the property. ## Examples - The following code example demonstrates the , , and methods. The code example creates a thread. Before the thread is started, displays the initial state and changes the state to . The method then returns `false` when attempting to change the state to because the apartment state is already set. If the same operation had been attempted with , would have been thrown. + The following code example demonstrates the , , and methods. The code example creates a thread. Before the thread is started, displays the initial state and changes the state to . The method then returns `false` when attempting to change the state to because the apartment state is already set. If the same operation had been attempted with , would have been thrown. After the thread is started, the method is used again. This time it throws because the thread has already been started. @@ -2741,7 +2741,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. state, the operating system can schedule it for execution. The thread begins executing at the first line of the method represented by the or delegate supplied to the thread constructor. Note that the call to does not block the calling thread. + Once a thread is in the state, the operating system can schedule it for execution. The thread begins executing at the first line of the method represented by the or delegate supplied to the thread constructor. Note that the call to does not block the calling thread. > [!NOTE] > If this overload is used with a thread created using a delegate, `null` is passed to the method executed by the thread. @@ -2795,7 +2795,7 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. state, the operating system can schedule it for execution. The thread begins executing at the first line of the method represented by the or delegate supplied to the thread constructor. Note that the call to does not block the calling thread. + Once a thread is in the state, the operating system can schedule it for execution. The thread begins executing at the first line of the method represented by the or delegate supplied to the thread constructor. Note that the call to does not block the calling thread. Once the thread terminates, it cannot be restarted with another call to `Start`. @@ -3087,17 +3087,17 @@ Main thread: ThreadProc.Join has returned. Press Enter to end program. if their apartment state has not been set before they are started. Apartment state must be set before a thread is started. + New threads are initialized as if their apartment state has not been set before they are started. Apartment state must be set before a thread is started. > [!NOTE] -> The main application thread is initialized to by default. The only way to set the apartment state of the main application thread to is to apply the attribute to the entry point method. +> The main application thread is initialized to by default. The only way to set the apartment state of the main application thread to is to apply the attribute to the entry point method. The method, along with the method and the method, replaces the property. ## Examples - The following code example demonstrates the , , and methods. The code example creates a thread. Before the thread is started, displays the initial state and changes the state to . The method then returns `false` when attempting to change the state to because the apartment state is already set. If the same operation had been attempted with , would have been thrown. + The following code example demonstrates the , , and methods. The code example creates a thread. Before the thread is started, displays the initial state and changes the state to . The method then returns `false` when attempting to change the state to because the apartment state is already set. If the same operation had been attempted with , would have been thrown. After the thread is started, the method is used again. This time it throws because the thread has already been started. diff --git a/xml/System.Threading/WaitHandle.xml b/xml/System.Threading/WaitHandle.xml index f4a31cf55bcf3..9acdbf86a6e2c 100644 --- a/xml/System.Threading/WaitHandle.xml +++ b/xml/System.Threading/WaitHandle.xml @@ -430,7 +430,7 @@ ## Examples The following code example uses the method overload to allow the main thread to signal a blocked thread and then wait until the thread finishes a task. - The example starts five threads, allows them to block on an created with the flag, and then releases one thread each time the user presses the ENTER key. The example then queues another five threads and releases them all using an created with the flag. + The example starts five threads, allows them to block on an created with the flag, and then releases one thread each time the user presses the ENTER key. The example then queues another five threads and releases them all using an created with the flag. [!code-cpp[System.Threading.WaitHandle.SignalAndWait#1](~/samples/snippets/cpp/VS_Snippets_CLR_System/system.Threading.WaitHandle.SignalAndWait/CPP/source.cpp#1)] [!code-csharp[System.Threading.WaitHandle.SignalAndWait#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.Threading.WaitHandle.SignalAndWait/CS/source.cs#1)] diff --git a/xml/System.Web.Caching/Cache.xml b/xml/System.Web.Caching/Cache.xml index 2a5bde4f42855..54cf515029e5f 100644 --- a/xml/System.Web.Caching/Cache.xml +++ b/xml/System.Web.Caching/Cache.xml @@ -613,7 +613,7 @@ field, which has a constant value of zero. The cached item expires in accordance with the `absoluteExpiration` parameter associated with the `Insert` or `Add` method call. + When used, this field sets the `slidingExpiration` parameter to the field, which has a constant value of zero. The cached item expires in accordance with the `absoluteExpiration` parameter associated with the `Insert` or `Add` method call. diff --git a/xml/System.Web.Configuration/FormsAuthPasswordFormat.xml b/xml/System.Web.Configuration/FormsAuthPasswordFormat.xml index dbc2f06e103a3..206de47c9e039 100644 --- a/xml/System.Web.Configuration/FormsAuthPasswordFormat.xml +++ b/xml/System.Web.Configuration/FormsAuthPasswordFormat.xml @@ -90,7 +90,7 @@ System.Web.Configuration.FormsAuthPasswordFormat - To be added. + Specifies that passwords are encrypted using the SHA256 hash algorithm. This field is constant. @@ -106,7 +106,7 @@ System.Web.Configuration.FormsAuthPasswordFormat - To be added. + Specifies that passwords are encrypted using the SHA384 hash algorithm. This field is constant. @@ -122,7 +122,7 @@ System.Web.Configuration.FormsAuthPasswordFormat - To be added. + Specifies that passwords are encrypted using the SHA512 hash algorithm. This field is constant. diff --git a/xml/System.Web.Configuration/UrlMappingCollection.xml b/xml/System.Web.Configuration/UrlMappingCollection.xml index f5ae1db25b569..47e5069960795 100644 --- a/xml/System.Web.Configuration/UrlMappingCollection.xml +++ b/xml/System.Web.Configuration/UrlMappingCollection.xml @@ -140,7 +140,7 @@ The following list describes the conditions that apply if you use the method to save the file: -- If you pass or as the parameter value, a `clear` element is inserted into the `urlMappings` section of the configuration file at the current hierarchy level. +- If you pass or as the parameter value, a `clear` element is inserted into the `urlMappings` section of the configuration file at the current hierarchy level. - If you pass as the parameter value, a series of `remove` elements are added to the `urlMappings` of the configuration file at the current hierarchy level. These `remove` elements remove all references to the `add` elements defined in the parent configuration files at higher levels in the hierarchy. With the enumeration value, there is one additional property on the collection that affects what gets serialized to the configuration file. The property is and is `false` by default. One of the following conditions applies: diff --git a/xml/System.Web.Handlers/ScriptResourceHandler.xml b/xml/System.Web.Handlers/ScriptResourceHandler.xml index 55d59797cc3d5..865e1cea246e9 100644 --- a/xml/System.Web.Handlers/ScriptResourceHandler.xml +++ b/xml/System.Web.Handlers/ScriptResourceHandler.xml @@ -20,7 +20,7 @@ class processes all requests for embedded script files that are referenced through the class. The object retrieves the embedded script library and any localized resources for the script library. If the property is set to `true`, the object adds a call at the end of the script file to the method of the object. + The class processes all requests for embedded script files that are referenced through the class. The object retrieves the embedded script library and any localized resources for the script library. If the property is set to `true`, the object adds a call at the end of the script file to the method of the object. By default, the class compresses and caches embedded script files for Internet Explorer 7. You can turn compression and caching off through the and properties of the class. You set these properties in the Web.config file. diff --git a/xml/System.Web.Security/MachineKey.xml b/xml/System.Web.Security/MachineKey.xml index fcb93591a7b08..9606af6deb4b2 100644 --- a/xml/System.Web.Security/MachineKey.xml +++ b/xml/System.Web.Security/MachineKey.xml @@ -169,7 +169,7 @@ MachineKey.Unprotect(..., "Private message", "Recipient: " + username) When the method is called, the value that is provided for the `purposes` parameter must be the same value that was provided to the method. Otherwise the operation will fail with a exception. - The configuration settings that are required for the option are required for this method even if the property is not set to the option. + The configuration settings that are required for the option are required for this method even if the property is not set to the option. ]]> diff --git a/xml/System.Web.Services.Description/SoapProtocolImporter.xml b/xml/System.Web.Services.Description/SoapProtocolImporter.xml index 94c27bbe00145..2067ca128ef01 100644 --- a/xml/System.Web.Services.Description/SoapProtocolImporter.xml +++ b/xml/System.Web.Services.Description/SoapProtocolImporter.xml @@ -187,7 +187,7 @@ method determines whether to generate a class for the current binding, as represented by the property. The method checks whether the property's property contains a instance. In addition, the transport mechanism obtained through the property must be supported by the current Web services configuration. + The method determines whether to generate a class for the current binding, as represented by the property. The method checks whether the property's property contains a instance. In addition, the transport mechanism obtained through the property must be supported by the current Web services configuration. ]]> @@ -217,7 +217,7 @@ method determines whether to generate a method for the current operation, as represented by the property. This evaluation takes place for each operation in a binding for which a class is being generated. If a `false` value is returned, the method executes. A `true` value is returned only if the input value is or . + The method determines whether to generate a method for the current operation, as represented by the property. This evaluation takes place for each operation in a binding for which a class is being generated. If a `false` value is returned, the method executes. A `true` value is returned only if the input value is or . For more information, see the property. The property is of type . diff --git a/xml/System.Web.UI.Design/ControlDesigner.xml b/xml/System.Web.UI.Design/ControlDesigner.xml index cfc462150579a..4366bde81a1b0 100644 --- a/xml/System.Web.UI.Design/ControlDesigner.xml +++ b/xml/System.Web.UI.Design/ControlDesigner.xml @@ -1539,7 +1539,7 @@ - The user enters or exits template editing mode for the control. - The class supplies a default delegate to handle the event. Classes deriving from should set the value and override the method to process events that are raised when the design host draws the control on the design surface. + The class supplies a default delegate to handle the event. Classes deriving from should set the value and override the method to process events that are raised when the design host draws the control on the design surface. The method allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class. diff --git a/xml/System.Web.UI.HtmlControls/HtmlSelect.xml b/xml/System.Web.UI.HtmlControls/HtmlSelect.xml index c0212e4f67741..cb4b70c762579 100644 --- a/xml/System.Web.UI.HtmlControls/HtmlSelect.xml +++ b/xml/System.Web.UI.HtmlControls/HtmlSelect.xml @@ -1520,7 +1520,7 @@ The property is commonly used to get the value of the item referenced by the property. > [!NOTE] -> If no item is selected in the control, is returned. +> If no item is selected in the control, is returned. If you set this property to a value, the property is updated with the index of the first item in the list that contains that value. If no matching value is found, the property is left unchanged. diff --git a/xml/System.Web.UI.MobileControls/Command.xml b/xml/System.Web.UI.MobileControls/Command.xml index 5731cad54aeca..b5b9c37464ad4 100644 --- a/xml/System.Web.UI.MobileControls/Command.xml +++ b/xml/System.Web.UI.MobileControls/Command.xml @@ -248,14 +248,14 @@ ## Remarks Access the two available types through the enumeration. - (default) + (default) The command is rendered as a button. - + The command is rendered as a link. > [!NOTE] -> The property supports the value only on devices that support JavaScript as indicated by the property. +> The property supports the value only on devices that support JavaScript as indicated by the property. diff --git a/xml/System.Web.UI.MobileControls/SelectionList.xml b/xml/System.Web.UI.MobileControls/SelectionList.xml index 4ea8a1a873a8d..623c8e7f04001 100644 --- a/xml/System.Web.UI.MobileControls/SelectionList.xml +++ b/xml/System.Web.UI.MobileControls/SelectionList.xml @@ -289,7 +289,7 @@ , set its property to . + To create a multiple-selection , set its property to . ]]> diff --git a/xml/System.Web.UI.MobileControls/Style.xml b/xml/System.Web.UI.MobileControls/Style.xml index 86602e5cd77c2..70dcc4895181a 100644 --- a/xml/System.Web.UI.MobileControls/Style.xml +++ b/xml/System.Web.UI.MobileControls/Style.xml @@ -135,10 +135,10 @@ |Value|Description| |-----------|-----------------| -||No alignment is set for the specified object.| -||Aligns to the left.| -||Aligns to the center.| -||Aligns to the right.| +||No alignment is set for the specified object.| +||Aligns to the left.| +||Aligns to the center.| +||Aligns to the right.| ]]> @@ -996,9 +996,9 @@ |Enumeration|Value|Description| |-----------------|-----------|-----------------| -||0|No size is set for the specified object. This is the default value.| -||1|Wrap to the next line.| -||2|The text is not wrapped to the next line.| +||0|No size is set for the specified object. This is the default value.| +||1|Wrap to the next line.| +||2|The text is not wrapped to the next line.| ]]> diff --git a/xml/System.Web.UI.WebControls/AdRotator.xml b/xml/System.Web.UI.WebControls/AdRotator.xml index 6cbca70da77e6..d50dc438e4cd5 100644 --- a/xml/System.Web.UI.WebControls/AdRotator.xml +++ b/xml/System.Web.UI.WebControls/AdRotator.xml @@ -951,7 +951,7 @@ ## Remarks This property is used primarily by control developers. - Use the property to determine the value associated with an control. This property overrides the base implementation to always return . + Use the property to determine the value associated with an control. This property overrides the base implementation to always return . ]]> diff --git a/xml/System.Web.UI.WebControls/BaseValidator.xml b/xml/System.Web.UI.WebControls/BaseValidator.xml index f96ae1df9e6c4..742c4b474847d 100644 --- a/xml/System.Web.UI.WebControls/BaseValidator.xml +++ b/xml/System.Web.UI.WebControls/BaseValidator.xml @@ -32,7 +32,7 @@ |Validation control|Description| |------------------------|-----------------| -||Validates a value against the value entered into another input control, against a constant value, or against a proper data type by setting the property to .| +||Validates a value against the value entered into another input control, against a constant value, or against a proper data type by setting the property to .| ||Validates a value using a user-provided custom validation routine.| ||Validates whether a value is within a range of values.| ||Validates a value using a regular expression.| diff --git a/xml/System.Web.UI.WebControls/ControlParameter.xml b/xml/System.Web.UI.WebControls/ControlParameter.xml index dbbe1e1823659..90a7daa1dd865 100644 --- a/xml/System.Web.UI.WebControls/ControlParameter.xml +++ b/xml/System.Web.UI.WebControls/ControlParameter.xml @@ -53,7 +53,7 @@ object that is created with the constructor is initialized with default values for all its properties. The and properties are initialized to . In addition, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. + A object that is created with the constructor is initialized with default values for all its properties. The and properties are initialized to . In addition, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. diff --git a/xml/System.Web.UI.WebControls/CookieParameter.xml b/xml/System.Web.UI.WebControls/CookieParameter.xml index 91c2978bae65e..4d822a5a325ae 100644 --- a/xml/System.Web.UI.WebControls/CookieParameter.xml +++ b/xml/System.Web.UI.WebControls/CookieParameter.xml @@ -56,7 +56,7 @@ object created with the constructor is initialized with default values for all its properties. The property is initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. + A object created with the constructor is initialized with default values for all its properties. The property is initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. diff --git a/xml/System.Web.UI.WebControls/DataControlField.xml b/xml/System.Web.UI.WebControls/DataControlField.xml index 4fe5ac33cb8ba..0b9a02cd4dea0 100644 --- a/xml/System.Web.UI.WebControls/DataControlField.xml +++ b/xml/System.Web.UI.WebControls/DataControlField.xml @@ -668,7 +668,7 @@ . + A data-bound control is in insert mode when the state of the current display row is . The control checks the value of this property before it renders a set of fields. If the property is `false`, the property of the object is set to `false`. diff --git a/xml/System.Web.UI.WebControls/DataControlFieldCell.xml b/xml/System.Web.UI.WebControls/DataControlFieldCell.xml index fec5e31fa77d7..8fe3cf3c83927 100644 --- a/xml/System.Web.UI.WebControls/DataControlFieldCell.xml +++ b/xml/System.Web.UI.WebControls/DataControlFieldCell.xml @@ -51,7 +51,7 @@ element defined by its base class to render the cell. The object passed in the `containingField` parameter is used to determine whether to show headers and what styles to apply to the cell when it is rendered. + This constructor uses the element defined by its base class to render the cell. The object passed in the `containingField` parameter is used to determine whether to show headers and what styles to apply to the cell when it is rendered. ]]> diff --git a/xml/System.Web.UI.WebControls/DataControlFieldHeaderCell.xml b/xml/System.Web.UI.WebControls/DataControlFieldHeaderCell.xml index 094eb2f7b7184..22e754667e5da 100644 --- a/xml/System.Web.UI.WebControls/DataControlFieldHeaderCell.xml +++ b/xml/System.Web.UI.WebControls/DataControlFieldHeaderCell.xml @@ -51,7 +51,7 @@ constructor passes the element as its `tagKey` parameter, which is the representation of the HTML tag it is rendered with. The passed in the `containingField` parameter is used to determine whether to show headers and what styles to apply to the cell when it is rendered. + The constructor passes the element as its `tagKey` parameter, which is the representation of the HTML tag it is rendered with. The passed in the `containingField` parameter is used to determine whether to show headers and what styles to apply to the cell when it is rendered. ]]> diff --git a/xml/System.Web.UI.WebControls/DataPager.xml b/xml/System.Web.UI.WebControls/DataPager.xml index fca89f9677b3c..d399c3a835fde 100644 --- a/xml/System.Web.UI.WebControls/DataPager.xml +++ b/xml/System.Web.UI.WebControls/DataPager.xml @@ -1193,7 +1193,7 @@ property returns an HTML element that is used by the method to write the appropriate markup for the control. This property overrides the base implementation to always return . + The property returns an HTML element that is used by the method to write the appropriate markup for the control. This property overrides the base implementation to always return . > [!NOTE] > This property is primarily used by control developers to extend the control. diff --git a/xml/System.Web.UI.WebControls/FileUpload.xml b/xml/System.Web.UI.WebControls/FileUpload.xml index 4a053c3bc3a4a..ff88f99083cb1 100644 --- a/xml/System.Web.UI.WebControls/FileUpload.xml +++ b/xml/System.Web.UI.WebControls/FileUpload.xml @@ -61,7 +61,7 @@ ## Security Considerations When you call the method, you must specify the full path of the directory in which to save the uploaded file. If you do not explicitly specify a path in your application code, an exception is thrown when a user attempts to upload a file. This behavior helps keep the files on the server secure by preventing users from being able to write to arbitrary locations in your application's directory structure, as well as preventing access to sensitive root directories. - The method writes the uploaded file to the specified directory. Therefore, the ASP.NET application must have write access to the directory on the server. There are two ways that the application can get write access. You can explicitly grant write access to the account under which the application is running, in the directory in which the uploaded files will be saved. Alternatively, you can increase the level of trust that is granted to the ASP.NET application. To get write access to the executing directory for the application, the application must be granted the object with the trust level set to the value. Increasing the level of trust increases the application's access to resources on the server. Note that this is not a secure approach, because a malicious user who gains control of your application will also be able to run under this higher level of trust. It is a best practice to run an ASP.NET application in the context of a user with the minimum privileges that are required for the application to run. For more information about security in ASP.NET applications, see [Basic Security Practices for Web Applications](http://msdn.microsoft.com/library/3eeeee9e-b09f-4c7f-8ce5-d9ca1f9322ad) and [ASP.NET Trust Levels and Policy Files](http://msdn.microsoft.com/library/f897c794-10d3-414c-86b7-59b66564bbf1). + The method writes the uploaded file to the specified directory. Therefore, the ASP.NET application must have write access to the directory on the server. There are two ways that the application can get write access. You can explicitly grant write access to the account under which the application is running, in the directory in which the uploaded files will be saved. Alternatively, you can increase the level of trust that is granted to the ASP.NET application. To get write access to the executing directory for the application, the application must be granted the object with the trust level set to the value. Increasing the level of trust increases the application's access to resources on the server. Note that this is not a secure approach, because a malicious user who gains control of your application will also be able to run under this higher level of trust. It is a best practice to run an ASP.NET application in the context of a user with the minimum privileges that are required for the application to run. For more information about security in ASP.NET applications, see [Basic Security Practices for Web Applications](http://msdn.microsoft.com/library/3eeeee9e-b09f-4c7f-8ce5-d9ca1f9322ad) and [ASP.NET Trust Levels and Policy Files](http://msdn.microsoft.com/library/f897c794-10d3-414c-86b7-59b66564bbf1). ## Memory Limitations @@ -609,7 +609,7 @@ Before calling the method, you should use the property to verify that the control contains a file to upload. If the returns `true`, call the method. If it returns `false`, display a message to the user indicating that the control does not contain a file. If you do not provide error-handling code to verify that a file exists, an attempt to save a nonexistent file throws an exception. - For a call to the to work, the ASP.NET application must have write access to the directory on the server. There are two ways that the application can get write access. You can explicitly grant write access to the account under which the application is running, in the directory in which the uploaded files will be saved. Alternatively, you can increase the level of trust that is granted to the ASP.NET application. To get write access to the executing directory for the application, the application must be granted the object with the trust level set to the value. Increasing the level of trust increases the application's access to resources on the server. Note that this is not a secure approach, because a malicious user who gains control of your application will also be able to run under this higher level of trust. It is a best practice to run an ASP.NET application in the context of a user who has the minimum privileges that are required for the application to run. For more information about security in ASP.NET applications, see [Basic Security Practices for Web Applications](http://msdn.microsoft.com/library/3eeeee9e-b09f-4c7f-8ce5-d9ca1f9322ad) and [ASP.NET Trust Levels and Policy Files](http://msdn.microsoft.com/library/f897c794-10d3-414c-86b7-59b66564bbf1). + For a call to the to work, the ASP.NET application must have write access to the directory on the server. There are two ways that the application can get write access. You can explicitly grant write access to the account under which the application is running, in the directory in which the uploaded files will be saved. Alternatively, you can increase the level of trust that is granted to the ASP.NET application. To get write access to the executing directory for the application, the application must be granted the object with the trust level set to the value. Increasing the level of trust increases the application's access to resources on the server. Note that this is not a secure approach, because a malicious user who gains control of your application will also be able to run under this higher level of trust. It is a best practice to run an ASP.NET application in the context of a user who has the minimum privileges that are required for the application to run. For more information about security in ASP.NET applications, see [Basic Security Practices for Web Applications](http://msdn.microsoft.com/library/3eeeee9e-b09f-4c7f-8ce5-d9ca1f9322ad) and [ASP.NET Trust Levels and Policy Files](http://msdn.microsoft.com/library/f897c794-10d3-414c-86b7-59b66564bbf1). diff --git a/xml/System.Web.UI.WebControls/FontUnit.xml b/xml/System.Web.UI.WebControls/FontUnit.xml index 9e8e7c4bc0983..d6dd383057e75 100644 --- a/xml/System.Web.UI.WebControls/FontUnit.xml +++ b/xml/System.Web.UI.WebControls/FontUnit.xml @@ -578,7 +578,7 @@ ## Remarks Use the static method to convert the specified string to its equivalent. - If the value of the `s` parameter is not `null`, not , and a valid value, the following table shows initial property values for the new instance of . + If the value of the `s` parameter is not `null`, not , and a valid value, the following table shows initial property values for the new instance of . |Property|Initial Value| |--------------|-------------------| diff --git a/xml/System.Web.UI.WebControls/FormParameter.xml b/xml/System.Web.UI.WebControls/FormParameter.xml index 35735327164f1..dce834f1bf656 100644 --- a/xml/System.Web.UI.WebControls/FormParameter.xml +++ b/xml/System.Web.UI.WebControls/FormParameter.xml @@ -59,7 +59,7 @@ object created with the constructor is initialized with default values for all its properties. The is initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to null (`Nothing` in Visual Basic). + A object created with the constructor is initialized with default values for all its properties. The is initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to null (`Nothing` in Visual Basic). diff --git a/xml/System.Web.UI.WebControls/ListView.xml b/xml/System.Web.UI.WebControls/ListView.xml index 2faf6460f5db0..fefcbcba5dadc 100644 --- a/xml/System.Web.UI.WebControls/ListView.xml +++ b/xml/System.Web.UI.WebControls/ListView.xml @@ -980,7 +980,7 @@ method is a helper method that is called by the control to create an insert item. An insert item is a object whose is equal to . + The method is a helper method that is called by the control to create an insert item. An insert item is a object whose is equal to . > [!NOTE] > This method is primarily used by control developers to extend the control. @@ -1561,7 +1561,7 @@ control when the data source that is bound to the control does not contain any records and the property is set to . The template is rendered instead of the template. If the property is set to a value other than , the template is not rendered. + The empty template is displayed in a control when the data source that is bound to the control does not contain any records and the property is set to . The template is rendered instead of the template. If the property is set to a value other than , the template is not rendered. You can define a custom user interface (UI) for the empty template by using the property. To specify a custom template declaratively for the empty template, add and `EmptyDataTemplate` element inside the control. You can then add the contents of the template to the `EmptyDataTemplate` element. @@ -2117,7 +2117,7 @@ property to access the insert item of a control. An insert item is a object whose is equal to . The content of an insert item is defined by the property. + Use the property to access the insert item of a control. An insert item is a object whose is equal to . The content of an insert item is defined by the property. @@ -2165,9 +2165,9 @@ |Row type|Description| |--------------|-----------------| -||Renders the template as the first item in the control.| -||Renders the template as the last item in the control.| -||Does not render the template.| +||Renders the template as the first item in the control.| +||Renders the template as the last item in the control.| +||Does not render the template.| @@ -2313,7 +2313,7 @@ ## Remarks Use the method to programmatically insert an item in the data source. This method is typically used to insert an item from outside the control, such as from a different control on the page. - To use the method, you must define an template in the control. You must also set the property to a value different from . To specify whether page validation is performed before the insert operation, use the `causesValidation` parameter. + To use the method, you must define an template in the control. You must also set the property to a value different from . To specify whether page validation is performed before the insert operation, use the `causesValidation` parameter. This method raises the and events. diff --git a/xml/System.Web.UI.WebControls/ListViewDataItem.xml b/xml/System.Web.UI.WebControls/ListViewDataItem.xml index 57b01c756d298..943bf15327bad 100644 --- a/xml/System.Web.UI.WebControls/ListViewDataItem.xml +++ b/xml/System.Web.UI.WebControls/ListViewDataItem.xml @@ -18,7 +18,7 @@ ## Remarks The class represents an individual data item in a control. A data item usually corresponds to a record in a data source object. The class derives from the class. - Each item in the control has a designated item type that is represented by the property. When the item type is , you can use the class to get more information about the item. + Each item in the control has a designated item type that is represented by the property. When the item type is , you can use the class to get more information about the item. The control stores data items in the collection. To determine the index of a object in the collection, use the property. To determine the index of the data item in the underlying data source, use the property. The difference between these index properties is that represents the position of the data item in the current page, whereas is based on the page offset. If the paging functionality is not enabled in the control by using a control, these two properties will contain the same value. diff --git a/xml/System.Web.UI.WebControls/MailDefinition.xml b/xml/System.Web.UI.WebControls/MailDefinition.xml index 47a40e6de676e..c1bb93533c0a9 100644 --- a/xml/System.Web.UI.WebControls/MailDefinition.xml +++ b/xml/System.Web.UI.WebControls/MailDefinition.xml @@ -199,7 +199,7 @@ ## Remarks The method creates a new object that can be sent using the method. - The property must be set to indicate whether the mail message should be formatted as plain text () or HTML (). + The property must be set to indicate whether the mail message should be formatted as plain text () or HTML (). The `recipients` parameter contains a comma-separated list of recipients of the e-mail message. If the `recipients` parameter contains an improperly formatted Internet e-mail address, the method throws an exception and the e-mail message is not sent. diff --git a/xml/System.Web.UI.WebControls/NumericPagerField.xml b/xml/System.Web.UI.WebControls/NumericPagerField.xml index 5e3226724361a..db1e27dd185ba 100644 --- a/xml/System.Web.UI.WebControls/NumericPagerField.xml +++ b/xml/System.Web.UI.WebControls/NumericPagerField.xml @@ -30,9 +30,9 @@ |Button type|Description| |-----------------|-----------------| -||A control.| -||An control.| -||A control.| +||A control.| +||An control.| +||A control.| The controls inside the object are rendered with non-breaking spaces between them. If you want to customize this behavior, you can use the property. @@ -40,7 +40,7 @@ You can set the text of the next-page button by setting the property. You can set the text of the previous-page button by using the property. - When the property is set to , you must provide the URL of an image that will be displayed for the next-page and previous page buttons. You do this by setting the and properties. In that case, the corresponding text property is used as the alternate text for the image. For example, the text that is specified by the property is displayed as the alternate text for the next-page image button. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. + When the property is set to , you must provide the URL of an image that will be displayed for the next-page and previous page buttons. You do this by setting the and properties. In that case, the corresponding text property is used as the alternate text for the image. For example, the text that is specified by the property is displayed as the alternate text for the next-page image button. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. @@ -161,11 +161,11 @@ |Button type value|Description| |-----------------------|-----------------| -||A control.| -||An control.| -||A control.| +||A control.| +||An control.| +||A control.| - When the property is set to , you must provide the URL of an image for the next-page and previous page buttons. To do this, you can use the and properties. The corresponding text property is used as the alternate text for the image. For example, the text that is specified by the property is displayed as the alternate text for the next-page image button. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. + When the property is set to , you must provide the URL of an image for the next-page and previous page buttons. To do this, you can use the and properties. The corresponding text property is used as the alternate text for the image. For example, the text that is specified by the property is displayed as the alternate text for the next-page image button. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. The value of the property is stored in view state. @@ -449,9 +449,9 @@ property is set to , use the property to specify the URL of an image that is displayed for the next-page button. The image can be in any file format that is supported in browser, such as .jpg, .gif, .bmp, and .png. + When the property is set to , use the property to specify the URL of an image that is displayed for the next-page button. The image can be in any file format that is supported in browser, such as .jpg, .gif, .bmp, and .png. - When the property is set to a value other than , setting the property has no effect. + When the property is set to a value other than , setting the property has no effect. The value of this property is stored in view state. @@ -494,7 +494,7 @@ property is set to , the text specified in the property is used as the alternate text for the image. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. + When the property is set to , the text specified in the property is used as the alternate text for the image. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. The value of this property is stored in view state. It can be saved automatically to a resource file by using a designer tool. For more information, see and [Globalization and Localization](http://msdn.microsoft.com/library/8ef3838e-9d05-4236-9dd0-ceecff9df80d). @@ -643,9 +643,9 @@ property is set to , use the property to specify the URL of an image that is displayed for the previous-page button. The image can be in any file format that is supported in browsers, such as .jpg, .gif, .bmp, and .png. + When the property is set to , use the property to specify the URL of an image that is displayed for the previous-page button. The image can be in any file format that is supported in browsers, such as .jpg, .gif, .bmp, and .png. - When the property is set to a value other than , setting the property has no effect. + When the property is set to a value other than , setting the property has no effect. The value of this property is stored in view state. @@ -688,7 +688,7 @@ property is set to , the text in the property is used as the alternate text for the image. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. + When the property is set to , the text in the property is used as the alternate text for the image. On browsers that support tooltips, this text is also displayed as a tooltip for the corresponding button. The value of this property is stored in view state. It can be saved automatically to a resource file by using a designer tool. For more information, see and [Globalization and Localization](http://msdn.microsoft.com/library/8ef3838e-9d05-4236-9dd0-ceecff9df80d). diff --git a/xml/System.Web.UI.WebControls/Parameter.xml b/xml/System.Web.UI.WebControls/Parameter.xml index 62320e6d52fd5..7920244d1ece6 100644 --- a/xml/System.Web.UI.WebControls/Parameter.xml +++ b/xml/System.Web.UI.WebControls/Parameter.xml @@ -93,7 +93,7 @@ object created with the constructor is initialized with default values for all its properties. The property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. + A object created with the constructor is initialized with default values for all its properties. The property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. ]]> @@ -118,7 +118,7 @@ object created with the constructor is initialized with the specified `name` and default values for its other properties. The property is initialized to , the property is initialized to , and the property is initialized to `null`. + A object created with the constructor is initialized with the specified `name` and default values for its other properties. The property is initialized to , the property is initialized to , and the property is initialized to `null`. diff --git a/xml/System.Web.UI.WebControls/ProfileParameter.xml b/xml/System.Web.UI.WebControls/ProfileParameter.xml index ae0dc6121528f..16bb44819af22 100644 --- a/xml/System.Web.UI.WebControls/ProfileParameter.xml +++ b/xml/System.Web.UI.WebControls/ProfileParameter.xml @@ -48,7 +48,7 @@ object created with the constructor is initialized with default values for all its properties. The properties are initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to null (`Nothing` in Visual Basic). + A object created with the constructor is initialized with default values for all its properties. The properties are initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to null (`Nothing` in Visual Basic). ]]> diff --git a/xml/System.Web.UI.WebControls/QueryStringParameter.xml b/xml/System.Web.UI.WebControls/QueryStringParameter.xml index edb5dcec97f14..05b13ec8479aa 100644 --- a/xml/System.Web.UI.WebControls/QueryStringParameter.xml +++ b/xml/System.Web.UI.WebControls/QueryStringParameter.xml @@ -69,7 +69,7 @@ - is initialized to an empty string (""). -- is initialized to . +- is initialized to . - is initialized to . diff --git a/xml/System.Web.UI.WebControls/SessionParameter.xml b/xml/System.Web.UI.WebControls/SessionParameter.xml index 49915071c8246..ce3fa09235e84 100644 --- a/xml/System.Web.UI.WebControls/SessionParameter.xml +++ b/xml/System.Web.UI.WebControls/SessionParameter.xml @@ -54,7 +54,7 @@ object created with the constructor is initialized with default values for all its properties. The property is initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. + A object created with the constructor is initialized with default values for all its properties. The property is initialized to . Additionally, the property is initialized to , the property is initialized to , the property is initialized to , and the property is initialized to `null`. diff --git a/xml/System.Web.UI.WebControls/SqlDataSource.xml b/xml/System.Web.UI.WebControls/SqlDataSource.xml index 600e934131892..10c76fd2c3b73 100644 --- a/xml/System.Web.UI.WebControls/SqlDataSource.xml +++ b/xml/System.Web.UI.WebControls/SqlDataSource.xml @@ -2030,12 +2030,12 @@ After the operation completes, the method is called to raise the event. You can handle this event to examine any return values and error codes and to perform any post-processing. - If the property is set to and caching is enabled, the object retrieves data from and saves data to the cache during the operation. The cache is created, discarded, or refreshed based on the caching behavior that is specified by the combination of the and properties. + If the property is set to and caching is enabled, the object retrieves data from and saves data to the cache during the operation. The cache is created, discarded, or refreshed based on the caching behavior that is specified by the combination of the and properties. > [!IMPORTANT] > When you are using client impersonation under Microsoft Windows authentication, the data is cached when the first user accesses the data. If another user requests the same data, the data is retrieved from the cache. The data is not retrieved by making another call to the database to verify the user's access to the data. If you expect more than one user to access the data, and you want each retrieval of data to be verified by the security configurations for the database, do not use caching. - If the property is set to and a property has been specified, the filter expression is evaluated with any supplied properties and the resulting filter is applied to the list of data during the operation. + If the property is set to and a property has been specified, the filter expression is evaluated with any supplied properties and the resulting filter is applied to the list of data during the operation. The method delegates to the method of the object that is associated with the control. To perform a data retrieval operation, the builds a object by using the text and any associated values, and then executes the against the underlying database. diff --git a/xml/System.Web.UI/AuthenticationServiceManager.xml b/xml/System.Web.UI/AuthenticationServiceManager.xml index bd3a2e49d2292..e39c2ebf34c70 100644 --- a/xml/System.Web.UI/AuthenticationServiceManager.xml +++ b/xml/System.Web.UI/AuthenticationServiceManager.xml @@ -100,7 +100,7 @@ property is not set, then the return value is . In this case, the AJAX functionality in ASP.NET will then use the built-in authentication Web service that corresponds to the following internal default path: ~/ScriptServices_AuthenticationService.asmx. The same behavior occurs if you set to an empty value or `null`. + If the property is not set, then the return value is . In this case, the AJAX functionality in ASP.NET will then use the built-in authentication Web service that corresponds to the following internal default path: ~/ScriptServices_AuthenticationService.asmx. The same behavior occurs if you set to an empty value or `null`. can be specified in the control or in an associated control. When is set at the level, the following caveats apply: diff --git a/xml/System.Web.UI/DataSourceSelectArguments.xml b/xml/System.Web.UI/DataSourceSelectArguments.xml index 8578be9e3bc65..80b374fc6958f 100644 --- a/xml/System.Web.UI/DataSourceSelectArguments.xml +++ b/xml/System.Web.UI/DataSourceSelectArguments.xml @@ -20,19 +20,19 @@ |Capability|Related DataSourceSelectArguments properties| |----------------|--------------------------------------------------| -||| -||, | -||, | +||| +||, | +||, | Data-bound controls explicitly call the method to bind data, which calls the method of the data source control they are associated with. In this way, the data-bound control retrieves data from the data source control on demand. Because the method accepts a parameter, the data-bound control is responsible for creating and managing a object and passing it to the method when it retrieves data from the data source control. In some cases, data-bound controls might not need any additional data-related capabilities. In this case, data-bound controls pass an arguments object to the method. - For sorted result sets, data-bound controls check a data source view's property at run time, and add a capability using the method. As a separate operation, the data-bound control can request a sorted result set from a data source control by setting the property on the object passed to the method. + For sorted result sets, data-bound controls check a data source view's property at run time, and add a capability using the method. As a separate operation, the data-bound control can request a sorted result set from a data source control by setting the property on the object passed to the method. - For paging scenarios, data-bound controls check a data source view's property at run time, and add a capability using the method. As a separate operation, the data-bound control can request a subset of data from a data source control for paging by setting the and properties on the object passed to the method. + For paging scenarios, data-bound controls check a data source view's property at run time, and add a capability using the method. As a separate operation, the data-bound control can request a subset of data from a data source control for paging by setting the and properties on the object passed to the method. - To retrieve a total row count for paging scenarios, data-bound controls check a data source view's property at run time, and add a capability using the method. As a separate operation, the data-bound control can request a total row count from a data source control for paging by setting the property on the object passed to the method. When the method returns, the total row count is contained by the property. + To retrieve a total row count for paging scenarios, data-bound controls check a data source view's property at run time, and add a capability using the method. As a separate operation, the data-bound control can request a total row count from a data source control for paging by setting the property on the object passed to the method. When the method returns, the total row count is contained by the property. > [!IMPORTANT] > If any of the properties are set, but the currently bound data source control does not support the requested capability, an exception is thrown when the method is called. @@ -258,7 +258,7 @@ property supports paging scenarios. Data-bound controls check a data source view's property at run time, and add a capability using the method if the view supports paging. If the data-bound control fails to add the capability, and the paging properties are set on a object passed to the data source view during a data retrieval operation, an exception might be thrown. + The property supports paging scenarios. Data-bound controls check a data source view's property at run time, and add a capability using the method if the view supports paging. If the data-bound control fails to add the capability, and the paging properties are set on a object passed to the data source view during a data retrieval operation, an exception might be thrown. The data-bound control can request a subset of data from a data source control for paging by setting the and properties on the object passed to the method. @@ -374,7 +374,7 @@ property supports paging scenarios. Data-bound controls check a data source view's property at run time, and add a capability using the method if the view supports paging. If the data-bound control fails to add the capability, and the paging properties are set on a object passed to the data source view during a data retrieval operation, an exception might be thrown. + The property supports paging scenarios. Data-bound controls check a data source view's property at run time, and add a capability using the method if the view supports paging. If the data-bound control fails to add the capability, and the paging properties are set on a object passed to the data source view during a data retrieval operation, an exception might be thrown. As a separate operation, the data-bound control can request a subset of data from a data source control by setting the and properties on the object passed to the method. diff --git a/xml/System.Web.UI/DataSourceView.xml b/xml/System.Web.UI/DataSourceView.xml index ef34f8c383b0e..02d35d09a5829 100644 --- a/xml/System.Web.UI/DataSourceView.xml +++ b/xml/System.Web.UI/DataSourceView.xml @@ -199,7 +199,7 @@ field to the object passed to the method. If a data-bound control requests a total row count, but the property returns `false`, the data source view throws an exception. + A data-bound control can request a total row count by adding the field to the object passed to the method. If a data-bound control requests a total row count, but the property returns `false`, the data source view throws an exception. ]]> diff --git a/xml/System.Web.UI/Html32TextWriter.xml b/xml/System.Web.UI/Html32TextWriter.xml index 3f34aa00f8cc2..e517072c142ea 100644 --- a/xml/System.Web.UI/Html32TextWriter.xml +++ b/xml/System.Web.UI/Html32TextWriter.xml @@ -140,7 +140,7 @@ field is passed in `tagKey` and the property is `true`, the method returns the `table` element. + If the field is passed in `tagKey` and the property is `true`, the method returns the `table` element. ]]> diff --git a/xml/System.Web.UI/RoleServiceManager.xml b/xml/System.Web.UI/RoleServiceManager.xml index e9fd36ba53d7e..f8fe365502291 100644 --- a/xml/System.Web.UI/RoleServiceManager.xml +++ b/xml/System.Web.UI/RoleServiceManager.xml @@ -140,7 +140,7 @@ property is not set, the return value is . In that case, ASP.NET uses the built-in authentication Web service that corresponds to the following internal default path: ~/RolesService.svc. The same behavior occurs if you set to an empty string or to `null`. + If the property is not set, the return value is . In that case, ASP.NET uses the built-in authentication Web service that corresponds to the following internal default path: ~/RolesService.svc. The same behavior occurs if you set to an empty string or to `null`. can be specified in the control or in an associated control. When is set at the level, the following conditions are true: diff --git a/xml/System.Web/HttpApplication.xml b/xml/System.Web/HttpApplication.xml index 49da2ae6788b1..3249ab3d58056 100644 --- a/xml/System.Web/HttpApplication.xml +++ b/xml/System.Web/HttpApplication.xml @@ -1744,9 +1744,18 @@ End Sub - To be added. - To be added. - To be added. + The callback method. + Specifies a a callback to invoke when a request execution step is executed. + + + + diff --git a/xml/System.Web/HttpCookie.xml b/xml/System.Web/HttpCookie.xml index e055e3651a543..f07d8b8903825 100644 --- a/xml/System.Web/HttpCookie.xml +++ b/xml/System.Web/HttpCookie.xml @@ -381,10 +381,10 @@ - To be added. - To be added. - To be added. - To be added. + The string representation of a cookie. + If the conversion succeeded, contains the value equivalent to the cookie contained in . If the conversion failed, is . The conversion fails if the parameter is or empty or if a cookie name can't be determined from . This parameter's value is overwritten by the method; the parameter is passed by reference and set to null as soon as the method is entered. + Converts the specified string representation of a cookie into its equivalent and returns a value that indicates whether the conversion succeeded. + if was converted successfully; otherwise, . To be added. diff --git a/xml/System.Windows.Annotations/Annotation.xml b/xml/System.Windows.Annotations/Annotation.xml index b697da8efb367..67e8c9cb574da 100644 --- a/xml/System.Windows.Annotations/Annotation.xml +++ b/xml/System.Windows.Annotations/Annotation.xml @@ -311,7 +311,7 @@ ## Remarks > [!NOTE] -> returns if the annotation was incorrectly created by using the default constructor without parameters. An constructor with parameters should be used to correctly instantiate a new annotation. +> returns if the annotation was incorrectly created by using the default constructor without parameters. An constructor with parameters should be used to correctly instantiate a new annotation. ]]> diff --git a/xml/System.Windows.Automation.Peers/DataGridCellItemAutomationPeer.xml b/xml/System.Windows.Automation.Peers/DataGridCellItemAutomationPeer.xml index 8952c9dd97942..f258ff0c3b973 100644 --- a/xml/System.Windows.Automation.Peers/DataGridCellItemAutomationPeer.xml +++ b/xml/System.Windows.Automation.Peers/DataGridCellItemAutomationPeer.xml @@ -383,17 +383,17 @@ ## Remarks If one of the following cases occurs, this method returns the current object: -- `patternInterface` is and the object that is associated with this is not read-only. +- `patternInterface` is and the object that is associated with this is not read-only. -- `patternInterface` is and the that is associated with this is not part of the row that is a placeholder for a new item in a object. +- `patternInterface` is and the that is associated with this is not part of the row that is a placeholder for a new item in a object. -- `patternInterface` is and the that is associated with this can be selected. +- `patternInterface` is and the that is associated with this can be selected. -- `patternInterface` is . +- `patternInterface` is . -- `patternInterface` is . +- `patternInterface` is . -- `patternInterface` is . +- `patternInterface` is . ]]> diff --git a/xml/System.Windows.Automation.Peers/DataGridColumnHeaderItemAutomationPeer.xml b/xml/System.Windows.Automation.Peers/DataGridColumnHeaderItemAutomationPeer.xml index 5b72d536fd486..c00ce91fc2ce7 100644 --- a/xml/System.Windows.Automation.Peers/DataGridColumnHeaderItemAutomationPeer.xml +++ b/xml/System.Windows.Automation.Peers/DataGridColumnHeaderItemAutomationPeer.xml @@ -113,13 +113,13 @@ ## Remarks If one of the following cases occurs, this method returns the current object: -- `patternInterface` is and the object that is associated with this can be sorted. +- `patternInterface` is and the object that is associated with this can be sorted. -- `patternInterface` is and the object that is associated with this can be resized by the user. +- `patternInterface` is and the object that is associated with this can be resized by the user. -- `patternInterface` is . +- `patternInterface` is . -- `patternInterface` is . +- `patternInterface` is . ]]> diff --git a/xml/System.Windows.Automation.Peers/DataGridItemAutomationPeer.xml b/xml/System.Windows.Automation.Peers/DataGridItemAutomationPeer.xml index be9edf3884c57..530460ed032b8 100644 --- a/xml/System.Windows.Automation.Peers/DataGridItemAutomationPeer.xml +++ b/xml/System.Windows.Automation.Peers/DataGridItemAutomationPeer.xml @@ -133,13 +133,13 @@ ## Remarks If one of the following cases occurs, this method returns the current object. -- `patternInterface` is and the that is associated with this is read-only. +- `patternInterface` is and the that is associated with this is read-only. -- `patternInterface` is and the that is associated with this can be selected. +- `patternInterface` is and the that is associated with this can be selected. -- `patternInterface` is . +- `patternInterface` is . -- `patternInterface` is . +- `patternInterface` is . ]]> diff --git a/xml/System.Windows.Automation.Peers/ItemAutomationPeer.xml b/xml/System.Windows.Automation.Peers/ItemAutomationPeer.xml index 413969469eb16..1fa6fceabda5e 100644 --- a/xml/System.Windows.Automation.Peers/ItemAutomationPeer.xml +++ b/xml/System.Windows.Automation.Peers/ItemAutomationPeer.xml @@ -408,7 +408,7 @@ and the item is not in the visual tree, this method returns a `this` pointer. If `patternInterface` equals , this method returns an object that implements the interface. + If `patternInterface` is and the item is not in the visual tree, this method returns a `this` pointer. If `patternInterface` equals , this method returns an object that implements the interface. ]]> diff --git a/xml/System.Windows.Automation.Peers/MenuItemAutomationPeer.xml b/xml/System.Windows.Automation.Peers/MenuItemAutomationPeer.xml index 52b55e68fb133..663b5f2b7da53 100644 --- a/xml/System.Windows.Automation.Peers/MenuItemAutomationPeer.xml +++ b/xml/System.Windows.Automation.Peers/MenuItemAutomationPeer.xml @@ -170,13 +170,13 @@ ## Remarks If one of the following cases occurs, this method returns the current object. -- `patternInterface` equals and the that is associated with this has child objects. +- `patternInterface` equals and the that is associated with this has child objects. -- `patternInterface` equals and the that is associated with this does not have child objects. +- `patternInterface` equals and the that is associated with this does not have child objects. -- `patternInterface` equals and the that is associated with this has its checkable property set to `true`. +- `patternInterface` equals and the that is associated with this has its checkable property set to `true`. - If `patternInterface` equals , this method returns an object that implements the interface. + If `patternInterface` equals , this method returns an object that implements the interface. ]]> diff --git a/xml/System.Windows.Automation.Peers/RadioButtonAutomationPeer.xml b/xml/System.Windows.Automation.Peers/RadioButtonAutomationPeer.xml index ec63269418d01..606662e082e4d 100644 --- a/xml/System.Windows.Automation.Peers/RadioButtonAutomationPeer.xml +++ b/xml/System.Windows.Automation.Peers/RadioButtonAutomationPeer.xml @@ -98,7 +98,7 @@ , this method returns a `this` pointer. If `patternInterface` equals , this method returns an object that implements the interface. + If `patternInterface` equals , this method returns a `this` pointer. If `patternInterface` equals , this method returns an object that implements the interface. ]]> diff --git a/xml/System.Windows.Controls/BooleanToVisibilityConverter.xml b/xml/System.Windows.Controls/BooleanToVisibilityConverter.xml index ed55f7f7be6d7..e7b618972e45a 100644 --- a/xml/System.Windows.Controls/BooleanToVisibilityConverter.xml +++ b/xml/System.Windows.Controls/BooleanToVisibilityConverter.xml @@ -25,7 +25,7 @@ class to convert a Boolean to and from a value. The method returns when `true` is passed in or when `false` is passed in. Note that the value hides the control and does not reserve space for it in a layout. When you call the method and specify a reference to an object, it returns `true` if the object is ; otherwise, it returns `false`. + Use the class to convert a Boolean to and from a value. The method returns when `true` is passed in or when `false` is passed in. Note that the value hides the control and does not reserve space for it in a layout. When you call the method and specify a reference to an object, it returns `true` if the object is ; otherwise, it returns `false`. ]]> diff --git a/xml/System.Windows.Controls/DataGrid.xml b/xml/System.Windows.Controls/DataGrid.xml index 60e37e7fe8cb5..44eb5636e3be4 100644 --- a/xml/System.Windows.Controls/DataGrid.xml +++ b/xml/System.Windows.Controls/DataGrid.xml @@ -2404,7 +2404,7 @@ ## Remarks When you set a value for the property, it must be greater than or equal to 0.0. - is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. The of the and properties are constrained by the following properties if they are set, in order of precedence: @@ -2480,7 +2480,7 @@ ## Remarks When you set a value for the property, it must be greater than or equal to 0.0. - and are not valid values for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + and are not valid values for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. The of the and properties are constrained by the following properties if they are set, in order of precedence: @@ -2534,7 +2534,7 @@ ## Remarks When you set a value for the property, it must be greater than or equal to 0.0. - and are not valid values for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + and are not valid values for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. If a conflict exists between the property and the property, takes precedence. However, the property set on an individual has higher precedence than a property set at the level and is not constrained by the property. @@ -4380,7 +4380,7 @@ ## Remarks When you set a value for the property, it must be equal to or greater than 0.0. Set this property to ("Auto" in XAML) to make the row header automatically adjust its size to fit its content. - is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. ]]> @@ -4424,7 +4424,7 @@ ## Remarks When you set a value for the property, it must be equal to or greater than 0.0. Set this property to ("Auto" in XAML) to make the row automatically adjust its size to fit its content. - is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. The property is applied to each that does not have its property set. If a conflict exists between the property and the property, takes precedence. diff --git a/xml/System.Windows.Controls/DataGridColumn.xml b/xml/System.Windows.Controls/DataGridColumn.xml index 7ea6e9be2a0f8..525d913cc3dbe 100644 --- a/xml/System.Windows.Controls/DataGridColumn.xml +++ b/xml/System.Windows.Controls/DataGridColumn.xml @@ -910,7 +910,7 @@ ## Remarks When you set a value for the property, it must be greater than or equal to 0.0. - is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + is not a valid value for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. The of the and properties are constrained by the following properties, if they are set, in order of precedence: @@ -964,7 +964,7 @@ ## Remarks When you set a value for the property, the value must be greater than or equal to 0.0. - and are not valid values for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. + and are not valid values for this property. The value restrictions on the value are enforced by a mechanism. If you attempt to set a value that is not valid, a run-time exception is thrown. The of the and properties are constrained by the following properties, if they are set, in order of precedence: diff --git a/xml/System.Windows.Controls/GridViewColumn.xml b/xml/System.Windows.Controls/GridViewColumn.xml index e0059fafb8d4f..821a905c0cad0 100644 --- a/xml/System.Windows.Controls/GridViewColumn.xml +++ b/xml/System.Windows.Controls/GridViewColumn.xml @@ -852,7 +852,7 @@ , use the property. + To get the exact width when this property is set to , use the property. ## XAML Attribute Usage diff --git a/xml/System.Windows.Controls/MenuItem.xml b/xml/System.Windows.Controls/MenuItem.xml index 998ff7ffc7adb..4914483c8509a 100644 --- a/xml/System.Windows.Controls/MenuItem.xml +++ b/xml/System.Windows.Controls/MenuItem.xml @@ -49,7 +49,7 @@ - It can be checked or unchecked. > [!NOTE] -> By default, the of a is set to . The default horizontal position of a is . If you set the property of a through a , the stack panel's default is applied and the item is centered. +> By default, the of a is set to . The default horizontal position of a is . If you set the property of a through a , the stack panel's default is applied and the item is centered. The handles the event, so if you attach an event handler to , your handler will never be called. To add your own handler, subscribe to the event or subscribe to by calling with `handledEventsToo` set to `true`. @@ -1914,7 +1914,7 @@ whose property is set to . + Use this property to change the style of a whose property is set to . ## XAML Attribute Usage @@ -1943,7 +1943,7 @@ whose property is set to . + Use this property to change the style of a whose property is set to . ## XAML Attribute Usage @@ -2036,7 +2036,7 @@ whose property is set to . + Use this property to change the style of a whose property is set to . ## XAML Attribute Usage @@ -2065,7 +2065,7 @@ whose property is set to . + Use this property to change the style of a whose property is set to . ## XAML Attribute Usage diff --git a/xml/System.Windows.Controls/TextBox.xml b/xml/System.Windows.Controls/TextBox.xml index b5d9c35dc5ca5..4c7895a626888 100644 --- a/xml/System.Windows.Controls/TextBox.xml +++ b/xml/System.Windows.Controls/TextBox.xml @@ -1140,7 +1140,7 @@ tbSettingText.Text = "Initial text contents of the TextBox." This property does not support animation. - When used in data-binding scenarios, this property uses the default update behavior of . + When used in data-binding scenarios, this property uses the default update behavior of . ## XAML Property Element Usage @@ -1197,7 +1197,7 @@ tbSettingText.Text = "Initial text contents of the TextBox." ## Examples - The following example shows how to create a with a of . + The following example shows how to create a with a of . [!code-xaml[TextBoxMiscSnippets_snip#TextBoxExampleWholePage](~/samples/snippets/csharp/VS_Snippets_Wpf/TextBoxMiscSnippets_snip/csharp/textboxexample.xaml#textboxexamplewholepage)] diff --git a/xml/System.Windows.Data/BindingOperations.xml b/xml/System.Windows.Data/BindingOperations.xml index a52a80ecdd851..0e6ce52b43ab3 100644 --- a/xml/System.Windows.Data/BindingOperations.xml +++ b/xml/System.Windows.Data/BindingOperations.xml @@ -303,7 +303,7 @@ In return, WPF provides the following behavior: - The maintains a "shadow copy" of the collection for use on the UI thread. -- events are queued up as they arrive (on any thread). +- events are queued up as they arrive (on any thread). - Pending events are applied to the shadow copy asynchronously on the UI thread when it has the opportunity to do so. diff --git a/xml/System.Windows.Documents/Block.xml b/xml/System.Windows.Documents/Block.xml index 608e640e86ac1..1ddeabce0cbe7 100644 --- a/xml/System.Windows.Documents/Block.xml +++ b/xml/System.Windows.Documents/Block.xml @@ -620,7 +620,7 @@ (equivalent to an attribute value of `Auto`) indicates that the line height is determined automatically from the current font characteristics. + A value of (equivalent to an attribute value of `Auto`) indicates that the line height is determined automatically from the current font characteristics. Changing this value does not change the height of the associated text; rather, it changes the height of the line that contains the text. To change the size of the text, use the property. diff --git a/xml/System.Windows.Documents/FlowDocument.xml b/xml/System.Windows.Documents/FlowDocument.xml index 44ada897ae00d..f414af5c7709e 100644 --- a/xml/System.Windows.Documents/FlowDocument.xml +++ b/xml/System.Windows.Documents/FlowDocument.xml @@ -521,7 +521,7 @@ *double* - String representation of a value equal to or greater than 0.0 but smaller than . An unqualified value is measured in device independent pixels. Strings need not explicitly include decimal points. + String representation of a value equal to or greater than 0.0 but smaller than . An unqualified value is measured in device independent pixels. Strings need not explicitly include decimal points. *qualifiedDouble* A *double* value as described above, (excepting `Auto`) followed by one of the following unit specifiers: `px`, `in`, `cm`, `pt`. @@ -599,7 +599,7 @@ ## Remarks The property is often used to append content to the end of a . - The returned by this property always has its set to . + The returned by this property always has its set to . @@ -634,7 +634,7 @@ ## Remarks The property is often used to insert content to the beginning of a . - The returned by this property always has its set to . + The returned by this property always has its set to . @@ -856,7 +856,7 @@ *double* - String representation of a value equal to or greater than 0.0 but smaller than . An unqualified value is measured in device independent pixels. Strings need not explicitly include decimal points. + String representation of a value equal to or greater than 0.0 but smaller than . An unqualified value is measured in device independent pixels. Strings need not explicitly include decimal points. *qualifiedDouble* A *double* value as described above, followed by one of the following unit specifiers: `px`, `in`, `cm`, `pt`. diff --git a/xml/System.Windows.Documents/TextElement.xml b/xml/System.Windows.Documents/TextElement.xml index f5263c1498647..aa54e174e9cf1 100644 --- a/xml/System.Windows.Documents/TextElement.xml +++ b/xml/System.Windows.Documents/TextElement.xml @@ -106,7 +106,7 @@ ## Remarks The property is often used to append content to the end of a . - The returned by this property always has its set to . + The returned by this property always has its set to . ]]> @@ -133,7 +133,7 @@ ## Remarks The property is often used to insert content to the beginning of a . - The returned by this property always has its set to . + The returned by this property always has its set to . ]]> @@ -158,7 +158,7 @@ returned by this property always has its set to . + The returned by this property always has its set to . ]]> @@ -183,7 +183,7 @@ returned by this property always has its set to . + The returned by this property always has its set to . ]]> diff --git a/xml/System.Windows.Documents/TextPointer.xml b/xml/System.Windows.Documents/TextPointer.xml index a1161aba9df7c..7521b113041ff 100644 --- a/xml/System.Windows.Documents/TextPointer.xml +++ b/xml/System.Windows.Documents/TextPointer.xml @@ -151,7 +151,7 @@ ); specify a negative value to delete characters that precede the current position (as in ). + Specify a positive value to delete characters that follow the current position (as in ); specify a negative value to delete characters that precede the current position (as in ). The number of characters actually deleted may be less than the number specified by `count`. This happens in cases where `count` specifies more characters than exist to be deleted. @@ -299,7 +299,7 @@ If the already points to a valid insertion position, but the closing tag for a non-empty formatting sequence directly follows that position in the given direction, then the returned by this method is adjusted to point to the insertion position just after the close of the formatting sequence. For example, consider the markup sequence `ab`. Note that there are two insertion positions between the letters `a` and `b` — one that precedes the closing `Bold` tag, and one directly following the closing `Bold` tag. If is called on a to the position directly after the letter `a` and before of the closing `Bold` tag, and with a `direction` of , the returned is adjusted to point to the position just before the letter `b`, after the closing `Bold` tag. A similar adjustment is made for opening formatting tags when working in the opposite logical direction. This method is intended to provide a means of disambiguation between insertion positions in similar cases. - This method can also be used to be selective about insertion points when a sequence of structural tags is involved. For example, when at a position between closing and opening paragraph tags, the direction parameter can be used to select the closest insertion point at the beginning of the following paragraph (by specifying ) or at the end of the preceding paragraph (by specifying ). + This method can also be used to be selective about insertion points when a sequence of structural tags is involved. For example, when at a position between closing and opening paragraph tags, the direction parameter can be used to select the closest insertion point at the beginning of the following paragraph (by specifying ) or at the end of the preceding paragraph (by specifying ). If the pointer is already at insertion position, and there are no adjacent formatting tags in the specified `direction`, the returned points to the same position as the calling . diff --git a/xml/System.Windows.Forms.VisualStyles/BackgroundType.xml b/xml/System.Windows.Forms.VisualStyles/BackgroundType.xml index 34aee99d894df..aa0fae05e98e0 100644 --- a/xml/System.Windows.Forms.VisualStyles/BackgroundType.xml +++ b/xml/System.Windows.Forms.VisualStyles/BackgroundType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The background of a visual style element can be a bitmap image, a filled rectangle, or nothing. The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/BorderType.xml b/xml/System.Windows.Forms.VisualStyles/BorderType.xml index f3397aa2922d4..ded9144bf1442 100644 --- a/xml/System.Windows.Forms.VisualStyles/BorderType.xml +++ b/xml/System.Windows.Forms.VisualStyles/BorderType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/ContentAlignment.xml b/xml/System.Windows.Forms.VisualStyles/ContentAlignment.xml index a7d93536f8340..5dc51e3b8737b 100644 --- a/xml/System.Windows.Forms.VisualStyles/ContentAlignment.xml +++ b/xml/System.Windows.Forms.VisualStyles/ContentAlignment.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/FillType.xml b/xml/System.Windows.Forms.VisualStyles/FillType.xml index 9c6c12976c171..4a4a2f0a7c5ed 100644 --- a/xml/System.Windows.Forms.VisualStyles/FillType.xml +++ b/xml/System.Windows.Forms.VisualStyles/FillType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/GlyphFontSizingType.xml b/xml/System.Windows.Forms.VisualStyles/GlyphFontSizingType.xml index 62468b2a94e31..c335127aa5115 100644 --- a/xml/System.Windows.Forms.VisualStyles/GlyphFontSizingType.xml +++ b/xml/System.Windows.Forms.VisualStyles/GlyphFontSizingType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/GlyphType.xml b/xml/System.Windows.Forms.VisualStyles/GlyphType.xml index 48fd4c73ab8ea..543a5f7811340 100644 --- a/xml/System.Windows.Forms.VisualStyles/GlyphType.xml +++ b/xml/System.Windows.Forms.VisualStyles/GlyphType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/HorizontalAlign.xml b/xml/System.Windows.Forms.VisualStyles/HorizontalAlign.xml index b67850ed42ab3..181900ad4913e 100644 --- a/xml/System.Windows.Forms.VisualStyles/HorizontalAlign.xml +++ b/xml/System.Windows.Forms.VisualStyles/HorizontalAlign.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/IconEffect.xml b/xml/System.Windows.Forms.VisualStyles/IconEffect.xml index e819ac88f59d0..3aec38c33d01d 100644 --- a/xml/System.Windows.Forms.VisualStyles/IconEffect.xml +++ b/xml/System.Windows.Forms.VisualStyles/IconEffect.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/ImageOrientation.xml b/xml/System.Windows.Forms.VisualStyles/ImageOrientation.xml index e3e463b7608ea..f7acb07269c0e 100644 --- a/xml/System.Windows.Forms.VisualStyles/ImageOrientation.xml +++ b/xml/System.Windows.Forms.VisualStyles/ImageOrientation.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/ImageSelectType.xml b/xml/System.Windows.Forms.VisualStyles/ImageSelectType.xml index c5b7f8acdae9a..d6e5524ea5914 100644 --- a/xml/System.Windows.Forms.VisualStyles/ImageSelectType.xml +++ b/xml/System.Windows.Forms.VisualStyles/ImageSelectType.xml @@ -17,7 +17,7 @@ ## Remarks A visual style can define up to five multiple-image files for an element. These image files are specified by the values through . The values indicate when the visual style selects a different image file to draw the element. - The values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/OffsetType.xml b/xml/System.Windows.Forms.VisualStyles/OffsetType.xml index c75595caf0770..459cec3b09947 100644 --- a/xml/System.Windows.Forms.VisualStyles/OffsetType.xml +++ b/xml/System.Windows.Forms.VisualStyles/OffsetType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/SizingType.xml b/xml/System.Windows.Forms.VisualStyles/SizingType.xml index af8c930d6135e..002747475ed42 100644 --- a/xml/System.Windows.Forms.VisualStyles/SizingType.xml +++ b/xml/System.Windows.Forms.VisualStyles/SizingType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/TextShadowType.xml b/xml/System.Windows.Forms.VisualStyles/TextShadowType.xml index 3f0f498083fbd..6ce6459b2bcc0 100644 --- a/xml/System.Windows.Forms.VisualStyles/TextShadowType.xml +++ b/xml/System.Windows.Forms.VisualStyles/TextShadowType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/TrueSizeScalingType.xml b/xml/System.Windows.Forms.VisualStyles/TrueSizeScalingType.xml index 052aa318c934d..699668473882b 100644 --- a/xml/System.Windows.Forms.VisualStyles/TrueSizeScalingType.xml +++ b/xml/System.Windows.Forms.VisualStyles/TrueSizeScalingType.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/VerticalAlignment.xml b/xml/System.Windows.Forms.VisualStyles/VerticalAlignment.xml index 9cf0c37087e50..83c18395cabd7 100644 --- a/xml/System.Windows.Forms.VisualStyles/VerticalAlignment.xml +++ b/xml/System.Windows.Forms.VisualStyles/VerticalAlignment.xml @@ -15,7 +15,7 @@ values represent the return values of the method when it is called with an argument value of . + The values represent the return values of the method when it is called with an argument value of . ]]> diff --git a/xml/System.Windows.Forms.VisualStyles/VisualStyleRenderer.xml b/xml/System.Windows.Forms.VisualStyles/VisualStyleRenderer.xml index f52b640fd0206..5676f321627a6 100644 --- a/xml/System.Windows.Forms.VisualStyles/VisualStyleRenderer.xml +++ b/xml/System.Windows.Forms.VisualStyles/VisualStyleRenderer.xml @@ -178,7 +178,7 @@ If the or of the rectangle specified by the `bounds` parameter is less than 0, the method will return without drawing the background. - The background of a visual style element can be a bitmap file or a filled border. To determine the background type, call the method with an argument value of . To determine whether the element background will scale to fit the specified bounds, call the method with an argument value of . + The background of a visual style element can be a bitmap file or a filled border. To determine the background type, call the method with an argument value of . To determine whether the element background will scale to fit the specified bounds, call the method with an argument value of . @@ -225,7 +225,7 @@ If the or of the rectangle specified by either the `bounds` or `clipRectangle` parameters is less than 0, the method will return without drawing the background. - The background of a visual style element can be a bitmap file or a filled border. To determine the background type, call the method with an argument value of . To determine whether the element background will scale to fit the specified bounds, call the method with an argument value of . + The background of a visual style element can be a bitmap file or a filled border. To determine the background type, call the method with an argument value of . To determine whether the element background will scale to fit the specified bounds, call the method with an argument value of . ]]> @@ -1040,7 +1040,7 @@ ## Remarks This property is used internally by the methods. If the class of elements specified by the property is not defined by the current visual style, then this property returns . - This property value is invalidated when the visual style of the operating system changes, or when the user disables visual styles. If you access this property directly, your code should query this property again to get a new handle when the event is raised with the property value of . + This property value is invalidated when the visual style of the operating system changes, or when the user disables visual styles. If you access this property directly, your code should query this property again to get a new handle when the event is raised with the property value of . ]]> @@ -1243,7 +1243,7 @@ |---------------|---------------------------------| |The operating system supports visual styles.|Verify that the property of the class is `true`.| |The user has enabled visual styles in the operating system.|Verify that the property of the class is `true`.| -|Visual styles are being used to draw the client area of application windows.|Verify that the property of the class has the value or .| +|Visual styles are being used to draw the client area of application windows.|Verify that the property of the class has the value or .| ]]> diff --git a/xml/System.Windows.Forms/AccessibleObject.xml b/xml/System.Windows.Forms/AccessibleObject.xml index 35cb0d2aed029..d02074dd8bc59 100644 --- a/xml/System.Windows.Forms/AccessibleObject.xml +++ b/xml/System.Windows.Forms/AccessibleObject.xml @@ -1211,12 +1211,12 @@ |Operation|Flag Combination| |---------------|----------------------| -|To simulate a click| `OR` **Note:** This combination will not select the desired control if called from within your own application. It will have the desired effect, however, if called from an external application.| -|To select a target item by simulating CTRL + click| `OR` | -|To cancel selection of a target item by simulating CTRL + click| `OR` | -|To simulate SHIFT + click| `OR` | -|To select a range of objects and put focus on the last object|Specify on the starting object to set the selection anchor. Then call again and specify `OR` on the last object.| -|To deselect all objects|Specify on any object. This flag deselects all selected objects except the one just selected. Then call again and specify on the same object.| +|To simulate a click| `OR` **Note:** This combination will not select the desired control if called from within your own application. It will have the desired effect, however, if called from an external application.| +|To select a target item by simulating CTRL + click| `OR` | +|To cancel selection of a target item by simulating CTRL + click| `OR` | +|To simulate SHIFT + click| `OR` | +|To select a range of objects and put focus on the last object|Specify on the starting object to set the selection anchor. Then call again and specify `OR` on the last object.| +|To deselect all objects|Specify on any object. This flag deselects all selected objects except the one just selected. Then call again and specify on the same object.| @@ -1326,7 +1326,7 @@ flag specifies that nonpublic fields are included in the search. The flag specifies that public fields are included in the search. + Each field must have a unique name. The flag specifies that nonpublic fields are included in the search. The flag specifies that public fields are included in the search. This member is an explicit interface member implementation. It can be used only when the instance is cast to an interface. diff --git a/xml/System.Windows.Forms/Application.xml b/xml/System.Windows.Forms/Application.xml index 183682af8b90d..535ba7399a429 100644 --- a/xml/System.Windows.Forms/Application.xml +++ b/xml/System.Windows.Forms/Application.xml @@ -375,7 +375,7 @@ This method enables visual styles for the application. Visual styles are the colors, fonts, and other visual elements that form an operating system theme. Controls will draw with visual styles if the control and the operating system support it. To have an effect, must be called before creating any controls in the application; typically, is the first line in the `Main` function. A separate manifest is not required to enable visual styles when calling . > [!NOTE] -> Prior to the .NET Framework 2.0, the `FlatStyle` property of some controls, such as controls that derive from , had to be set to in order for the controls to be drawn with visual styles. In applications written with the .NET Framework 2.0, this is no longer necessary. +> Prior to the .NET Framework 2.0, the `FlatStyle` property of some controls, such as controls that derive from , had to be set to in order for the controls to be drawn with visual styles. In applications written with the .NET Framework 2.0, this is no longer necessary. > [!NOTE] > This method will have no effect for controls hosted in Internet Explorer. @@ -1020,7 +1020,7 @@ |The operating system supports visual styles|To verify this condition separately, use the property of the class.| |The user has enabled visual styles in the operating system|To verify this condition separately, use the property of the class.| |Visual styles are enabled in the application|Visual styles can be enabled in an application by calling the method or by using an application manifest that specifies that ComCtl32.dll version 6 or later will be used to draw controls.| -|Visual styles are being used to draw the client area of application windows|To verify this condition separately, use the property of the class and verify that it has the value or .| +|Visual styles are being used to draw the client area of application windows|To verify this condition separately, use the property of the class and verify that it has the value or .| ]]> diff --git a/xml/System.Windows.Forms/BindingSource.xml b/xml/System.Windows.Forms/BindingSource.xml index db40ca30dc7bf..114a5074064cd 100644 --- a/xml/System.Windows.Forms/BindingSource.xml +++ b/xml/System.Windows.Forms/BindingSource.xml @@ -350,7 +350,7 @@ > [!NOTE] > Once the value of this property is set, the getter no longer refers the call to the underlying list. Instead, it simply returns the value that was previously set until the method is called. - Setting this property raises the event with set to . + Setting this property raises the event with set to . If you set the property to `true` and the underlying list type does not have a default constructor, you must handle the event and create the appropriate type. @@ -2347,11 +2347,11 @@ ## Remarks The method informs all controls bound to the to refresh their values. The method does this by raising the event at least once; the `metaDataChanged` parameter indicates the nature of the underlying change. -- A `metaDataChanged` value of `true` indicates that the data schema of has changed. A event is raised with set to . +- A `metaDataChanged` value of `true` indicates that the data schema of has changed. A event is raised with set to . - A `metaDataChanged` value of `false` indicates that only the values of one or more items have changed. - Regardless of the value of `metaDataChanged`, a event is raised with set to . As a consequence, calling with a parameter of `true` will raise two events. + Regardless of the value of `metaDataChanged`, a event is raised with set to . As a consequence, calling with a parameter of `true` will raise two events. is automatically called whenever another member makes major changes to the data-binding, such as setting the or properties. However, the programmer can also call this method explicitly. @@ -2415,7 +2415,7 @@ method notifies all controls bound to the item at the specified to refresh their values. The method does this by raising the event with set to . + The method notifies all controls bound to the item at the specified to refresh their values. The method does this by raising the event with set to . is automatically called whenever changes are made to the value of an individual item. However, the programmer can also call this method explicitly. diff --git a/xml/System.Windows.Forms/Button.xml b/xml/System.Windows.Forms/Button.xml index 2d5cf06f61d71..7e45b8f7f9858 100644 --- a/xml/System.Windows.Forms/Button.xml +++ b/xml/System.Windows.Forms/Button.xml @@ -37,7 +37,7 @@ When you display a form using the method, you can use the property of a button to specify the return value of . - You can change the button's appearance. For example, to make it appear flat for a Web look, set the property to . The property can also be set to , which appears flat until the mouse pointer passes over the button; then the button takes on the standard Windows button appearance. + You can change the button's appearance. For example, to make it appear flat for a Web look, set the property to . The property can also be set to , which appears flat until the mouse pointer passes over the button; then the button takes on the standard Windows button appearance. > [!NOTE] > If the control that has focus accepts and processes the ENTER key press, the does not process it. For example, if a multiline or another button has focus, that control processes the ENTER key press instead of the accept button. @@ -45,7 +45,7 @@ ## Examples - The following code example creates a , sets its property to , and adds it to a . + The following code example creates a , sets its property to , and adds it to a . [!code-cpp[Classic Button.Button Example#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Classic Button.Button Example/CPP/source.cpp#1)] [!code-csharp[Classic Button.Button Example#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Classic Button.Button Example/CS/source.cs#1)] @@ -208,7 +208,7 @@ and style bits are set to `false` for the control, and the event is not raised. + By default, the and style bits are set to `false` for the control, and the event is not raised. For more information about handling events, see [Handling and Raising Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). @@ -252,7 +252,7 @@ and style bits are set to `false` for the control, and the event is not raised. + By default, the and style bits are set to `false` for the control, and the event is not raised. For more information about handling events, see [Handling and Raising Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). diff --git a/xml/System.Windows.Forms/ButtonBase.xml b/xml/System.Windows.Forms/ButtonBase.xml index 23f81df386cf2..97150901eea81 100644 --- a/xml/System.Windows.Forms/ButtonBase.xml +++ b/xml/System.Windows.Forms/ButtonBase.xml @@ -31,7 +31,7 @@ To have the derived button control display an image, set the property or the and properties. The image can be aligned on the button control by setting the property. Likewise, to align the displayed on the button control, set the property. - The property determines the style and appearance of the control. If the property is set to , the user's operating system determines the appearance of the control. + The property determines the style and appearance of the control. If the property is set to , the user's operating system determines the appearance of the control. ]]> diff --git a/xml/System.Windows.Forms/CheckBox.xml b/xml/System.Windows.Forms/CheckBox.xml index b004249ddccaf..e0411b880f603 100644 --- a/xml/System.Windows.Forms/CheckBox.xml +++ b/xml/System.Windows.Forms/CheckBox.xml @@ -47,10 +47,10 @@ > [!NOTE] > If the property is set to `true`, the property will return `true` for either a checked or indeterminate state. - The property determines the style and appearance of the control. If the property is set to , the user's operating system determines the appearance of the control. + The property determines the style and appearance of the control. If the property is set to , the user's operating system determines the appearance of the control. > [!NOTE] -> When the property is set to , the property is ignored and the control is displayed using the or alignment. If the property is set to one of the right alignments, the control is displayed using the alignment; otherwise, it is displayed using the alignment. +> When the property is set to , the property is ignored and the control is displayed using the or alignment. If the property is set to one of the right alignments, the control is displayed using the alignment; otherwise, it is displayed using the alignment. The following describes an indeterminate state: You have a that determines if the selected text in a is bold. When you select text you can click the to bold the selection. Likewise, when you select some text, the displays whether the selected text is bold. If your selected text contains text that is bold and normal, the will have an indeterminate state. @@ -572,7 +572,7 @@ and style bits are set to `false` for the control, and the event is not raised. + By default, the and style bits are set to `false` for the control, and the event is not raised. This event is not relevant to this class. diff --git a/xml/System.Windows.Forms/CheckedListBox.xml b/xml/System.Windows.Forms/CheckedListBox.xml index 953616b59cbfc..a74bc455b88cd 100644 --- a/xml/System.Windows.Forms/CheckedListBox.xml +++ b/xml/System.Windows.Forms/CheckedListBox.xml @@ -536,7 +536,7 @@ . The event is raised only when the property is set to or . You can use this event to perform the tasks needed to draw items in the . If you have a variable-sized item (that is, is set to ), the event is raised before the item is drawn. You can create an event handler for the event to specify the size for the item that you are going to draw in your event handler for the event. + This event is used by an owner-drawn . The event is raised only when the property is set to or . You can use this event to perform the tasks needed to draw items in the . If you have a variable-sized item (that is, is set to ), the event is raised before the item is drawn. You can create an event handler for the event to specify the size for the item that you are going to draw in your event handler for the event. This event is not relevant to this class. @@ -1067,7 +1067,7 @@ property is not set to , the method switches the check state of the item currently selected. + If the spacebar is pressed and the property is not set to , the method switches the check state of the item currently selected. Raising an event invokes the event handler through a delegate. For more information, see [Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). diff --git a/xml/System.Windows.Forms/ColorDialog.xml b/xml/System.Windows.Forms/ColorDialog.xml index d7f80277167b8..7442db0a67967 100644 --- a/xml/System.Windows.Forms/ColorDialog.xml +++ b/xml/System.Windows.Forms/ColorDialog.xml @@ -280,9 +280,9 @@ ## Remarks > [!NOTE] -> This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. If your code can be called from partially trusted code, do not pass user input to class methods without validation. For important limitations on using the `LinkDemand` member, see [Demand vs. LinkDemand](http://msdn.microsoft.com/en-us/1ab877f2-70f4-4e0d-8116-943999dfe8f5). +> This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. If your code can be called from partially trusted code, do not pass user input to class methods without validation. For important limitations on using the `LinkDemand` member, see [Demand vs. LinkDemand](http://msdn.microsoft.com/en-us/1ab877f2-70f4-4e0d-8116-943999dfe8f5). - This property also uses the security attribute; to override this member, the derived class must have the `CustomPermission` permission. + This property also uses the security attribute; to override this member, the derived class must have the `CustomPermission` permission. ]]> diff --git a/xml/System.Windows.Forms/CommonDialog.xml b/xml/System.Windows.Forms/CommonDialog.xml index 274584018c0fc..458310d24a25f 100644 --- a/xml/System.Windows.Forms/CommonDialog.xml +++ b/xml/System.Windows.Forms/CommonDialog.xml @@ -118,9 +118,9 @@ By default, the hook procedure centers the dialog box on the screen in response to a WM_INITDIALOG message. > [!NOTE] -> This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. If your code can be called from partially trusted code, do not pass user input to class methods without validation. For important limitations on using the `LinkDemand` member, see [Demand vs. LinkDemand](http://msdn.microsoft.com/en-us/1ab877f2-70f4-4e0d-8116-943999dfe8f5). +> This method uses to prevent it from being called from untrusted code; only the immediate caller is required to have permission. If your code can be called from partially trusted code, do not pass user input to class methods without validation. For important limitations on using the `LinkDemand` member, see [Demand vs. LinkDemand](http://msdn.microsoft.com/en-us/1ab877f2-70f4-4e0d-8116-943999dfe8f5). - This property also uses the security attribute; to override this member, the derived class must have the `CustomPermission` permission. + This property also uses the security attribute; to override this member, the derived class must have the `CustomPermission` permission. diff --git a/xml/System.Windows.Forms/Control.xml b/xml/System.Windows.Forms/Control.xml index b7c3631d4b709..9e02b1f9a4090 100644 --- a/xml/System.Windows.Forms/Control.xml +++ b/xml/System.Windows.Forms/Control.xml @@ -1998,7 +1998,7 @@ ## Examples - The following code example resizes the specified control so the control will accommodate its formatted text. The formatted text is the property with the control's assigned applied to the text. The `AutoSizeControl` method in this example also has a `textPadding` parameter that represents the padding to apply to all edges of the control. To make the padding appear equal, align the text with the value, if your control supports it. + The following code example resizes the specified control so the control will accommodate its formatted text. The formatted text is the property with the control's assigned applied to the text. The `AutoSizeControl` method in this example also has a `textPadding` parameter that represents the padding to apply to all edges of the control. To make the padding appear equal, align the text with the value, if your control supports it. [!code-cpp[Windows.Forms.Control Member5#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Windows.Forms.Control Member5/CPP/controlmembers5.cpp#1)] [!code-csharp[Windows.Forms.Control Member5#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Windows.Forms.Control Member5/CS/controlmembers5.cs#1)] @@ -2992,7 +2992,7 @@ ## Remarks An Input Method Editor (IME) is a program that enables users to enter complex characters and symbols, such as Japanese Kanji characters, by using a standard keyboard. - As implemented in the class, this property always returns the value. The value specifies that the IME mode is inherited from the parent control. + As implemented in the class, this property always returns the value. The value specifies that the IME mode is inherited from the parent control. @@ -3358,7 +3358,7 @@ property to define how a control is automatically resized as its parent control is resized. For example, setting to causes the control to align itself with the left edges of its parent control and to resize as the parent control is resized. Controls are docked in their Z-order, which is the visual layering of controls on a form along the form's Z-axis (depth). + Use the property to define how a control is automatically resized as its parent control is resized. For example, setting to causes the control to align itself with the left edges of its parent control and to resize as the parent control is resized. Controls are docked in their Z-order, which is the visual layering of controls on a form along the form's Z-axis (depth). A control can be docked to one edge of its parent container or can be docked to all edges and fill the parent container. @@ -5498,12 +5498,12 @@ MyControl.Font = New Font(MyControl.Font, _ property is typically set to for a control that is intended to only enter numeric values. The property value is set to for the class. + An IME is a program that enables users to enter complex characters and symbols, such as Japanese Kanji characters, using a standard keyboard. The property is typically set to for a control that is intended to only enter numeric values. The property value is set to for the class. Most classes that do not directly support Input Method Editors, or allow direct input from an IME, will set the value of this property to . > [!IMPORTANT] -> The user can interactively change the unless it has been programmatically set to . In this case, the user will not be able to use the IME. +> The user can interactively change the unless it has been programmatically set to . In this case, the user will not be able to use the IME. > > The property is ignored on Windows 8 when the global input mode is in effect. For more info, see[Switch Text Input Changed from Per-Thread to Per-User](http://go.microsoft.com/fwlink/?LinkID=256509). @@ -12909,7 +12909,7 @@ if (CanSelect && IsMnemonic(charCode, MyControl.Text) { property value is equivalent to the return value of the method when passing in the value as a parameter. + The property value is equivalent to the return value of the method when passing in the value as a parameter. ]]> @@ -13069,12 +13069,12 @@ if (CanSelect && IsMnemonic(charCode, MyControl.Text) { ## Remarks The property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a will have the same as its parent by default. For more information about ambient properties, see the class or the class overview. - The property is used for international applications where the language is written from right to left, such as Hebrew or Arabic. When this property is set to , control elements that include text are displayed from right to left. + The property is used for international applications where the language is written from right to left, such as Hebrew or Arabic. When this property is set to , control elements that include text are displayed from right to left. > [!NOTE] > If the value of the property is changed at run time, only raw text without formatting is preserved. - The following are a few examples of how control elements are affected by the property value of : + The following are a few examples of how control elements are affected by the property value of : - Vertical scroll bars are displayed on the left side rather than right side of scrollable controls (for example, , , multiline , and ). diff --git a/xml/System.Windows.Forms/ControlPaint.xml b/xml/System.Windows.Forms/ControlPaint.xml index 4646aa8175599..cc6564178ddb6 100644 --- a/xml/System.Windows.Forms/ControlPaint.xml +++ b/xml/System.Windows.Forms/ControlPaint.xml @@ -349,7 +349,7 @@ style is used by default to draw the border. + The style is used by default to draw the border. @@ -468,7 +468,7 @@ style is used by default to draw the border. + The style is used by default to draw the border. diff --git a/xml/System.Windows.Forms/DataGridView.xml b/xml/System.Windows.Forms/DataGridView.xml index bfec3565adf52..223d2b77dc07a 100644 --- a/xml/System.Windows.Forms/DataGridView.xml +++ b/xml/System.Windows.Forms/DataGridView.xml @@ -4555,8 +4555,8 @@ ||The value of the property.| ||The value of the property.| ||The value of the property.| -||| -||| +||| +||| These values automatically override the values set through the property. To force column headers to inherit the values, you must set the values in the object to the default values indicated for the class. @@ -6584,7 +6584,7 @@ value. This is typically more efficient than using the property. + This method is useful to determine the number of cells in a particular state. To retrieve the number of selected cells, for example, use this method with the value. This is typically more efficient than using the property. @@ -7360,11 +7360,11 @@ property is set to `true`, multiple elements (cells, rows, or columns) can be selected in the control. To select multiple elements, the user can hold down the CTRL key while clicking the elements to select. Consecutive elements can be selected by clicking the first element to select and then, while holding down the SHIFT key, clicking the last element to select. The selection scope is based on the property. For example, if is set to , the user can select multiple columns. + When the property is set to `true`, multiple elements (cells, rows, or columns) can be selected in the control. To select multiple elements, the user can hold down the CTRL key while clicking the elements to select. Consecutive elements can be selected by clicking the first element to select and then, while holding down the SHIFT key, clicking the last element to select. The selection scope is based on the property. For example, if is set to , the user can select multiple columns. You can use the property to allow a user to select multiple elements in the control and perform an operation on all the selected elements. For example, the user could select multiple cells and then right-click a selected cell to display a shortcut menu that displays a set of tasks to perform on the selected cells. - To determine which cells, rows, or columns are selected in the control, you can access the , , or property. To determine the number of selected cells, call the method with an argument value of . Use the method to retrieve the number of selected rows and the method to retrieve the number of columns. These methods are more efficient than accessing the collections directly when working with large amounts of data. For more information, see [Best Practices for Scaling the Windows Forms DataGridView Control](~/docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md). + To determine which cells, rows, or columns are selected in the control, you can access the , , or property. To determine the number of selected cells, call the method with an argument value of . Use the method to retrieve the number of selected rows and the method to retrieve the number of columns. These methods are more efficient than accessing the collections directly when working with large amounts of data. For more information, see [Best Practices for Scaling the Windows Forms DataGridView Control](~/docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md). @@ -13972,8 +13972,8 @@ ||The value of the property.| ||The value of the property.| ||The value of the property.| -||| -||| +||| +||| These values automatically override the values set through the property. To force row headers to inherit the values, you must set the values in the object to the default values indicated for the class. @@ -15105,7 +15105,7 @@ if (rowToDelete > -1) property must be set to or for the property to be populated with selected columns. + The property must be set to or for the property to be populated with selected columns. This property contains a read-only snapshot of the selection at the time it is referenced. If you hold onto a copy of this collection, it may differ from the actual, subsequent state in which the user may have changed the selection. Therefore, you should not operate on a copy of the collection. @@ -15596,7 +15596,7 @@ if (rowToDelete > -1) class. In order to implement a highly customized sorting operation, you can write an event handler for the event and call this method with an instance of a class that implements the interface as a parameter. In this case, you will typically set the property to to disable automatic sorting and to leave room for a sorting glyph. When sorting by columns set to programmatic sort mode, you must display the sorting glyph yourself by setting the property. + This method allows advanced customization of the sorting feature of the class. In order to implement a highly customized sorting operation, you can write an event handler for the event and call this method with an instance of a class that implements the interface as a parameter. In this case, you will typically set the property to to disable automatic sorting and to leave room for a sorting glyph. When sorting by columns set to programmatic sort mode, you must display the sorting glyph yourself by setting the property. This method works only when the property is not set. When you bind the control to an external data source, you must use the sorting operations provided by that data source. When you provide your own data source by implementing virtual mode, you must also handle the sorting operations yourself. @@ -15648,7 +15648,7 @@ if (rowToDelete > -1) ## Remarks This method sorts the contents of the by comparing values in the specified column. By default, the sort operation will use the method to compare pairs of cells in the column using the property. - For columns with the property set to , the and properties are set automatically and the appropriate sorting glyph is displayed. For columns with the property set to , you must display the sorting glyph yourself through the property. + For columns with the property set to , the and properties are set automatically and the appropriate sorting glyph is displayed. For columns with the property set to , you must display the sorting glyph yourself through the property. You can customize the sorting operation used by this method by handling the event. This event occurs only when the property has not been set. @@ -15789,9 +15789,9 @@ if (rowToDelete > -1) ## Remarks If the is not sorted, this property will return `null`. - When the column indicated by this property has a property value of , it will display a sorting glyph based on the value of the property. + When the column indicated by this property has a property value of , it will display a sorting glyph based on the value of the property. - When the column has a property value of , you must display the sorting glyph yourself through the property. + When the column has a property value of , you must display the sorting glyph yourself through the property. > [!NOTE] > The value of this property is not meaningful when you sort the control using custom sorting. For more information about custom sorting, see the method and the event. diff --git a/xml/System.Windows.Forms/DataGridViewButtonColumn.xml b/xml/System.Windows.Forms/DataGridViewButtonColumn.xml index c6381f8f75e74..c2e6927887e8b 100644 --- a/xml/System.Windows.Forms/DataGridViewButtonColumn.xml +++ b/xml/System.Windows.Forms/DataGridViewButtonColumn.xml @@ -68,7 +68,7 @@ |Property|Value| |--------------|-----------| ||A new .| -|The property of the object returned by the property.|| +|The property of the object returned by the property.|| ]]> diff --git a/xml/System.Windows.Forms/DataGridViewCell.xml b/xml/System.Windows.Forms/DataGridViewCell.xml index f8017ba7d69b9..78438d5912292 100644 --- a/xml/System.Windows.Forms/DataGridViewCell.xml +++ b/xml/System.Windows.Forms/DataGridViewCell.xml @@ -144,7 +144,7 @@ ## Remarks The control internally calls the method to determine the appearance of the cell borders. The control typically uses the value of the property for the `dataGridViewAdvancedBorderStyleInput` parameter. - The value is not supported as an input style for cells. + The value is not supported as an input style for cells. @@ -1132,7 +1132,7 @@ . + The size of the cell's contents is computed dynamically when this method is called. The base class implementation always returns . ]]> @@ -1168,7 +1168,7 @@ . + The size of the cell's contents is computed dynamically when this method is called. The base class implementation always returns . This method is called internally when the property is read. @@ -1242,7 +1242,7 @@ . + The size of the cell's error icon area is computed dynamically when this method is called. The base class implementation always returns . This method is called internally when the property is read. @@ -3032,7 +3032,7 @@ , the method does nothing. + The `errorText` parameter signals the existence of an error. If `errorText` is `null` or , the method does nothing. ]]> diff --git a/xml/System.Windows.Forms/DataGridViewCheckBoxCell.xml b/xml/System.Windows.Forms/DataGridViewCheckBoxCell.xml index 87688b44d2ed6..348f621a72e74 100644 --- a/xml/System.Windows.Forms/DataGridViewCheckBoxCell.xml +++ b/xml/System.Windows.Forms/DataGridViewCheckBoxCell.xml @@ -907,7 +907,7 @@ value), this method updates the cell's user interface (UI) and raises the event on the owning . + When activated by the SPACEBAR key (equivalent to the value), this method updates the cell's user interface (UI) and raises the event on the owning . This method is similar to the method. It is called in the same circumstances in which a event is raised, but it does not actually raise the event. diff --git a/xml/System.Windows.Forms/DataGridViewCheckBoxColumn.xml b/xml/System.Windows.Forms/DataGridViewCheckBoxColumn.xml index b8774bee1fe7d..3c4931ec92d34 100644 --- a/xml/System.Windows.Forms/DataGridViewCheckBoxColumn.xml +++ b/xml/System.Windows.Forms/DataGridViewCheckBoxColumn.xml @@ -91,9 +91,9 @@ |--------------|-----------| ||A new with its property initialized to the `threeState` parameter value.| ||The value of the `threeState` parameter.| -||| -|The property of the object returned by the property.|| -|The property of the object returned by the property.| if `threeState` is `true`; otherwise, `false`.| +||| +|The property of the object returned by the property.|| +|The property of the object returned by the property.| if `threeState` is `true`; otherwise, `false`.| ]]> @@ -173,8 +173,8 @@ |`DataGridViewCellStyle` property|Default value| |--------------------------------------|-------------------| -||| -|| if the initial property value is `true`; otherwise, `false`.| +||| +|| if the initial property value is `true`; otherwise, `false`.| These values override the value specified in the property of the control, but may be overridden by other cell style properties. For more information, see [Cell Styles in the Windows Forms DataGridView Control](~/docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md). diff --git a/xml/System.Windows.Forms/DataGridViewColumnHeaderCell.xml b/xml/System.Windows.Forms/DataGridViewColumnHeaderCell.xml index 6710e8dfbb55b..fd3dc5d45dd69 100644 --- a/xml/System.Windows.Forms/DataGridViewColumnHeaderCell.xml +++ b/xml/System.Windows.Forms/DataGridViewColumnHeaderCell.xml @@ -380,7 +380,7 @@ property set to . You must set this property yourself when sorting by columns with the property set to . + This property is set automatically for columns with the property set to . You must set this property yourself when sorting by columns with the property set to . diff --git a/xml/System.Windows.Forms/DataGridViewHeaderCell.xml b/xml/System.Windows.Forms/DataGridViewHeaderCell.xml index 1d2e6afb54fca..852d84a47f56b 100644 --- a/xml/System.Windows.Forms/DataGridViewHeaderCell.xml +++ b/xml/System.Windows.Forms/DataGridViewHeaderCell.xml @@ -190,7 +190,7 @@ property is `true` if the cell belongs to a frozen row or column, or if the cell is the top-left header cell. A cell, row, or column is frozen when its property has a value of + The property is `true` if the cell belongs to a frozen row or column, or if the cell is the top-left header cell. A cell, row, or column is frozen when its property has a value of ]]> diff --git a/xml/System.Windows.Forms/DataGridViewImageColumn.xml b/xml/System.Windows.Forms/DataGridViewImageColumn.xml index 3e80ea0a44fa3..d13eae376c599 100644 --- a/xml/System.Windows.Forms/DataGridViewImageColumn.xml +++ b/xml/System.Windows.Forms/DataGridViewImageColumn.xml @@ -91,7 +91,7 @@ |--------------|-----------| ||A new with its property initialized to the `valuesAreIcons` parameter value.| ||The value of the `valuesAreIcons` parameter.| -|The property of the object returned by the property.|| +|The property of the object returned by the property.|| |The property of the object returned by the property.|A standard error graphic of type if `valuesAreIcons` is `true` and type if `valuesAreIcons` is `false`.| To ensure that the alpha channel of cell values is painted correctly, use this constructor with a `valuesAreIcons` parameter value of `true`. @@ -200,7 +200,7 @@ |`DataGridViewCellStyle` property|Default value| |--------------------------------------|-------------------| -||| +||| ||A standard error graphic of type if the initial property value is `true`; otherwise, a standard error graphic of type .| These values override the value specified in the property of the control, but may be overridden by other cell style properties. For more information, see [Cell Styles in the Windows Forms DataGridView Control](~/docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md). diff --git a/xml/System.Windows.Forms/DataGridViewRow.xml b/xml/System.Windows.Forms/DataGridViewRow.xml index 32280f0cd092e..4af07bd0dd5df 100644 --- a/xml/System.Windows.Forms/DataGridViewRow.xml +++ b/xml/System.Windows.Forms/DataGridViewRow.xml @@ -922,7 +922,7 @@ property is set to . + The header cell of a row is typically used to display a row label. Users can also click the row header to select the row if the property is set to . diff --git a/xml/System.Windows.Forms/DateTimePicker+DateTimePickerAccessibleObject.xml b/xml/System.Windows.Forms/DateTimePicker+DateTimePickerAccessibleObject.xml index 545006b509b50..5c3770e6d513d 100644 --- a/xml/System.Windows.Forms/DateTimePicker+DateTimePickerAccessibleObject.xml +++ b/xml/System.Windows.Forms/DateTimePicker+DateTimePickerAccessibleObject.xml @@ -108,7 +108,7 @@ will return if the and properties are `true.` + will return if the and properties are `true.` ]]> diff --git a/xml/System.Windows.Forms/DateTimePicker.xml b/xml/System.Windows.Forms/DateTimePicker.xml index 711d39d049515..1d2a5370a4fd6 100644 --- a/xml/System.Windows.Forms/DateTimePicker.xml +++ b/xml/System.Windows.Forms/DateTimePicker.xml @@ -49,11 +49,11 @@ The property contains the current date and time the control is set to. You can use the property or the appropriate member of to get the date and time value. For more information, see [How to: Set and Return Dates with the Windows Forms DateTimePicker Control](~/docs/framework/winforms/controls/how-to-set-and-return-dates-with-the-windows-forms-datetimepicker-control.md). You can limit the dates and times that can be selected by setting the and properties. - The values can be displayed in four formats, which are set by the property: , , , or . The default date is . + The values can be displayed in four formats, which are set by the property: , , , or . The default date is . If you want the to appear as a control for picking or editing times instead of dates, set the property to `true` and the property to . For more information, see [How to: Display Time with the DateTimePicker Control](~/docs/framework/winforms/controls/how-to-display-time-with-the-datetimepicker-control.md). - If the property is set to , you can create your own format style by setting the property and building a custom format string. The custom format string can be a combination of custom field characters and other literal characters. For example, you can display the date as "June 01, 2012 - Friday" by setting the property to "MMMM dd, yyyy - dddd". For more information, see [How to: Display a Date in a Custom Format with the Windows Forms DateTimePicker Control](~/docs/framework/winforms/controls/display-a-date-in-a-custom-format-with-wf-datetimepicker-control.md) and [Custom Date and Time Format Strings](~/docs/standard/base-types/custom-date-and-time-format-strings.md). + If the property is set to , you can create your own format style by setting the property and building a custom format string. The custom format string can be a combination of custom field characters and other literal characters. For example, you can display the date as "June 01, 2012 - Friday" by setting the property to "MMMM dd, yyyy - dddd". For more information, see [How to: Display a Date in a Custom Format with the Windows Forms DateTimePicker Control](~/docs/framework/winforms/controls/display-a-date-in-a-custom-format-with-wf-datetimepicker-control.md) and [Custom Date and Time Format Strings](~/docs/standard/base-types/custom-date-and-time-format-strings.md). > [!CAUTION] > When a is data-bound and the backing value is changed to `null`, the value of the will not be updated and the previous value will be retained. In situations where this behavior is not desirable (for example, when using a set of data-bound controls to page through a recordset) use the event of the class to set the to a value recognizable as a `null`. @@ -676,7 +676,7 @@ The format strings can be combined to format the date and time. For example, to display the date and time as 06/15/2001 12:00 PM, this property should be set to "MM'/'dd'/'yyyy hh':'mm tt". For more information, see [Custom Date and Time Format Strings](~/docs/standard/base-types/custom-date-and-time-format-strings.md). > [!NOTE] -> The property must be set to for this property to affect the formatting of the displayed date and time. +> The property must be set to for this property to affect the formatting of the displayed date and time. The following table lists all the valid format strings and their descriptions. @@ -1056,7 +1056,7 @@ This property determines the date/time format the date is displayed in. The date/time format is based on the user's regional settings in their operating system. > [!NOTE] -> The property must be set to for the property to affect the formatting of the displayed date and time. +> The property must be set to for the property to affect the formatting of the displayed date and time. To display only time in a , set the to , and the property to `true`. diff --git a/xml/System.Windows.Forms/DragAction.xml b/xml/System.Windows.Forms/DragAction.xml index 87b5f5432936e..e3b38e71f1e3d 100644 --- a/xml/System.Windows.Forms/DragAction.xml +++ b/xml/System.Windows.Forms/DragAction.xml @@ -29,7 +29,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. diff --git a/xml/System.Windows.Forms/DragEventArgs.xml b/xml/System.Windows.Forms/DragEventArgs.xml index b10cf0b3499c7..475b5a1066dbc 100644 --- a/xml/System.Windows.Forms/DragEventArgs.xml +++ b/xml/System.Windows.Forms/DragEventArgs.xml @@ -34,7 +34,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -114,7 +114,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -156,7 +156,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -189,7 +189,7 @@ to indicate the target will try to perform a copy operation. + By default, the effect applied determines the mouse cursor for the target of a drag-and-drop operation. This is useful to provide feedback to the user on the operation that will occur. For example, if you press the CTRL key when you drag a file from a source, specify to indicate the target will try to perform a copy operation. To use custom cursors for a drag operation, see . @@ -200,7 +200,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -255,7 +255,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -292,7 +292,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -329,7 +329,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. diff --git a/xml/System.Windows.Forms/DragEventHandler.xml b/xml/System.Windows.Forms/DragEventHandler.xml index 7c6f168940fdc..d4732ccd0ed4a 100644 --- a/xml/System.Windows.Forms/DragEventHandler.xml +++ b/xml/System.Windows.Forms/DragEventHandler.xml @@ -33,7 +33,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. diff --git a/xml/System.Windows.Forms/DrawItemEventArgs.xml b/xml/System.Windows.Forms/DrawItemEventArgs.xml index 6a12dbe3797b1..452c8cec6ec73 100644 --- a/xml/System.Windows.Forms/DrawItemEventArgs.xml +++ b/xml/System.Windows.Forms/DrawItemEventArgs.xml @@ -105,7 +105,7 @@ , the is set to . If the item's state is not , the property is set to . + If the item's state is , the is set to . If the item's state is not , the property is set to . @@ -273,7 +273,7 @@ , the is set to . If the item's state is not , the property is set to . + If the item's state is , the is set to . If the item's state is not , the property is set to . diff --git a/xml/System.Windows.Forms/DrawListViewItemEventArgs.xml b/xml/System.Windows.Forms/DrawListViewItemEventArgs.xml index 97d3cdf17ebaa..aad9981526efd 100644 --- a/xml/System.Windows.Forms/DrawListViewItemEventArgs.xml +++ b/xml/System.Windows.Forms/DrawListViewItemEventArgs.xml @@ -225,7 +225,7 @@ ## Remarks Use this method to draw the item text using the current values of the and properties. The text is drawn within the area specified by the property. You can also draw the text manually using the retrieved through the property. - The method is most useful when the property is set to a value other than . In the details view, this method draws the text for the , but does not draw the text for subitems. Therefore, in the details view, it is generally more convenient to draw all of the text in a handler for the event. + The method is most useful when the property is set to a value other than . In the details view, this method draws the text for the , but does not draw the text for subitems. Therefore, in the details view, it is generally more convenient to draw all of the text in a handler for the event. @@ -265,7 +265,7 @@ ## Remarks Use this method to draw the item text using the current values of the and properties. The values specified in the `flags` parameter let you provide formatting properties for the node label, such as text alignment. The text is drawn within the area specified by the property. You can also draw the text manually using the retrieved through the property. - The method is most useful when the property is set to a value other than . In the details view, this method draws the text for the , but does not draw the text for subitems. Therefore, in the details view, it is generally more convenient to draw all of the text in a handler for the event. + The method is most useful when the property is set to a value other than . In the details view, this method draws the text for the , but does not draw the text for subitems. Therefore, in the details view, it is generally more convenient to draw all of the text in a handler for the event. ]]> diff --git a/xml/System.Windows.Forms/DrawTreeNodeEventArgs.xml b/xml/System.Windows.Forms/DrawTreeNodeEventArgs.xml index 2174072cdf381..7eae450640348 100644 --- a/xml/System.Windows.Forms/DrawTreeNodeEventArgs.xml +++ b/xml/System.Windows.Forms/DrawTreeNodeEventArgs.xml @@ -18,11 +18,11 @@ ## Remarks Use the event to customize the appearance of nodes in a control using owner drawing. - The event is raised by a control when its property is set to or and a node is displayed or updated. The passed to the event handler contains information about the node to draw as well as providing methods to help you draw the node. + The event is raised by a control when its property is set to or and a node is displayed or updated. The passed to the event handler contains information about the node to draw as well as providing methods to help you draw the node. Use the or properties to retrieve information about the node to draw. Use the property to do the actual drawing within the area specified by the property. To make the operating system draw a node that does not need to be owner drawn, set the property to `true`. - When the property is set to , the area indicated by the property includes the label portion of the node only. When the property is set to , the area includes the entire node, including the area typically used for icons, checkboxes, plus and minus signs, and lines connecting the nodes. + When the property is set to , the area indicated by the property includes the label portion of the node only. When the property is set to , the area includes the entire node, including the area typically used for icons, checkboxes, plus and minus signs, and lines connecting the nodes. diff --git a/xml/System.Windows.Forms/FolderBrowserDialog.xml b/xml/System.Windows.Forms/FolderBrowserDialog.xml index bc2d991b36053..8509a8c0363ea 100644 --- a/xml/System.Windows.Forms/FolderBrowserDialog.xml +++ b/xml/System.Windows.Forms/FolderBrowserDialog.xml @@ -29,7 +29,7 @@ ## Remarks This class provides a way to prompt the user to browse, create, and eventually select a folder. Use this class when you only want to allow the user to select folders, not files. Browsing of the folders is done through a tree control. Only folders from the file system can be selected; virtual folders cannot. - Typically, after creating a new , you set the to the location from which to start browsing. Optionally, you can set the to an absolute path of a subfolder of that will initially be selected. You can also optionally set the property to provide additional instructions to the user. Finally, call the method to display the dialog box to the user. When the dialog box is closed and the dialog box result from is , the will be a string containing the path to the selected folder. + Typically, after creating a new , you set the to the location from which to start browsing. Optionally, you can set the to an absolute path of a subfolder of that will initially be selected. You can also optionally set the property to provide additional instructions to the user. Finally, call the method to display the dialog box to the user. When the dialog box is closed and the dialog box result from is , the will be a string containing the path to the selected folder. You can use the property to control if the user is able to create new folders with the **New Folder** button. @@ -66,9 +66,9 @@ ## Remarks The default constructor initializes properties to their default values. - When a new is created, the property is set to , the property is set to an empty string (""), the property is set to an empty string, and the property is set to `true`. + When a new is created, the property is set to , the property is set to an empty string (""), the property is set to an empty string, and the property is set to `true`. - Typically, after creating a new , you set the to the location from which to start browsing. Optionally, you can set the to the path of a subfolder of that will initially be selected. You can also optionally set the property to provide additional instructions to the user. Finally, call the method to display the dialog box to the user. When the dialog box is closed and the dialog result from is , the will be a string containing the path to the selected folder. + Typically, after creating a new , you set the to the location from which to start browsing. Optionally, you can set the to the path of a subfolder of that will initially be selected. You can also optionally set the property to provide additional instructions to the user. Finally, call the method to display the dialog box to the user. When the dialog box is closed and the dialog result from is , the will be a string containing the path to the selected folder. is a modal dialog box; therefore, when shown, it blocks the rest of the application until the user has chosen a folder. When a dialog box is displayed modally, no input (keyboard or mouse click) can occur except to objects on the dialog box. The program must hide or close the dialog box (usually in response to some user action) before input to the calling program can occur. diff --git a/xml/System.Windows.Forms/Form.xml b/xml/System.Windows.Forms/Form.xml index 1edb2916b54d1..4b52ae642ffac 100644 --- a/xml/System.Windows.Forms/Form.xml +++ b/xml/System.Windows.Forms/Form.xml @@ -1255,7 +1255,7 @@ ## Remarks An input method editor (IME) is a program that allows users to enter complex characters and symbols, such as Japanese Kanji characters, by using a standard keyboard. - As implemented in the class, this property always returns the value. The value of this property is assigned to the property. + As implemented in the class, this property always returns the value. The value of this property is assigned to the property. ]]> diff --git a/xml/System.Windows.Forms/GiveFeedbackEventArgs.xml b/xml/System.Windows.Forms/GiveFeedbackEventArgs.xml index b02733ab1bc1b..864236759b23b 100644 --- a/xml/System.Windows.Forms/GiveFeedbackEventArgs.xml +++ b/xml/System.Windows.Forms/GiveFeedbackEventArgs.xml @@ -32,7 +32,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -90,7 +90,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. @@ -133,7 +133,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. diff --git a/xml/System.Windows.Forms/GiveFeedbackEventHandler.xml b/xml/System.Windows.Forms/GiveFeedbackEventHandler.xml index eb359b223f951..ee106dc54682a 100644 --- a/xml/System.Windows.Forms/GiveFeedbackEventHandler.xml +++ b/xml/System.Windows.Forms/GiveFeedbackEventHandler.xml @@ -33,7 +33,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. diff --git a/xml/System.Windows.Forms/GridItem.xml b/xml/System.Windows.Forms/GridItem.xml index 4620fbcfa7dcf..ceddef175c670 100644 --- a/xml/System.Windows.Forms/GridItem.xml +++ b/xml/System.Windows.Forms/GridItem.xml @@ -122,7 +122,7 @@ of type , you must also ensure that the has a valid value. For a of type the property must be `null`. + For a of type , you must also ensure that the has a valid value. For a of type the property must be `null`. ]]> @@ -147,7 +147,7 @@ . You can get the name for a of type by retrieving the and checking its property. + This class gets the text that displays in the left column of the grid. The text retrieved can be different from the actual property name of the property represented by this . You can get the name for a of type by retrieving the and checking its property. ]]> @@ -172,7 +172,7 @@ for the is , this value will be `null`. + If the for the is , this value will be `null`. ]]> @@ -197,7 +197,7 @@ of type . + This property is only valid for a of type . You can use this property to retrieve information such as the property type of the grid item, the name of the grid item, or the type converter for the grid item. diff --git a/xml/System.Windows.Forms/Help.xml b/xml/System.Windows.Forms/Help.xml index dd19abbda0551..c246dbe3433e2 100644 --- a/xml/System.Windows.Forms/Help.xml +++ b/xml/System.Windows.Forms/Help.xml @@ -27,7 +27,7 @@ ## Examples The following code example displays a form that contains three buttons that can be used to interact with the Mspaint.chm Help file. The **Show Help Index** button displays the **Index** tab for the Help file. The **Show Help** button displays content in the Help file based on the value that is selected in the **Help Navigator** list. The **Show Keyword** button displays content in the Help file based on the keyword that is specified in the **Keyword** text box. - For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. + For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. The example uses the method to display the different Help tabs and Help topics, and the method to display the Help index. @@ -115,7 +115,7 @@ ## Examples The following code example displays a form with three buttons that can be used to interact with the mspaint.chm Help file. The **Show Help Index** button displays the **Index** tab for the Help file. The **Show Help** button displays content in the Help file based on the value that is selected in the **Help Navigator** list. The **Show Keyword** button displays content in the Help file based on the keyword that is specified in the **Keyword** text box. - For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. + For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. This example shows only the call to the method. See the class overview for the complete code example. @@ -211,7 +211,7 @@ ## Examples The following code example displays a form with three buttons that can be used to interact with the mspaint.chm Help file. The **Show Help Index** button displays the **Index** tab for the Help file. The **Show Help** button displays content in the Help file based on the value that is selected in the **Help Navigator** list. The **Show Keyword** button displays content in the Help file based on the keyword that is specified in the **Keyword** text box. - For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. + For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. This example shows only the call to the method. See the class overview for the complete code example. @@ -258,7 +258,7 @@ ## Examples The following code example displays a form with three buttons that can be used to interact with the mspaint.chm Help file. The **Show Help Index** button displays the **Index** tab for the Help file. The **Show Help** button displays content in the Help file based on the value that is selected in the **Help Navigator** list. The **Show Keyword** button displays content in the Help file based on the keyword that is specified in the **Keyword** text box. - For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. + For example, to show the Ovals Help page by the index value, select the value in the **Help Navigator** drop-down list, type **ovals** in the **Parameter** text box, and then click the **Show Help** button. To show the "To paint with a brush" Help topic by the keyword, type **mspaint.chm::/paint_brush.htm** in the **Keyword** text box, and then click the **Show Keyword** button. This example shows only the call to the method. See the class overview for the complete code example. diff --git a/xml/System.Windows.Forms/ListBox.xml b/xml/System.Windows.Forms/ListBox.xml index 9e1b9fb358f57..0f5389723c0d1 100644 --- a/xml/System.Windows.Forms/ListBox.xml +++ b/xml/System.Windows.Forms/ListBox.xml @@ -2184,7 +2184,7 @@ ## Remarks You can create an event handler for this event to determine when the selected index in the has been changed. This can be useful when you need to display information in other controls based on the current selection in the . You can use the event handler for this event to load the information in the other controls. - If the property is set to or , any change to the collection, including removing an item from the selection, will raise this event. + If the property is set to or , any change to the collection, including removing an item from the selection, will raise this event. For more information about handling events, see [Handling and Raising Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). diff --git a/xml/System.Windows.Forms/ListView+ListViewItemCollection.xml b/xml/System.Windows.Forms/ListView+ListViewItemCollection.xml index f7d3815309271..018264b342493 100644 --- a/xml/System.Windows.Forms/ListView+ListViewItemCollection.xml +++ b/xml/System.Windows.Forms/ListView+ListViewItemCollection.xml @@ -94,7 +94,7 @@ ## Remarks You can use this version of the method to create a new to add to a control. The text of the new added to the control is based on the `text` parameter. If you want to specify an image for the item, use the version of the method that accepts an image index as a parameter. If you have an existing that you want to add to the collection, use the version of the method that accepts a as its parameter. - If the property is set to a value other than or if the property is set, the list is sorted after the item is added. Otherwise, the item is inserted at the end of the list. If the list is not sorted, you can use the method to insert an item into the at a specific position. To add a set of items to the control in a single operation, use the method. If you want to use the method to add a large number of items to the control, use the and methods to prevent the from repainting until all items are added. When adding items to a , it is more efficient to sort the items first and then add new items. + If the property is set to a value other than or if the property is set, the list is sorted after the item is added. Otherwise, the item is inserted at the end of the list. If the list is not sorted, you can use the method to insert an item into the at a specific position. To add a set of items to the control in a single operation, use the method. If you want to use the method to add a large number of items to the control, use the and methods to prevent the from repainting until all items are added. When adding items to a , it is more efficient to sort the items first and then add new items. ]]> @@ -125,7 +125,7 @@ ## Remarks You can use this version of the method to add an existing to the collection. This version of the method is typically used to reuse items from other controls or if the was created manually before adding it to the collection. If you want to create a new instead of using an existing item, use the other versions of the method. - If the property is set to a value other than or if the property is set, the list is sorted after the item is added. Otherwise, the item is inserted at the end of the list. If the list is not sorted, you can use the method to insert an item into the at a specific position. To add a set of items to the control in a single operation, use the method. If you want to use the method to add a large number of items to the control, use the and methods to prevent the from repainting until all items are added. When adding items to a , it is more efficient to sort the items first and then add new items. + If the property is set to a value other than or if the property is set, the list is sorted after the item is added. Otherwise, the item is inserted at the end of the list. If the list is not sorted, you can use the method to insert an item into the at a specific position. To add a set of items to the control in a single operation, use the method. If you want to use the method to add a large number of items to the control, use the and methods to prevent the from repainting until all items are added. When adding items to a , it is more efficient to sort the items first and then add new items. This version of the method is also used to assign a to a . @@ -160,7 +160,7 @@ ## Remarks You can use this version of the method to create a new to add to the control. The text of the new added to the control is based on the `text` parameter. You can also specify an image for the item by passing the index of the assigned to the and properties to the `imageIndex` parameter. (Typically, the and properties use the same index positions to display related images.) If you do not want to specify an image index for the item, use the version of the method that accepts only a string as a parameter. If you have an existing that you want to add to the collection, use the version of the method that accepts a as its parameter. - If the property is set to a value other than or if the property is set, the list is sorted after the item is added. Otherwise, the item is inserted at the end of the list. If the list is not sorted, you can use the method to insert an item into the at a specific position. To add a set of items to the control in a single operation, use the method. If you want to use the method to add a large number of items to the control, use the and methods to prevent the from repainting until all items are added. When adding items to a , it is more efficient to sort the items first and then add new items. + If the property is set to a value other than or if the property is set, the list is sorted after the item is added. Otherwise, the item is inserted at the end of the list. If the list is not sorted, you can use the method to insert an item into the at a specific position. To add a set of items to the control in a single operation, use the method. If you want to use the method to add a large number of items to the control, use the and methods to prevent the from repainting until all items are added. When adding items to a , it is more efficient to sort the items first and then add new items. ]]> @@ -325,7 +325,7 @@ You can also use this method to assign multiple objects to a . - If the property is set to a value other than or if the property is set, the list is sorted after the items are added. Otherwise, the items are inserted at the end of the list. If the list is not sorted, you can use the method to insert items into the at specific positions. + If the property is set to a value other than or if the property is set, the list is sorted after the items are added. Otherwise, the items are inserted at the end of the list. If the list is not sorted, you can use the method to insert items into the at specific positions. @@ -652,7 +652,7 @@ This version of the method allows you to insert a new item at a specific position in the . The text specified in the `text` parameter is used to create a new that is then inserted into the at the specified location. > [!NOTE] -> If the property is set to a value other than or if the property is set, the list is sorted after the item is inserted. +> If the property is set to a value other than or if the property is set, the list is sorted after the item is inserted. To add an item without specifying a specific position in the collection, use the method. If you want to add an array of items to the collection, use the method. You can use this method if you want to insert a new item into an existing collection of items. @@ -689,7 +689,7 @@ This version of the method allows you to insert an existing at a specific position in the . > [!NOTE] -> If the property is set to a value other than or if the property is set, the list is sorted after the item is inserted. +> If the property is set to a value other than or if the property is set, the list is sorted after the item is inserted. To add an item without specifying a specific position in the collection to add the item, use the method. If you want to add an array of items to the collection, use the method. You can use this method if you want to insert a new item into an existing collection of items. @@ -728,7 +728,7 @@ This version of the method allows you to insert a new item at a specific position in the . The text specified in the `text` parameter is used to create a new that is then inserted into the at the specified location. > [!NOTE] -> If the property is set to a value other than or if the property is set, the list is sorted after the item is inserted. +> If the property is set to a value other than or if the property is set, the list is sorted after the item is inserted. You can also use this version of the method to specify an image for the item by passing the index of the assigned to the and properties to the `imageIndex` parameter. (Typically, the and properties use the same index positions to display related images.) If you do not want to specify an image index for the item, use the other version of the method that accepts a string as a parameter. diff --git a/xml/System.Windows.Forms/ListView.xml b/xml/System.Windows.Forms/ListView.xml index 0f7576382c2a4..75e8c73888c78 100644 --- a/xml/System.Windows.Forms/ListView.xml +++ b/xml/System.Windows.Forms/ListView.xml @@ -55,7 +55,7 @@ Windows XP and Windows Server 2003 provide three features that enhance the control when your application calls the method: tile view, grouping, and the insertion mark. - The tile view lets you balance graphical and textual information by displaying item and subitem text next to large icons. Set the property to to enable this behavior. + The tile view lets you balance graphical and textual information by displaying item and subitem text next to large icons. Set the property to to enable this behavior. The grouping feature lets you visually group items into related categories. Use the property to add objects to the control when you want to enable this feature. To temporarily disable the feature, set the property to `false`. @@ -1255,7 +1255,7 @@ control using owner drawing. It is raised only when the property is set to `true` and the property is set to . This event can occur for each column header in the control. For more information on owner drawing, see the property reference topic. + This event lets you customize the appearance of a control using owner drawing. It is raised only when the property is set to `true` and the property is set to . This event can occur for each column header in the control. For more information on owner drawing, see the property reference topic. For more information about handling events, see [Handling and Raising Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). @@ -1291,7 +1291,7 @@ ## Remarks This event lets you customize the appearance of a control using owner drawing. It is raised only when the property is set to `true`. For more information about owner drawing, see the property reference topic. - The event can occur for each item. When the property is set to , the and events also occur. In this case, you can handle the event to draw elements common to all items, such as the background, and handle the event to draw elements for individual subitems, such as text values. You can also draw all items in the control using only one of the two events, although this may be less convenient. To draw column headers in the details view, you must handle the event. + The event can occur for each item. When the property is set to , the and events also occur. In this case, you can handle the event to draw elements common to all items, such as the background, and handle the event to draw elements for individual subitems, such as text values. You can also draw all items in the control using only one of the two events, although this may be less convenient. To draw column headers in the details view, you must handle the event. > [!NOTE] > Because of a bug in the underlying Win32 control, the event occurs without accompanying events once per row in the details view when the mouse pointer moves over the row, causing anything painted in a event handler to be painted over by a custom background drawn in a event handler. See the example in the reference topic for a workaround that invalidates each row when the extra event occurs. An alternative workaround is to put all your custom drawing code in a event handler and paint the background for the entire item (including subitems) only when the value is 0. @@ -1328,7 +1328,7 @@ control using owner drawing. It is raised only when the property is set to `true` and the property is set to . For more information on owner drawing, see the property reference topic. + This event lets you customize the appearance of a control using owner drawing. It is raised only when the property is set to `true` and the property is set to . For more information on owner drawing, see the property reference topic. > [!NOTE] > Subitem information typically appears in the tile view as well as the details view, but in the tile view, it must be drawn in a handler for the event. @@ -1917,7 +1917,7 @@ grouping feature lets you create visual groups of logically related items. Each group consists of a textual header followed by a horizontal line and the items assigned to that group. You can align the header text to the left, right, or center of the control. Any groups assigned to a control appear whenever the property is set to a value other than . + The grouping feature lets you create visual groups of logically related items. Each group consists of a textual header followed by a horizontal line and the items assigned to that group. You can align the header text to the left, right, or center of the control. Any groups assigned to a control appear whenever the property is set to a value other than . groups help your users find the items they are looking for by separating the items into useful categories. You can create whatever categories you need. One typical approach is to group the items based on the way the list is sorted. For example, you can group the items by the initial letter of the item name when the list is sorted alphabetically or by subitems such as type or date when the list is sorted by clicking a column header in the details view. Windows Explorer uses this type of grouping. @@ -1976,7 +1976,7 @@ ## Remarks The property allows you to specify the type of column headers to display when the property of the control is set to and the control has objects specified in the . objects define the columns that are displayed in the control. Each column is used to display subitem information for each item in the . - The property allows you to specify whether the column headers are visible or, if they are visible, whether they will function as clickable buttons. If the property is set to , the column headers are not displayed, although the items and subitems of the control are still arranged in columns. If the property is set to , the column headers act like buttons that users can click to carry out an action, such as sorting the items in the control using the items in the clicked column as a key. You can implement this behavior in a handler for the event. If the property is set to , the column headers appear, but cannot be clicked. + The property allows you to specify whether the column headers are visible or, if they are visible, whether they will function as clickable buttons. If the property is set to , the column headers are not displayed, although the items and subitems of the control are still arranged in columns. If the property is set to , the column headers act like buttons that users can click to carry out an action, such as sorting the items in the control using the items in the clicked column as a key. You can implement this behavior in a handler for the event. If the property is set to , the column headers appear, but cannot be clicked. @@ -2202,7 +2202,7 @@ insertion mark feature lets you visually indicate the expected drop location in a drag-and-drop operation when an item is dragged to a new position. This feature works only when the property is set to `true` and when the control does not sort the items automatically. To prevent automatic sorting, the property must be set to and the property must be set to , , or . Additionally, the insertion mark feature may not be visible with the grouping feature because the grouping feature orders the items by group membership. + The insertion mark feature lets you visually indicate the expected drop location in a drag-and-drop operation when an item is dragged to a new position. This feature works only when the property is set to `true` and when the control does not sort the items automatically. To prevent automatic sorting, the property must be set to and the property must be set to , , or . Additionally, the insertion mark feature may not be visible with the grouping feature because the grouping feature orders the items by group membership. The class is typically used in a handler for the or event to update the position of the insertion mark as an item is dragged. It is also used in a handler for the or event to insert a dragged item at the correct location. For more information, see and [How to: Display an Insertion Mark in a Windows Forms ListView Control](~/docs/framework/winforms/controls/how-to-display-an-insertion-mark-in-a-windows-forms-listview-control.md). @@ -3740,7 +3740,7 @@ control is normally drawn by the operating system. In order to customize the appearance of items, subitems, and column headers, set the property to `true` and provide a handler for one or more of the following events: , , . This is called owner drawing. When the property is set to , all three events occur; otherwise, only the event occurs. + A control is normally drawn by the operating system. In order to customize the appearance of items, subitems, and column headers, set the property to `true` and provide a handler for one or more of the following events: , , . This is called owner drawing. When the property is set to , all three events occur; otherwise, only the event occurs. > [!NOTE] > Subitem information typically appears in the tile view as well as the details view, but in the tile view, it must be drawn in a handler for the event. The event does not occur for any subitems for which no object has been added to the collection. Note also that the first subitem of each object represents the parent item itself, and is displayed in the first column. @@ -4390,7 +4390,7 @@ ## Remarks Typically items are sorted using the property, which sorts items based on the item text. To customize the sort order, you must write a class that implements the interface and set the property to an object of that class. This is useful, for example, when you want to sort items by subitem text. For more information on performing manual sorting of items, see the example for the property. - If the property is set to a value other than or if the property is set, the list is sorted automatically when items are added. Items are not sorted automatically when the label text changes. + If the property is set to a value other than or if the property is set, the list is sorted automatically when items are added. Items are not sorted automatically when the label text changes. ]]> @@ -4424,7 +4424,7 @@ If you want to perform your own item sorting instead of using the property, use the property in combination with the method. - If the property is set to a value other than or if the property is set, the list is sorted automatically when items is added. Items are not sorted automatically when the label text changes. + If the property is set to a value other than or if the property is set, the list is sorted automatically when items is added. Items are not sorted automatically when the label text changes. @@ -4573,7 +4573,7 @@ property is set to . Setting this property is useful to prevent line-wrapping when subitem text is too long to be displayed on a single line. + This property controls the size of tiles when the property is set to . Setting this property is useful to prevent line-wrapping when subitem text is too long to be displayed on a single line. @@ -4767,7 +4767,7 @@ > [!NOTE] > If you are using multiple image lists, for small and large icon view, with a control, you should place small and large versions of the image at the same index location in their respective image lists. When switching between views, the index location of the image in one list is used to locate the image in the other list, regardless of the key value specified. - Most of the properties in the control affect how the different views behave or are displayed. Some properties that affect the views of the items are only useful when the property is set to a specific value, while others are useful in all views. For example, properties such as and are only useful when the property is set to , while the and properties are useful in all views. + Most of the properties in the control affect how the different views behave or are displayed. Some properties that affect the views of the items are only useful when the property is set to a specific value, while others are useful in all views. For example, properties such as and are only useful when the property is set to , while the and properties are useful in all views. The following table shows some of the members and the views they are valid in. @@ -4786,10 +4786,10 @@ | property|| | property|, , or | - You can use the property to provide different views of data in your application, or to lock a specific view to utilize that view's benefits. For example, the property is often set to because the details view provides a number of viewing options not available in the other views. + You can use the property to provide different views of data in your application, or to lock a specific view to utilize that view's benefits. For example, the property is often set to because the details view provides a number of viewing options not available in the other views. > [!NOTE] -> If your control does not have any column headers specified and you set the property to , the control will not display any items. If your control does not have any column headers specified and you set the property to , the control will not display any subitems. +> If your control does not have any column headers specified and you set the property to , the control will not display any items. If your control does not have any column headers specified and you set the property to , the control will not display any subitems. The tile view displays each item with a large icon on the left and textual information on the right. The textual information consists of the item label followed by subitems. By default, only the first subitem is displayed, which corresponds to the item label. To display additional subitems, you must add objects to the collection. Each subitem in the tile corresponds to a column header. To control which subitems are displayed and the order in which they are displayed, you must set the property for each item and the property for each header. You can then add, remove, and rearrange headers in the collection to achieve the desired result. diff --git a/xml/System.Windows.Forms/ListViewGroup.xml b/xml/System.Windows.Forms/ListViewGroup.xml index 9ebdd0c9d40fb..05553c418312e 100644 --- a/xml/System.Windows.Forms/ListViewGroup.xml +++ b/xml/System.Windows.Forms/ListViewGroup.xml @@ -34,7 +34,7 @@ grouping feature lets you create visual groups of logically related items. Each group consists of a text-based header followed by a horizontal line and the items assigned to that group. You can align the header text to the left, right, or center of the control. Any groups assigned to a control appear whenever the property is set to a value other than . + The grouping feature lets you create visual groups of logically related items. Each group consists of a text-based header followed by a horizontal line and the items assigned to that group. You can align the header text to the left, right, or center of the control. Any groups assigned to a control appear whenever the property is set to a value other than . groups help your users find the items they are looking for by separating the items into useful categories. You can create whatever categories you need. One typical way to group the items is by the way they are sorted. For example, you can group the items by the initial letter of the item name when they are sorted alphabetically, or by subitems such as type or date when the list is sorted by clicking a column header in the details view. Windows Explorer uses this type of grouping. diff --git a/xml/System.Windows.Forms/ListViewGroupCollection.xml b/xml/System.Windows.Forms/ListViewGroupCollection.xml index 360b9607a8dd5..b20b02d71d370 100644 --- a/xml/System.Windows.Forms/ListViewGroupCollection.xml +++ b/xml/System.Windows.Forms/ListViewGroupCollection.xml @@ -25,7 +25,7 @@ property to get the associated with a control. This collection contains the objects that represent the groups shown in the control when the property is set to a value other than . Any items that are not assigned to a group will appear in the default group, which has the header label "DefaultGroup{0}". The default group is not contained in the collection, and cannot be altered. It is primarily useful in debugging to ensure that all items have been properly added to groups. If there are no groups in the collection, the grouping feature is disabled. + Use the property to get the associated with a control. This collection contains the objects that represent the groups shown in the control when the property is set to a value other than . Any items that are not assigned to a group will appear in the default group, which has the header label "DefaultGroup{0}". The default group is not contained in the collection, and cannot be altered. It is primarily useful in debugging to ensure that all items have been properly added to groups. If there are no groups in the collection, the grouping feature is disabled. Use the method to add a single group to the collection. Use the method to add a group at a particular index within the collection. To remove a group, use the method. Use the method to remove the group at a particular index. diff --git a/xml/System.Windows.Forms/ListViewInsertionMark.xml b/xml/System.Windows.Forms/ListViewInsertionMark.xml index 1b5027e526f9a..057f369312a30 100644 --- a/xml/System.Windows.Forms/ListViewInsertionMark.xml +++ b/xml/System.Windows.Forms/ListViewInsertionMark.xml @@ -18,7 +18,7 @@ ## Remarks You can retrieve a from the property of a control and use it to visually indicate the expected drop location in a drag-and-drop operation when an item is dragged to a new position. - This feature works only when the property is set to `true` and when the control does not sort the items automatically. To prevent automatic sorting, the property must be set to and the property must be set to , , or . Additionally, the insertion mark feature cannot be used with the grouping feature because the grouping feature orders the items by group membership. + This feature works only when the property is set to `true` and when the control does not sort the items automatically. To prevent automatic sorting, the property must be set to and the property must be set to , , or . Additionally, the insertion mark feature cannot be used with the grouping feature because the grouping feature orders the items by group membership. The class is typically used in a handler for the or event to update the position of the insertion mark as an item is dragged. It is also used in a handler for the or event to insert a dragged item at the correct location. diff --git a/xml/System.Windows.Forms/PrintPreviewDialog.xml b/xml/System.Windows.Forms/PrintPreviewDialog.xml index 5c9f46b41ad28..02c81e697a9c3 100644 --- a/xml/System.Windows.Forms/PrintPreviewDialog.xml +++ b/xml/System.Windows.Forms/PrintPreviewDialog.xml @@ -1563,7 +1563,7 @@ ## Remarks This property is not relevant for this class. - The border style of the form determines how the outer edge of the form appears. In addition to changing the border display for a form, certain border styles prevent the form from being sized. For example, the border style changes the border of the form to that of a dialog box and prevents the form from being resized. The border style can also affect the size or availability of the caption bar section of a form. + The border style of the form determines how the outer edge of the form appears. In addition to changing the border display for a form, certain border styles prevent the form from being sized. For example, the border style changes the border of the form to that of a dialog box and prevents the form from being resized. The border style can also affect the size or availability of the caption bar section of a form. ]]> @@ -1951,7 +1951,7 @@ ## Remarks This property is not relevant for this class. - A maximize button enables users to enlarge a window to full-screen size. To display a maximize button, you must also set the form's property to either , , , or . + A maximize button enables users to enlarge a window to full-screen size. To display a maximize button, you must also set the form's property to either , , , or . A maximize button automatically becomes a restore button when a window is maximized. Minimizing or restoring a window automatically changes the restore button back to a maximize button. @@ -2100,10 +2100,10 @@ ## Remarks This property is not relevant for this class. - A minimize button enables users to minimize a window to an icon. To display a minimize button, you must also set the form's property to either , , , or . + A minimize button enables users to minimize a window to an icon. To display a minimize button, you must also set the form's property to either , , , or . > [!NOTE] -> Minimizing a form at run time generates a event. The property reflects the current state of the window. If you set the property to , the form is minimized independently of whatever settings are in effect for the and properties. +> Minimizing a form at run time generates a event. The property reflects the current state of the window. If you set the property to , the form is minimized independently of whatever settings are in effect for the and properties. ]]> @@ -2366,7 +2366,7 @@ , , , and key values will return `false`; otherwise, processing is passed to the base class's method. + The , , , and key values will return `false`; otherwise, processing is passed to the base class's method. ]]> @@ -3121,7 +3121,7 @@ property is always set to , regardless of its initial setting. This is reflected in the , , , and property settings. If a form is hidden after it has been shown, these properties reflect the previous state until the form is shown again, regardless of any changes made to the property. + Before a form is displayed, the property is always set to , regardless of its initial setting. This is reflected in the , , , and property settings. If a form is hidden after it has been shown, these properties reflect the previous state until the form is shown again, regardless of any changes made to the property. ]]> diff --git a/xml/System.Windows.Forms/PropertyGrid.xml b/xml/System.Windows.Forms/PropertyGrid.xml index 6aa2652c6804d..0c428b8831566 100644 --- a/xml/System.Windows.Forms/PropertyGrid.xml +++ b/xml/System.Windows.Forms/PropertyGrid.xml @@ -2095,7 +2095,7 @@ property, the appearance of the property sort buttons on the grid changes to reflect the current state of the property. Setting to causes the properties to be displayed in the order they were retrieved. + When you set the property, the appearance of the property sort buttons on the grid changes to reflect the current state of the property. Setting to causes the properties to be displayed in the order they were retrieved. Setting to both and is the same as setting to alone. The categorized view is always shown as alphabetical. diff --git a/xml/System.Windows.Forms/QueryContinueDragEventArgs.xml b/xml/System.Windows.Forms/QueryContinueDragEventArgs.xml index 1d9a62f8bc499..e67a5ad8376d7 100644 --- a/xml/System.Windows.Forms/QueryContinueDragEventArgs.xml +++ b/xml/System.Windows.Forms/QueryContinueDragEventArgs.xml @@ -23,7 +23,7 @@ ## Remarks The event occurs during a drag-and-drop operation and allows the drag source to determine whether the drag-and-drop operation should be canceled. A specifies whether and how the drag-and-drop operation should proceed, whether any modifier keys are pressed, and whether the user has pressed the ESC key. - By default, the event sets to if the ESC key was pressed and sets `Action` to if the left, middle, or right mouse button is pressed. + By default, the event sets to if the ESC key was pressed and sets `Action` to if the left, middle, or right mouse button is pressed. For information about the event model, see [Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). @@ -82,7 +82,7 @@ event sets to if the ESC key was pressed and sets `Action` to if the left, middle, or right mouse button is pressed. + By default, the event sets to if the ESC key was pressed and sets `Action` to if the left, middle, or right mouse button is pressed. @@ -117,7 +117,7 @@ event sets to if is true. + By default, the event sets to if is true. @@ -165,7 +165,7 @@ |16|The middle mouse button.| |32|The ALT key.| - By default, the event sets to if indicates that the left, middle, or right mouse button is pressed. + By default, the event sets to if indicates that the left, middle, or right mouse button is pressed. diff --git a/xml/System.Windows.Forms/QueryContinueDragEventHandler.xml b/xml/System.Windows.Forms/QueryContinueDragEventHandler.xml index 6f8a5ad480562..73d9fdfd45f57 100644 --- a/xml/System.Windows.Forms/QueryContinueDragEventHandler.xml +++ b/xml/System.Windows.Forms/QueryContinueDragEventHandler.xml @@ -33,7 +33,7 @@ The example also demonstrates using custom cursors for the drag-and-drop operation. The example assumes that two cursor files, `3dwarro.cur` and `3dwno.cur`, exist in the application directory, for the custom drag and no-drop cursors, respectively. The custom cursors will be used if the `UseCustomCursorsCheck` is checked. The custom cursors are set in the event handler. - The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. + The keyboard state is evaluated in the event handler for the right `ListBox`, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. The location in the `ListBox` where the drop would occur is also determined during the `DragOver` event. If the data to drop is not a `String`, then the is set to . Finally, the status of the drop is displayed in the `DropLocationLabel`. The data to drop for the right `ListBox` is determined in the event handler and the `String` value is added at the appropriate place in the `ListBox`. If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the event handler. diff --git a/xml/System.Windows.Forms/ScrollBar.xml b/xml/System.Windows.Forms/ScrollBar.xml index aa71c6e925feb..d0a2ed05a6c01 100644 --- a/xml/System.Windows.Forms/ScrollBar.xml +++ b/xml/System.Windows.Forms/ScrollBar.xml @@ -365,7 +365,7 @@ class, this property always returns the value. + As implemented in the class, this property always returns the value. ]]> diff --git a/xml/System.Windows.Forms/ScrollableControl.xml b/xml/System.Windows.Forms/ScrollableControl.xml index f94cc5bf160ae..8524cfbbb92b0 100644 --- a/xml/System.Windows.Forms/ScrollableControl.xml +++ b/xml/System.Windows.Forms/ScrollableControl.xml @@ -206,12 +206,12 @@ The auto-scroll margin is the distance between any child controls and the edges of the scrollable parent control. The size is added to the size of any child controls contained in the scrollable control to determine whether or not scroll bars are needed. The property is evaluated when the parent scrollable control is resized or the individual child controls are brought into view, and is used to determine if scroll bars must be displayed. Docked controls are excluded from the calculations that determine if scroll bars must be displayed. > [!NOTE] -> If a docked control's property is set to , the control fills the parent scrollable control and the docked control is ignored when using the to determine whether scroll bars are needed. +> If a docked control's property is set to , the control fills the parent scrollable control and the docked control is ignored when using the to determine whether scroll bars are needed. If the distance from the edge of a child control to the parent scrollable control is less than the value assigned to the property and the property is set to `true`, the appropriate scroll bar is displayed. > [!NOTE] -> We recommend, when docking controls within a scrollable control, that you add a child scrollable control, such as a , to contain any other controls that might require scrolling. You should add the child control to the scrollable control and its property set to and its property set to `true`. You should set the property of the parent scrollable control to `false`. +> We recommend, when docking controls within a scrollable control, that you add a child scrollable control, such as a , to contain any other controls that might require scrolling. You should add the child control to the scrollable control and its property set to and its property set to `true`. You should set the property of the parent scrollable control to `false`. diff --git a/xml/System.Windows.Forms/SplitContainer.xml b/xml/System.Windows.Forms/SplitContainer.xml index cd53420c54263..89b17f355c2f3 100644 --- a/xml/System.Windows.Forms/SplitContainer.xml +++ b/xml/System.Windows.Forms/SplitContainer.xml @@ -731,7 +731,7 @@ to any edge of its container, or you can dock a to all edges of the container so that the entirely fills the container. For example, set this property to to attach the left edge of the to the left edge of its container. Controls are docked in z-order. + You can dock a to any edge of its container, or you can dock a to all edges of the container so that the entirely fills the container. For example, set this property to to attach the left edge of the to the left edge of its container. Controls are docked in z-order. > [!NOTE] > The z-order corresponds to the depth dimension of the screen, and the x-order and y-order corresponds to the horizontal and vertical dimensions, respectively. Z-order defines which object appears in front of which, in cases where controls or windows can overlap or occupy the same space on the screen. A control or window at the top of the z-order appears on top of all other controls or windows and is referenced by an index of 0 in the property. A control or window at the bottom of the z-order appears underneath all other controls or windows and is referenced by an index of `(Controls.Count-1)` in the property. diff --git a/xml/System.Windows.Forms/StatusBar.xml b/xml/System.Windows.Forms/StatusBar.xml index 48fadcf376590..98a7397f41bd7 100644 --- a/xml/System.Windows.Forms/StatusBar.xml +++ b/xml/System.Windows.Forms/StatusBar.xml @@ -342,7 +342,7 @@ class, this property always returns the value. + As implemented in the class, this property always returns the value. ]]> diff --git a/xml/System.Windows.Forms/TextRenderer.xml b/xml/System.Windows.Forms/TextRenderer.xml index 0bcd0d7f662c6..586b5fa6b4537 100644 --- a/xml/System.Windows.Forms/TextRenderer.xml +++ b/xml/System.Windows.Forms/TextRenderer.xml @@ -135,7 +135,7 @@ , respectively; the method will draw the text in the font or color currently selected in the device context specified by `dc`. If `forecolor` is , the text will not be drawn. + If `font` or `forecolor` is `null` or , respectively; the method will draw the text in the font or color currently selected in the device context specified by `dc`. If `forecolor` is , the text will not be drawn. This method will result in text that is horizontally and vertically centered in the rectangle specified by the `bounds` parameter. To change how the text is drawn, use a version of that takes a parameter type. @@ -187,7 +187,7 @@ , respectively; the method will draw the text in the font or color currently selected in the device context specified by `dc`. If `forecolor` is , the text will not be drawn. + The `backColor` parameter is applied to the rectangular area containing the drawn text. If `font`, `backcolor` or `forecolor` is `null` or , respectively; the method will draw the text in the font or color currently selected in the device context specified by `dc`. If `forecolor` is , the text will not be drawn. You can manipulate how the text is drawn by using one of the overloads that takes a parameter. diff --git a/xml/System.Windows.Forms/ToolBar.xml b/xml/System.Windows.Forms/ToolBar.xml index 4472017e43bc1..8aeb8ccb90d5b 100644 --- a/xml/System.Windows.Forms/ToolBar.xml +++ b/xml/System.Windows.Forms/ToolBar.xml @@ -648,7 +648,7 @@ class, this property always returns the value. + As implemented in the class, this property always returns the value. ]]> diff --git a/xml/System.Windows.Forms/ToolBarButton.xml b/xml/System.Windows.Forms/ToolBarButton.xml index df82e691b88ff..46651d6398bfa 100644 --- a/xml/System.Windows.Forms/ToolBarButton.xml +++ b/xml/System.Windows.Forms/ToolBarButton.xml @@ -180,7 +180,7 @@ to be displayed when the drop-down button is clicked. This property is not used unless the property value is set to . + You can specify a to be displayed when the drop-down button is clicked. This property is not used unless the property value is set to . > [!NOTE] > Although the property is defined as a type, you must assign it a for it to display properly. If you are creating your own derived class you must assign that object to a and assign the to the property. diff --git a/xml/System.Windows.Forms/ToolStrip.xml b/xml/System.Windows.Forms/ToolStrip.xml index aab57eb14b15e..73e78c6e831e8 100644 --- a/xml/System.Windows.Forms/ToolStrip.xml +++ b/xml/System.Windows.Forms/ToolStrip.xml @@ -3546,7 +3546,7 @@ ## Remarks The `directed` and `forward` parameters are used by container-style controls. When the `directed` parameter is set to `true`, the `forward` parameter is evaluated to determine which control to select. When `forward` is set to `true`, the next control in the tab order is selected; when `false`, the previous control in the tab order is selected. - The method activates the control if the control's style bit is set to `true`, it is contained in another control, and all its parent controls are both visible and enabled. + The method activates the control if the control's style bit is set to `true`, it is contained in another control, and all its parent controls are both visible and enabled. ]]> diff --git a/xml/System.Windows.Forms/ToolStripItem.xml b/xml/System.Windows.Forms/ToolStripItem.xml index df142205b2b76..9d96e9a0eb3d4 100644 --- a/xml/System.Windows.Forms/ToolStripItem.xml +++ b/xml/System.Windows.Forms/ToolStripItem.xml @@ -323,7 +323,7 @@ property describes what kind of user interface element an object is. If the control's role cannot be determined, the property is set to . + The property describes what kind of user interface element an object is. If the control's role cannot be determined, the property is set to . For more information about properties of accessible objects, see "Content of Descriptive Properties" in the "Active Accessibility" section of the MSDN Library, at http://msdn.microsoft.com/library. diff --git a/xml/System.Windows.Forms/TrackBar.xml b/xml/System.Windows.Forms/TrackBar.xml index 493df41868e69..4e1d062544cfc 100644 --- a/xml/System.Windows.Forms/TrackBar.xml +++ b/xml/System.Windows.Forms/TrackBar.xml @@ -1084,7 +1084,7 @@ property is set to , the scroll box moves from left to right as the increases. When the property is set to , the scroll box moves from bottom to top as the increases. + When the property is set to , the scroll box moves from left to right as the increases. When the property is set to , the scroll box moves from bottom to top as the increases. diff --git a/xml/System.Windows.Forms/TreeNode.xml b/xml/System.Windows.Forms/TreeNode.xml index 847c8ada45bf9..c3121aa32d151 100644 --- a/xml/System.Windows.Forms/TreeNode.xml +++ b/xml/System.Windows.Forms/TreeNode.xml @@ -269,7 +269,7 @@ property is set to , the used is the property value of the control that the tree node is assigned to. + If the property is set to , the used is the property value of the control that the tree node is assigned to. diff --git a/xml/System.Windows.Forms/TreeView.xml b/xml/System.Windows.Forms/TreeView.xml index b9996f5b6ea1c..73ae5effde05b 100644 --- a/xml/System.Windows.Forms/TreeView.xml +++ b/xml/System.Windows.Forms/TreeView.xml @@ -60,9 +60,9 @@ Tree nodes can optionally display check boxes. To display the check boxes, set the property of the to `true`. The property is set to `true` for tree nodes that are in a checked state. > [!NOTE] -> Setting the property from within the or event causes the event to be raised multiple times and can result in unexpected behavior. For example, you might set the property in the event handler when you are recursively updating the child nodes so that the user does not have to expand and check each one individually. To prevent the event from being raised multiple times, add logic to your event handler that only executes your recursive code if the property of the is not set to . For an example of how to do this, see the Example section of the or events. +> Setting the property from within the or event causes the event to be raised multiple times and can result in unexpected behavior. For example, you might set the property in the event handler when you are recursively updating the child nodes so that the user does not have to expand and check each one individually. To prevent the event from being raised multiple times, add logic to your event handler that only executes your recursive code if the property of the is not set to . For an example of how to do this, see the Example section of the or events. - You can change the appearance of the control by setting some of its display and style properties. Setting to `true` displays a plus-sign or minus-sign button next to each that can be expanded or collapsed, respectively. Setting the property to `true` causes the to display lines that join all the root tree nodes together. You can display lines that connect child tree nodes to their root node by setting the property to `true`. Setting the property to `true` changes the appearance of the tree node labels as the mouse pointer passes over them. When hot-tracked, the tree node labels take on the appearance of a hyperlink. You can also completely customize the appearance of the control. To do this, set the property to a value other than and handle the event. + You can change the appearance of the control by setting some of its display and style properties. Setting to `true` displays a plus-sign or minus-sign button next to each that can be expanded or collapsed, respectively. Setting the property to `true` causes the to display lines that join all the root tree nodes together. You can display lines that connect child tree nodes to their root node by setting the property to `true`. Setting the property to `true` changes the appearance of the tree node labels as the mouse pointer passes over them. When hot-tracked, the tree node labels take on the appearance of a hyperlink. You can also completely customize the appearance of the control. To do this, set the property to a value other than and handle the event. > [!NOTE] > When setting the , , , and properties at run time, the handle is recreated (see ) to update the control's appearance. This causes all tree nodes to be collapsed, except for the selected . @@ -131,7 +131,7 @@ property from within a or event handler causes the event to be raised multiple times and can result in unexpected behavior. To prevent the event from being raised multiple times, add logic to your event handler that only executes your recursive code if the property of the is not set to . + Setting the property from within a or event handler causes the event to be raised multiple times and can result in unexpected behavior. To prevent the event from being raised multiple times, add logic to your event handler that only executes your recursive code if the property of the is not set to . For more information about handling events, see [Handling and Raising Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). @@ -437,7 +437,7 @@ ## Remarks > [!NOTE] -> Setting the property from within the or event causes the event to be raised multiple times and can result in unexpected behavior. For example, you might set the property in the event handler when you are recursively updating the child nodes, so that the user does not have to expand and check each one individually. To prevent the event from being raised multiple times, add logic to your event handler that only executes your recursive code if the property of the is not set to . +> Setting the property from within the or event causes the event to be raised multiple times and can result in unexpected behavior. For example, you might set the property in the event handler when you are recursively updating the child nodes, so that the user does not have to expand and check each one individually. To prevent the event from being raised multiple times, add logic to your event handler that only executes your recursive code if the property of the is not set to . For more information about how to handle events, see [Handling and Raising Events](http://msdn.microsoft.com/library/b6f65241-e0ad-4590-a99f-200ce741bb1f). @@ -912,7 +912,7 @@ are typically drawn by the operating system. The property lets you customize the appearance of the nodes. To do this, set to or and provide a handler for the event. This is called owner drawing. + The nodes of a are typically drawn by the operating system. The property lets you customize the appearance of the nodes. To do this, set to or and provide a handler for the event. This is called owner drawing. diff --git a/xml/System.Windows.Forms/UserControl.xml b/xml/System.Windows.Forms/UserControl.xml index c4d0f2f8284e4..b3f53f0917762 100644 --- a/xml/System.Windows.Forms/UserControl.xml +++ b/xml/System.Windows.Forms/UserControl.xml @@ -84,7 +84,7 @@ ## Examples - The following code example creates an instance of the derived class, `MyCustomerInfoUserControl`, which was created in the example section of the class overview. The user control is added to a control and has its property set to . The is then added to a . + The following code example creates an instance of the derived class, `MyCustomerInfoUserControl`, which was created in the example section of the class overview. The user control is added to a control and has its property set to . The is then added to a . [!code-cpp[Classic UserControl.UserControl Example#1](~/samples/snippets/cpp/VS_Snippets_Winforms/Classic UserControl.UserControl Example/CPP/source.cpp#1)] [!code-csharp[Classic UserControl.UserControl Example#1](~/samples/snippets/csharp/VS_Snippets_Winforms/Classic UserControl.UserControl Example/CS/source.cs#1)] diff --git a/xml/System.Windows.Forms/WebBrowser.xml b/xml/System.Windows.Forms/WebBrowser.xml index 7ba5c9e9e1ad9..40f071980a864 100644 --- a/xml/System.Windows.Forms/WebBrowser.xml +++ b/xml/System.Windows.Forms/WebBrowser.xml @@ -923,7 +923,7 @@ event to implement an indicator in the user interface of your application similar to the lock icon in Internet Explorer. When the current document is not encrypted, the value of this property is . When the control displays a Web page containing multiple frames with content of different encryption levels, the value of this property is . When the encryption level is unknown, the value of this property is . Other values indicate the type of encryption present. To mimic the behavior of the lock icon in Internet Explorer, display the encryption type in a ToolTip that appears when the mouse pointer hovers over the indicator. + You can use this property with the event to implement an indicator in the user interface of your application similar to the lock icon in Internet Explorer. When the current document is not encrypted, the value of this property is . When the control displays a Web page containing multiple frames with content of different encryption levels, the value of this property is . When the encryption level is unknown, the value of this property is . Other values indicate the type of encryption present. To mimic the behavior of the lock icon in Internet Explorer, display the encryption type in a ToolTip that appears when the mouse pointer hovers over the indicator. ]]> @@ -1222,7 +1222,7 @@ method to halt the current navigation before the new document is fully loaded. Use the property to determine the exact navigation state of the control. The property value is false when the property value is . + If this property is `true`, you can use the method to halt the current navigation before the new document is fully loaded. Use the property to determine the exact navigation state of the control. The property value is false when the property value is . ]]> @@ -2376,7 +2376,7 @@ ## Remarks Use the property to retrieve the specific state of the control when you need more information than the property provides. - When the control does not contain a document, the value of this property is . Other values indicate the control state when it navigates to a new document. These values include , , , and . + When the control does not contain a document, the value of this property is . Other values indicate the control state when it navigates to a new document. These values include , , , and . ]]> @@ -2447,7 +2447,7 @@ control stores recently visited Web pages in a cache on the local hard disk. Each page can specify an expiration date indicating how long it will remain in the cache. When the control navigates to a page, it saves time by displaying a cached version, if one is available, rather than downloading the page again. The method forces the control to reload the current page. The type of reload depends on the value specified. If you call the method with the value, the latest version of the document is downloaded. If you use the value, the latest version is downloaded only if the current document has expired. If you use the value, the server sends a copy of the document stored in its own cache. + The control stores recently visited Web pages in a cache on the local hard disk. Each page can specify an expiration date indicating how long it will remain in the cache. When the control navigates to a page, it saves time by displaying a cached version, if one is available, rather than downloading the page again. The method forces the control to reload the current page. The type of reload depends on the value specified. If you call the method with the value, the latest version of the document is downloaded. If you use the value, the latest version is downloaded only if the current document has expired. If you use the value, the server sends a copy of the document stored in its own cache. > [!NOTE] > A document refresh simply reloads the current page, so the , , and events do not occur when you call the method. diff --git a/xml/System.Windows.Ink/DrawingAttributes.xml b/xml/System.Windows.Ink/DrawingAttributes.xml index 8e4e927ca2d96..3853d2d2e8279 100644 --- a/xml/System.Windows.Ink/DrawingAttributes.xml +++ b/xml/System.Windows.Ink/DrawingAttributes.xml @@ -67,7 +67,7 @@ ||2 device independent pixels (DIP)| ||`false`| ||`false`| -||| +||| ||| ||2 DIP| diff --git a/xml/System.Windows.Input/KeyEventArgs.xml b/xml/System.Windows.Input/KeyEventArgs.xml index 634cc85c11f03..bd44834cef933 100644 --- a/xml/System.Windows.Input/KeyEventArgs.xml +++ b/xml/System.Windows.Input/KeyEventArgs.xml @@ -100,7 +100,7 @@ returns , you can use this property to get the actual key that was entered. + A dead key, when pressed, produces no visible character but indicates that the key is to be combined with the character produced by the next letter key pressed. If returns , you can use this property to get the actual key that was entered. ]]> diff --git a/xml/System.Windows.Markup/DateTimeValueSerializer.xml b/xml/System.Windows.Markup/DateTimeValueSerializer.xml index 33ec7050960d3..c6b91d2fd2698 100644 --- a/xml/System.Windows.Markup/DateTimeValueSerializer.xml +++ b/xml/System.Windows.Markup/DateTimeValueSerializer.xml @@ -135,7 +135,7 @@ . + An empty string returns . The current implementation uses internally, and also uses the following : `DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite`. diff --git a/xml/System.Windows.Markup/DesignerSerializationOptionsAttribute.xml b/xml/System.Windows.Markup/DesignerSerializationOptionsAttribute.xml index df50eda74d291..9095080593b1e 100644 --- a/xml/System.Windows.Markup/DesignerSerializationOptionsAttribute.xml +++ b/xml/System.Windows.Markup/DesignerSerializationOptionsAttribute.xml @@ -70,7 +70,7 @@ . + Currently the only possible value is . ]]> diff --git a/xml/System.Windows.Media.Animation/BeginStoryboard.xml b/xml/System.Windows.Media.Animation/BeginStoryboard.xml index a7237194c9f6b..05233def06e6b 100644 --- a/xml/System.Windows.Media.Animation/BeginStoryboard.xml +++ b/xml/System.Windows.Media.Animation/BeginStoryboard.xml @@ -79,7 +79,7 @@ ## Remarks ## Using the Compose HandoffBehavior - When you apply a , , or to a property by using , any objects previously associated with that property continue to consume system resources; the timing system does not remove these clocks automatically. + When you apply a , , or to a property by using , any objects previously associated with that property continue to consume system resources; the timing system does not remove these clocks automatically. To avoid performance issues when you apply a large number of clocks using , you should remove composing clocks from the animated property after they complete. There are several ways to remove a clock: diff --git a/xml/System.Windows.Media.Imaging/BitmapImage.xml b/xml/System.Windows.Media.Imaging/BitmapImage.xml index 7f59b89dc8121..e26e644015a19 100644 --- a/xml/System.Windows.Media.Imaging/BitmapImage.xml +++ b/xml/System.Windows.Media.Imaging/BitmapImage.xml @@ -199,7 +199,7 @@ to if you wish to close a stream used to create the . The default cache option retains access to the stream until the image is needed, and cleanup is handled by the garbage collector. + Set the to if you wish to close a stream used to create the . The default cache option retains access to the stream until the image is needed, and cleanup is handled by the garbage collector. ## Dependency Property Information @@ -797,7 +797,7 @@ ## Remarks If and are both set, the value is ignored. - Set the property to if you wish to close the stream after the is created. The default cache option retains access to the stream until the bitmap is needed, and cleanup is handled by the garbage collector. + Set the property to if you wish to close the stream after the is created. The default cache option retains access to the stream until the bitmap is needed, and cleanup is handled by the garbage collector. ## Dependency Property Information diff --git a/xml/System.Windows.Shell/WindowChrome.xml b/xml/System.Windows.Shell/WindowChrome.xml index 7fe07e4807115..52c584781f384 100644 --- a/xml/System.Windows.Shell/WindowChrome.xml +++ b/xml/System.Windows.Shell/WindowChrome.xml @@ -29,7 +29,7 @@ You can customize a window border by setting the property to or by using the class. ### WindowStyle.None - One way to customize the appearance of a WPF application window is to set the property to . This removes the non-client frame from the window and leaves only the client area, to which you can apply a custom style. However, when the non-client frame is removed, you also lose the system features and behaviors that it provides, such as caption buttons and window resizing. Another side effect is that the window will cover the Windows taskbar when it is maximized. Setting enables you to create a completely custom application, but also requires that you implement custom logic in your application to emulate standard window behavior. + One way to customize the appearance of a WPF application window is to set the property to . This removes the non-client frame from the window and leaves only the client area, to which you can apply a custom style. However, when the non-client frame is removed, you also lose the system features and behaviors that it provides, such as caption buttons and window resizing. Another side effect is that the window will cover the Windows taskbar when it is maximized. Setting enables you to create a completely custom application, but also requires that you implement custom logic in your application to emulate standard window behavior. ### WindowChrome To customize a window while retaining its standard functionality, you can use the class. The class separates the functionality of the window frame from the visuals, and lets you control the boundary between the client and non-client areas of your application window. The class lets you put WPF content in the window frame by extending the client area to cover the non-client area. At the same time, it retains system behaviors through two invisible areas; the *resize border* and *caption* areas . diff --git a/xml/System.Windows.Threading/Dispatcher.xml b/xml/System.Windows.Threading/Dispatcher.xml index 867213d9824a8..cde2245b8b068 100644 --- a/xml/System.Windows.Threading/Dispatcher.xml +++ b/xml/System.Windows.Threading/Dispatcher.xml @@ -44,7 +44,7 @@ [!code-csharp[ThreadingPrimeNumbers#ThreadingPrimeNumberInit](~/samples/snippets/csharp/VS_Snippets_Wpf/ThreadingPrimeNumbers/CSharp/Window1.xaml.cs#threadingprimenumberinit)] [!code-vb[ThreadingPrimeNumbers#ThreadingPrimeNumberInit](~/samples/snippets/visualbasic/VS_Snippets_Wpf/ThreadingPrimeNumbers/visualbasic/mainwindow.xaml.vb#threadingprimenumberinit)] - Next, is called. This call to takes two parameters: the priority, which is set to , and the callback, which is passed in through an instance of the delegate `NextPrimeDelegate`. + Next, is called. This call to takes two parameters: the priority, which is set to , and the callback, which is passed in through an instance of the delegate `NextPrimeDelegate`. [!code-csharp[ThreadingPrimeNumbers#ThreadingPrimeNumberBeginInvoke](~/samples/snippets/csharp/VS_Snippets_Wpf/ThreadingPrimeNumbers/CSharp/Window1.xaml.cs#threadingprimenumberbegininvoke)] [!code-vb[ThreadingPrimeNumbers#ThreadingPrimeNumberBeginInvoke](~/samples/snippets/visualbasic/VS_Snippets_Wpf/ThreadingPrimeNumbers/visualbasic/mainwindow.xaml.vb#threadingprimenumberbegininvoke)] @@ -202,7 +202,7 @@ [!code-csharp[ThreadingPrimeNumbers#ThreadingPrimeNumberInit](~/samples/snippets/csharp/VS_Snippets_Wpf/ThreadingPrimeNumbers/CSharp/Window1.xaml.cs#threadingprimenumberinit)] [!code-vb[ThreadingPrimeNumbers#ThreadingPrimeNumberInit](~/samples/snippets/visualbasic/VS_Snippets_Wpf/ThreadingPrimeNumbers/visualbasic/mainwindow.xaml.vb#threadingprimenumberinit)] - Next, is called. Because every has a property that returns the it is associated with, the desired is obtained by querying the , in this case a named `startStopButton`. The call to takes two parameters: the priority, which is set to , and the callback, which is passed in through an instance of the delegate `NextPrimeDelegate`. + Next, is called. Because every has a property that returns the it is associated with, the desired is obtained by querying the , in this case a named `startStopButton`. The call to takes two parameters: the priority, which is set to , and the callback, which is passed in through an instance of the delegate `NextPrimeDelegate`. [!code-csharp[ThreadingPrimeNumbers#ThreadingPrimeNumberBeginInvoke](~/samples/snippets/csharp/VS_Snippets_Wpf/ThreadingPrimeNumbers/CSharp/Window1.xaml.cs#threadingprimenumberbegininvoke)] [!code-vb[ThreadingPrimeNumbers#ThreadingPrimeNumberBeginInvoke](~/samples/snippets/visualbasic/VS_Snippets_Wpf/ThreadingPrimeNumbers/visualbasic/mainwindow.xaml.vb#threadingprimenumberbegininvoke)] @@ -335,7 +335,7 @@ [!code-csharp[ThreadingWeatherForecast#ThreadingWeatherDelegates](~/samples/snippets/csharp/VS_Snippets_Wpf/ThreadingWeatherForecast/CSharp/Window1.xaml.cs#threadingweatherdelegates)] [!code-vb[ThreadingWeatherForecast#ThreadingWeatherDelegates](~/samples/snippets/visualbasic/VS_Snippets_Wpf/ThreadingWeatherForecast/visualbasic/window1.xaml.vb#threadingweatherdelegates)] - Next, is called. Because every has a property that returns the it is associated with, the desired is obtained by querying the , in this case a named `tomorrowsWeather`. The call to takes three parameters: the priority, which is set to ; the callback, which is passed in through an instance of the delegate `OneArgDelegate`; and a string named `weather`, which is the argument for the callback. + Next, is called. Because every has a property that returns the it is associated with, the desired is obtained by querying the , in this case a named `tomorrowsWeather`. The call to takes three parameters: the priority, which is set to ; the callback, which is passed in through an instance of the delegate `OneArgDelegate`; and a string named `weather`, which is the argument for the callback. [!code-csharp[threadingweatherforecast#ThreadingWeatherDispatcherOneArge](~/samples/snippets/csharp/VS_Snippets_Wpf/ThreadingWeatherForecast/CSharp/Window1.xaml.cs#threadingweatherdispatcheronearge)] [!code-vb[threadingweatherforecast#ThreadingWeatherDispatcherOneArge](~/samples/snippets/visualbasic/VS_Snippets_Wpf/ThreadingWeatherForecast/visualbasic/window1.xaml.vb#threadingweatherdispatcheronearge)] @@ -2032,7 +2032,7 @@ ## Remarks This method provides a way for you to temporarily release execution control to the current dispatcher so it can do other work, such as process other events. Use the `await`, or `Await` in Visual Basic, operator on the return value to return control to the current dispatcher. Use this method if want to give your app a chance to process events while you app is doing a lot of work on the UI thread. For example, you can use this method in a long-running loop that updates a control. - This method is equivalent to calling the method and passing in . + This method is equivalent to calling the method and passing in . ]]> diff --git a/xml/System.Windows/DataFormats.xml b/xml/System.Windows/DataFormats.xml index c6afaad6e3b98..0387ca231ff08 100644 --- a/xml/System.Windows/DataFormats.xml +++ b/xml/System.Windows/DataFormats.xml @@ -294,7 +294,7 @@ ## Remarks This method can also be used to register new formats. If the specified format cannot be found, it is automatically registered as a new data format. - Use of this method requires that the caller have with the + Use of this method requires that the caller have with the flag set. The following code shows the attribute syntax to request this permission for an assembly. diff --git a/xml/System.Windows/FrameworkElement.xml b/xml/System.Windows/FrameworkElement.xml index 2d24a20cd44e3..b28ed34919c7d 100644 --- a/xml/System.Windows/FrameworkElement.xml +++ b/xml/System.Windows/FrameworkElement.xml @@ -1813,7 +1813,7 @@ to deliberately limit the scope of inheritance behavior, to a force resource lookup to check the application resources, or to prevent a RelativeSource FindAncestor lookup from querying the current element or any further. RelativeSource FindAncestor lookup occurs when a binding uses a that has its property set to the value. + Certain boundaries in the element tree set to deliberately limit the scope of inheritance behavior, to a force resource lookup to check the application resources, or to prevent a RelativeSource FindAncestor lookup from querying the current element or any further. RelativeSource FindAncestor lookup occurs when a binding uses a that has its property set to the value. If you want your derived class to set this property, you should do so within the static constructor or in other initialization routines. diff --git a/xml/System.Windows/GridLength.xml b/xml/System.Windows/GridLength.xml index 09fd2d5d8dc66..ae9d445d2fa72 100644 --- a/xml/System.Windows/GridLength.xml +++ b/xml/System.Windows/GridLength.xml @@ -241,7 +241,7 @@ value is . Therefore, this property returns `true` if you do not specify a when creating the instance. + The default value is . Therefore, this property returns `true` if you do not specify a when creating the instance. ]]> diff --git a/xml/System.Windows/InheritanceBehavior.xml b/xml/System.Windows/InheritanceBehavior.xml index b66cb7ee1c490..c0cf39b84498d 100644 --- a/xml/System.Windows/InheritanceBehavior.xml +++ b/xml/System.Windows/InheritanceBehavior.xml @@ -15,7 +15,7 @@ that has its property set to the value. + A RelativeSource FindAncestor lookup occurs when a binding uses a that has its property set to the value. ]]> diff --git a/xml/System.Windows/UIElement.xml b/xml/System.Windows/UIElement.xml index c025ceeb87fc4..7372a8a82ea6f 100644 --- a/xml/System.Windows/UIElement.xml +++ b/xml/System.Windows/UIElement.xml @@ -12364,7 +12364,7 @@ Image with an Elliptical Clip Region ## Examples - The following example implements a handler that references two different named buttons that are intended to be a mutually exclusive pair in the user interface. Prior to running the actual program logic associated with the button, the button itself is set to be , and the other button in the pair is set to . + The following example implements a handler that references two different named buttons that are intended to be a mutually exclusive pair in the user interface. Prior to running the actual program logic associated with the button, the button itself is set to be , and the other button in the pair is set to . [!code-csharp[MediaElement_snip#UIElementVisibility](~/samples/snippets/csharp/VS_Snippets_Wpf/MediaElement_snip/CSharp/PlaybackExample.cs#uielementvisibility)] [!code-vb[MediaElement_snip#UIElementVisibility](~/samples/snippets/visualbasic/VS_Snippets_Wpf/MediaElement_snip/VB/PlaybackExample.vb#uielementvisibility)] diff --git a/xml/System.Windows/Window.xml b/xml/System.Windows/Window.xml index c23b8b8953245..ba428fd69870d 100644 --- a/xml/System.Windows/Window.xml +++ b/xml/System.Windows/Window.xml @@ -695,7 +695,7 @@ nor event is raised. Instead, the window's property is set to . + A window is not closed when it is hidden, and neither the nor event is raised. Instead, the window's property is set to . If a window is the application's and the application's is , the application does not shut down. Likewise, the application does not shut down if a window is the only window and the application's shutdown mode is . diff --git a/xml/System.Workflow.Activities/SetStateEventArgs.xml b/xml/System.Workflow.Activities/SetStateEventArgs.xml index 5a42a2ef6ea61..57052e6ccf5b1 100644 --- a/xml/System.Workflow.Activities/SetStateEventArgs.xml +++ b/xml/System.Workflow.Activities/SetStateEventArgs.xml @@ -28,7 +28,7 @@ > [!NOTE] > [!INCLUDE[DeprecatedContent](~/includes/deprecatedcontent-md.md)] - The allows for setting the state from the host application. This enables the host application to override the current state of a state machine. This can be accomplished by enqueuing an instance of the class to the WorkflowQueue named by the constant . + The allows for setting the state from the host application. This enables the host application to override the current state of a state machine. This can be accomplished by enqueuing an instance of the class to the WorkflowQueue named by the constant . A simpler way to accomplish this is to use the method in the class. diff --git a/xml/System.Workflow.ComponentModel.Compiler/ValidationOptionAttribute.xml b/xml/System.Workflow.ComponentModel.Compiler/ValidationOptionAttribute.xml index ecd20db352c4b..d8c0c6ebcf3eb 100644 --- a/xml/System.Workflow.ComponentModel.Compiler/ValidationOptionAttribute.xml +++ b/xml/System.Workflow.ComponentModel.Compiler/ValidationOptionAttribute.xml @@ -32,7 +32,7 @@ The is intended to be used on Meta-properties only. It will be ignored for instance properties. For more information, see [Using Activity Properties](http://msdn.microsoft.com/en-us/974353d4-28f9-4202-890d-b36981876148) for more details. - If the is not specified, the behavior defaults to . + If the is not specified, the behavior defaults to . ```csharp public sealed partial class Activity1: Activity diff --git a/xml/System.Workflow.ComponentModel.Design/ActivityDesigner.xml b/xml/System.Workflow.ComponentModel.Design/ActivityDesigner.xml index e5e4d05d7650a..a04e03c312722 100644 --- a/xml/System.Workflow.ComponentModel.Design/ActivityDesigner.xml +++ b/xml/System.Workflow.ComponentModel.Design/ActivityDesigner.xml @@ -3115,7 +3115,7 @@ returns a single-member array that contains . + Unless overridden in a deriving class, returns a single-member array that contains . ]]> diff --git a/xml/System.Workflow.ComponentModel.Design/AmbientTheme.xml b/xml/System.Workflow.ComponentModel.Design/AmbientTheme.xml index 2cb24a3f08457..f1c504e93816b 100644 --- a/xml/System.Workflow.ComponentModel.Design/AmbientTheme.xml +++ b/xml/System.Workflow.ComponentModel.Design/AmbientTheme.xml @@ -636,7 +636,7 @@ with its color set to the current property value, its width set to 1, and its property set to . + If this property contains a null reference (`Nothing` in Visual Basic), by default it will return a with its color set to the current property value, its width set to 1, and its property set to . ]]> @@ -905,7 +905,7 @@ with its color calculated based on the current property value, its width set to 1, and its property set to . + If this property contains a null reference (`Nothing` in Visual Basic), by default it will return a with its color calculated based on the current property value, its width set to 1, and its property set to . ]]> @@ -1159,7 +1159,7 @@ with its color set to the current property value, its width set to 1, and its property set to . + If this property contains a null reference (`Nothing` in Visual Basic), by default it will return a with its color set to the current property value, its width set to 1, and its property set to . ]]> diff --git a/xml/System.Workflow.ComponentModel.Design/FreeformActivityDesigner.xml b/xml/System.Workflow.ComponentModel.Design/FreeformActivityDesigner.xml index b1748985e86e5..7fbda7f5410ab 100644 --- a/xml/System.Workflow.ComponentModel.Design/FreeformActivityDesigner.xml +++ b/xml/System.Workflow.ComponentModel.Design/FreeformActivityDesigner.xml @@ -1036,7 +1036,7 @@ returns the size of the current bounding rectangle for the when is set to `false`. If is set to `true` and is set to , calculates and returns new size settings for the bounding rectangle. If is set to true and is not set to , returns . + returns the size of the current bounding rectangle for the when is set to `false`. If is set to `true` and is set to , calculates and returns new size settings for the bounding rectangle. If is set to true and is not set to , returns . ]]> @@ -1064,7 +1064,7 @@ is set to `true` and is set to , performs all resizing tasks on the workflow design surface. If is set to `true` and is set to , performs layout tasks, but no resizing tasks. If is set to `false`, all contained designers retain their previous locations on the . + If is set to `true` and is set to , performs all resizing tasks on the workflow design surface. If is set to `true` and is set to , performs layout tasks, but no resizing tasks. If is set to `false`, all contained designers retain their previous locations on the . ]]> diff --git a/xml/System.Workflow.ComponentModel.Design/SequentialWorkflowRootDesigner.xml b/xml/System.Workflow.ComponentModel.Design/SequentialWorkflowRootDesigner.xml index 73bbdb45c74da..3e9ef56a54fde 100644 --- a/xml/System.Workflow.ComponentModel.Design/SequentialWorkflowRootDesigner.xml +++ b/xml/System.Workflow.ComponentModel.Design/SequentialWorkflowRootDesigner.xml @@ -457,7 +457,7 @@ returns . + Unless overridden in an inheriting class, returns . ]]> diff --git a/xml/System.Workflow.Runtime.Tracking/SqlTrackingQueryOptions.xml b/xml/System.Workflow.Runtime.Tracking/SqlTrackingQueryOptions.xml index dc4d565de090a..dc80e95fed585 100644 --- a/xml/System.Workflow.Runtime.Tracking/SqlTrackingQueryOptions.xml +++ b/xml/System.Workflow.Runtime.Tracking/SqlTrackingQueryOptions.xml @@ -229,7 +229,7 @@ ## Remarks constrains the set of objects returned by a call to to those workflow instances that have the specified by , that have the status specified by during the period specified by and , and that have extracted data that matches at least one of the objects specified by . - A workflow instance is considered to have a status that matches if the last received for that workflow instance before or during the specified time period has its property set to a value that maps to the value specified by . Therefore, the for the workflow instance must have a that is configured for the appropriate value. Only values that have been sent in workflow tracking records can be matched. If no workflow tracking records have been sent for the workflow instance, the workflow instance is considered to have a status of . + A workflow instance is considered to have a status that matches if the last received for that workflow instance before or during the specified time period has its property set to a value that maps to the value specified by . Therefore, the for the workflow instance must have a that is configured for the appropriate value. Only values that have been sent in workflow tracking records can be matched. If no workflow tracking records have been sent for the workflow instance, the workflow instance is considered to have a status of . The following table shows the mapping between values and values. diff --git a/xml/System.Workflow.Runtime.Tracking/TrackingWorkflowExceptionEventArgs.xml b/xml/System.Workflow.Runtime.Tracking/TrackingWorkflowExceptionEventArgs.xml index aa2c184b38d52..48ff7f955fc7d 100644 --- a/xml/System.Workflow.Runtime.Tracking/TrackingWorkflowExceptionEventArgs.xml +++ b/xml/System.Workflow.Runtime.Tracking/TrackingWorkflowExceptionEventArgs.xml @@ -25,7 +25,7 @@ > [!NOTE] > [!INCLUDE[DeprecatedContent](~/includes/deprecatedcontent-md.md)] - When an exception occurs during the execution of a workflow instance and a that is associated with the workflow instance includes a configured for a , the workflow tracking infrastructure sets to an in the that it sends to the tracking service. + When an exception occurs during the execution of a workflow instance and a that is associated with the workflow instance includes a configured for a , the workflow tracking infrastructure sets to an in the that it sends to the tracking service. > [!NOTE] > is used only by the runtime tracking service to pass information in a . diff --git a/xml/System.Xaml/NamespaceDeclaration.xml b/xml/System.Xaml/NamespaceDeclaration.xml index b01ca78fadd2c..c297686b1b762 100644 --- a/xml/System.Xaml/NamespaceDeclaration.xml +++ b/xml/System.Xaml/NamespaceDeclaration.xml @@ -56,7 +56,7 @@ does not attempt to validate values. To correctly use a XAML writer, do not use null values. A namespace declaration may have a value for the prefix. A prefix represents a declaration of the default XAML namespace. + Initialization of does not attempt to validate values. To correctly use a XAML writer, do not use null values. A namespace declaration may have a value for the prefix. A prefix represents a declaration of the default XAML namespace. ]]> @@ -106,7 +106,7 @@ value for the prefix. A prefix represents a declaration of the default XAML namespace. + A namespace declaration may have a value for the prefix. A prefix represents a declaration of the default XAML namespace. ]]> diff --git a/xml/System.Xaml/XamlDirective.xml b/xml/System.Xaml/XamlDirective.xml index 8da42db902e4e..9778a4508ab96 100644 --- a/xml/System.Xaml/XamlDirective.xml +++ b/xml/System.Xaml/XamlDirective.xml @@ -135,7 +135,7 @@ ## Remarks You can set this value in the constructor signature. If you construct by using the constructor signature, the value for the instance is . However, the instance always reports as `true`. This behavior typically affects attempts to write object graphs and also affects other practical uses of a value. - You typically would not construct a XAML directive case where is . + You typically would not construct a XAML directive case where is . ]]> diff --git a/xml/System.Xaml/XamlObjectReaderSettings.xml b/xml/System.Xaml/XamlObjectReaderSettings.xml index 817369504ecf7..5fd7ed31e1052 100644 --- a/xml/System.Xaml/XamlObjectReaderSettings.xml +++ b/xml/System.Xaml/XamlObjectReaderSettings.xml @@ -54,7 +54,7 @@ - The behavior only applies for properties where is `false`, AND when a `ShouldSerialize` pattern is unavailable for the property value. -- If the statement in the first bullet point is true, AND is `true`, then designer settings determine whether the property writes its output as content or the property is considered implicit. Access to designer settings is through internal APIs in .NET Framework XAML Services and is based on reading from backing assemblies. In this case, the internal code checks for the value and writes its output to the property. Otherwise, the content is considered implicit. +- If the statement in the first bullet point is true, AND is `true`, then designer settings determine whether the property writes its output as content or the property is considered implicit. Access to designer settings is through internal APIs in .NET Framework XAML Services and is based on reading from backing assemblies. In this case, the internal code checks for the value and writes its output to the property. Otherwise, the content is considered implicit. - If the statement in the first bullet is `true`, AND is `false`, the property always writes its output, and from backing assemblies is irrelevant. diff --git a/xml/System.Xaml/XamlType.xml b/xml/System.Xaml/XamlType.xml index 9b3b584e31388..598884e4d60fc 100644 --- a/xml/System.Xaml/XamlType.xml +++ b/xml/System.Xaml/XamlType.xml @@ -1326,7 +1326,7 @@ ## Remarks This method is invoked by an internal private method (no public `CollectionKind` or `GetCollectionKind` API exists on ). - The default implementation uses the internal CLR reflection. For cases where is `null`, the default implementation can use , if it is available. This behavior indirectly calls recursively to attempt to find a valid base type; it returns if no valid base type exists. In general, the default implementation attempts to find the `Add` method of the underlying type by reflection. If found, the of the `Add` method is enough information to determine which value should be returned. Otherwise, it returns . + The default implementation uses the internal CLR reflection. For cases where is `null`, the default implementation can use , if it is available. This behavior indirectly calls recursively to attempt to find a valid base type; it returns if no valid base type exists. In general, the default implementation attempts to find the `Add` method of the underlying type by reflection. If found, the of the `Add` method is enough information to determine which value should be returned. Otherwise, it returns . Override this method if you are not relying on default internal CLR reflection and are using metadata or other techniques for reporting the XAML type system information or schema information of a type. @@ -1822,7 +1822,7 @@ The default implementation can use CLR reflection concepts, such as checking for an `Add` method by and using the ; checking ; and checking and trying the same logic there. - Override this method if you want to use different logic. Cases where returns should return `null`. + Override this method if you want to use different logic. Cases where returns should return `null`. ]]> @@ -1852,7 +1852,7 @@ The default implementation can use CLR reflection concepts, such as checking for an `Add` method by and using the ; and checking and trying the same logic there. - Override this method if you want to use different logic. Cases where does not return should return `null`. + Override this method if you want to use different logic. Cases where does not return should return `null`. ]]> diff --git a/xml/System.Xml.XPath/XPathNavigator.xml b/xml/System.Xml.XPath/XPathNavigator.xml index 6b3b5e94e020a..b4f3e21332223 100644 --- a/xml/System.Xml.XPath/XPathNavigator.xml +++ b/xml/System.Xml.XPath/XPathNavigator.xml @@ -1886,7 +1886,7 @@ nav.Evaluate(expr); is specified as the `name` parameter, the method returns the default `xmlns` namespace. + Namespaces `xml` and `xmlns` always return a value. If is specified as the `name` parameter, the method returns the default `xmlns` namespace. For a definition of namespace nodes, see section 5.4 of the W3C XML Path Language (XPath) recommendation located at http://www.w3.org/TR/xpath#data-model. @@ -3355,7 +3355,7 @@ navigator.InsertElementBefore(navigator.Prefix, "pages", LookupNamespaceURI(navi is specified as the `prefix` parameter, the currently assigned default namespace URI is returned. If no default namespace URI is explicitly assigned, and is specified as the `prefix` parameter, the blank prefix is associated with elements that are not in any namespace, and is returned. + If is specified as the `prefix` parameter, the currently assigned default namespace URI is returned. If no default namespace URI is explicitly assigned, and is specified as the `prefix` parameter, the blank prefix is associated with elements that are not in any namespace, and is returned. > [!NOTE] > The prefix to namespace URI mappings can change from node to node in an XML document. As a result, the value of the method may not be consistent from one node to the next. @@ -6902,7 +6902,7 @@ XPathNodeIterator ni = nav.Select(expr); is specified as the `name` parameter, all ancestor nodes that belong to the specified namespace URI are selected. If is specified as the `namespaceURI` parameter, all ancestor nodes with the specified local name that belong to no namespace are selected. If is specified as both the local name and namespace URI, all ancestor nodes that belong to no namespace are selected. + If is specified as the `name` parameter, all ancestor nodes that belong to the specified namespace URI are selected. If is specified as the `namespaceURI` parameter, all ancestor nodes with the specified local name that belong to no namespace are selected. If is specified as both the local name and namespace URI, all ancestor nodes that belong to no namespace are selected. The method has no effect on the state of the . @@ -7039,7 +7039,7 @@ XPathNodeIterator ni = nav.Select(expr); is specified as the `name` parameter, all child nodes that belong to the specified namespace URI are selected. If is specified as the `namespaceURI` parameter, all child nodes with the specified local name that belong to no namespace are selected. If both the local name and namespace URI parameters are , all child nodes that belong to no namespace are selected. + If is specified as the `name` parameter, all child nodes that belong to the specified namespace URI are selected. If is specified as the `namespaceURI` parameter, all child nodes with the specified local name that belong to no namespace are selected. If both the local name and namespace URI parameters are , all child nodes that belong to no namespace are selected. The method has no effect on the state of the . @@ -7145,7 +7145,7 @@ XPathNodeIterator ni = nav.Select(expr); is specified as the `name` parameter, all descendant nodes that belong to the specified namespace URI are selected. If is specified as the `namespaceURI` parameter, all descendant nodes with the specified local name that belong to no namespace are selected. If both the local name and namespace URI parameters are , all descendant nodes that belong to no namespace are selected. + If is specified as the `name` parameter, all descendant nodes that belong to the specified namespace URI are selected. If is specified as the `namespaceURI` parameter, all descendant nodes with the specified local name that belong to no namespace are selected. If both the local name and namespace URI parameters are , all descendant nodes that belong to no namespace are selected. A descendant is a child or a child of a child and so on; thus the selected nodes will never contain attribute or namespace nodes. @@ -8380,7 +8380,7 @@ XPathNodeIterator ni = nav.Select(expr); ## Remarks The following are important notes to consider when using the property. -- The property is `null`, unless the property of the property of the is set to . +- The property is `null`, unless the property of the property of the is set to . - If this node is valid, the property is the same as the property of the property of the , unless this node is a member of a union. diff --git a/xml/System.Xml.Xsl/XslTransform.xml b/xml/System.Xml.Xsl/XslTransform.xml index af43231a9f79c..2b1a19f9b5e17 100644 --- a/xml/System.Xml.Xsl/XslTransform.xml +++ b/xml/System.Xml.Xsl/XslTransform.xml @@ -220,7 +220,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The URI of the style sheet is used to create evidence, which is applied to the assembly. For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. @@ -293,7 +293,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The assembly has full trust. The recommended practice is to provide evidence using the method. For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. @@ -362,7 +362,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The assembly has full trust. The recommended practice is to provide evidence using the method. For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. ]]> @@ -414,7 +414,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The assembly has full trust. The recommended practice is to provide evidence using the method. For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. ]]> @@ -468,7 +468,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The URI of the style sheet is used to create evidence, which is applied to the assembly. For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. @@ -548,7 +548,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The assembly has full trust. The recommended practice is to provide evidence using the method. For issues with the method and style sheets with embedded scripts see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. ]]> @@ -600,7 +600,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The assembly has full trust. The recommended practice is to provide evidence using the method. For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. ]]> @@ -654,7 +654,7 @@ If the style sheet contains embedded scripting, the script is compiled to an assembly. The assembly has full trust. The recommended practice is to provide evidence using the . For issues with the method and style sheets with embedded scripts, see article Q316755 in the Microsoft Knowledge Base at http://support.microsoft.com. > [!NOTE] -> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. +> If the caller does not have `UnmanagedCode` permission, the embedded script is not compiled and a is thrown. See and for more information. ]]> diff --git a/xml/System.Xml/XmlReader.xml b/xml/System.Xml/XmlReader.xml index be79e5f07d03d..5e380ad9f53ea 100644 --- a/xml/System.Xml/XmlReader.xml +++ b/xml/System.Xml/XmlReader.xml @@ -122,7 +122,7 @@ |Use this property|To|Default| |-------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|-------------| -| property|Enable or disable checks for the following:

- Characters are within the range of legal XML characters, as defined by the [2.2 Characters](http://www.w3.org/TR/2006/REC-xml-20060816/#charsets) section of the W3C XML 1.0 Recommendation.
- All XML names are valid, as defined by the [2.3 Common Syntactic Constructs](http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name) section of the W3C XML 1.0 Recommendation.

When this property is set to `true` (default), an exception is thrown if the XML file contains illegal characters or invalid XML names (for example, an element name starts with a number).|Character and name checking is enabled.

Setting to `false` turns off character checking for character entity references. If the reader is processing text data, it always checks that XML names are valid, regardless of this setting. **Note:** The XML 1.0 recommendation requires document-level conformance when a DTD is present. Therefore, if the reader is configured to support , but the XML data contains a document type definition (DTD), an is thrown.| +| property|Enable or disable checks for the following:

- Characters are within the range of legal XML characters, as defined by the [2.2 Characters](http://www.w3.org/TR/2006/REC-xml-20060816/#charsets) section of the W3C XML 1.0 Recommendation.
- All XML names are valid, as defined by the [2.3 Common Syntactic Constructs](http://www.w3.org/TR/2006/REC-xml-20060816/#NT-Name) section of the W3C XML 1.0 Recommendation.

When this property is set to `true` (default), an exception is thrown if the XML file contains illegal characters or invalid XML names (for example, an element name starts with a number).|Character and name checking is enabled.

Setting to `false` turns off character checking for character entity references. If the reader is processing text data, it always checks that XML names are valid, regardless of this setting. **Note:** The XML 1.0 recommendation requires document-level conformance when a DTD is present. Therefore, if the reader is configured to support , but the XML data contains a document type definition (DTD), an is thrown.| | property|Choose the level of conformance to enforce:

- . Conforms to the rules for a [well-formed XML 1.0 document](http://www.w3.org/TR/2006/REC-xml-20060816/#sec-well-formed).
- . Conforms to the rules for a well-formed document fragment that can be consumed as an [external parsed entity](http://www.w3.org/TR/2006/REC-xml-20060816/#wf-entities).
- . Conforms to the level decided by the reader.

If the data isn't in conformance, an exception is thrown.|| @@ -136,7 +136,7 @@ ||Read the first node, and advance through the stream one node at a time. Such calls are typically performed inside a `while` loop.

Use the property to get the type (for example, attribute, comment, element, and so on) of the current node.| ||Skip the children of the current node and move to the next node.| | and |Skip non-content nodes and move to the next content node or to the end of the file.

Non-content nodes include , , , , and .

Content nodes include non-white space text, , , and .| -||Read an element and all its children, and return a new instance set to .

This method is useful for creating boundaries around XML elements; for example, if you want to pass data to another component for processing and you want to limit how much of your data the component can access.| +||Read an element and all its children, and return a new instance set to .

This method is useful for creating boundaries around XML elements; for example, if you want to pass data to another component for processing and you want to limit how much of your data the component can access.| See the reference page for an example of navigating through a text stream one node at a time and displaying the type of each node. @@ -666,7 +666,7 @@ Six Month Review Date: 7/8/2003 12:00:00 AM |Setting|Default| |-------------|-------------| ||`true`| -||| +||| ||`false`| ||`false`| ||`false`| diff --git a/xml/System.Xml/XmlReaderSettings.xml b/xml/System.Xml/XmlReaderSettings.xml index 11016c506ca02..6fc3070a8ef6a 100644 --- a/xml/System.Xml/XmlReaderSettings.xml +++ b/xml/System.Xml/XmlReaderSettings.xml @@ -363,7 +363,7 @@ - The notation names in a single `NotationType` attribute declaration and `NmTokens` in a single `Enumeration` attribute declaration are distinct. - You can use the property to check and guarantee that the stream being read complies with the rules for a well-formed XML 1.0 document or document fragment. If the data doesn't comply, an exception is thrown. The default is (document-level conformance). + You can use the property to check and guarantee that the stream being read complies with the rules for a well-formed XML 1.0 document or document fragment. If the data doesn't comply, an exception is thrown. The default is (document-level conformance). The three conformance levels are: @@ -371,10 +371,10 @@ |-------------|-----------------| ||Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document. This level of checking ensures that any processor can consume the stream being read as an [well-formed XML 1.0 document](http://www.w3.org/TR/2006/REC-xml-20060816/#sec-well-formed).

The reader checks for the following:

- The top-level item must not have any nodes other than XML Declaration, document type definition (DTD), element, comment, white space, or processing instruction.
- The XML data must have exactly one top-level element node.| ||Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document fragment.

This setting accepts XML data with multiple root elements, or text nodes at the top-level. This level of checking ensures that any processor can consume the stream being read as an [external parsed entity](http://www.w3.org/TR/2006/REC-xml-20060816/#wf-entities).| -||Specifies that the reader should determine the level of conformance checking based on the incoming data.

Document conformance checking is applied if the XML data contains DTD information.

Fragment conformance checking is applied if the XML data contains one of following:

- Text, CDATA, or entity reference node at the root level.
- More than one element at the root level.
- No element at the root level.

An is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

This setting can be used in wrapping scenarios when the method is used to add additional features to an existing . In this case, does not add any new conformance checking. Conformance checking is left to the that is being wrapped.| +||Specifies that the reader should determine the level of conformance checking based on the incoming data.

Document conformance checking is applied if the XML data contains DTD information.

Fragment conformance checking is applied if the XML data contains one of following:

- Text, CDATA, or entity reference node at the root level.
- More than one element at the root level.
- No element at the root level.

An is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

This setting can be used in wrapping scenarios when the method is used to add additional features to an existing . In this case, does not add any new conformance checking. Conformance checking is left to the that is being wrapped.| > [!NOTE] -> The XML 1.0 recommendation requires document-level conformance when a DTD is present. Therefore, if the reader is configured to support , but the XML data contains a document type definition (DTD), an is thrown. +> The XML 1.0 recommendation requires document-level conformance when a DTD is present. Therefore, if the reader is configured to support , but the XML data contains a document type definition (DTD), an is thrown. Here's how the reader handles specific conformance violations depending on the setting of the property: @@ -439,11 +439,11 @@ This property can have one of the following values: -- to enable DTD processing. +- to enable DTD processing. -- to throw an exception when a DTD is encountered. +- to throw an exception when a DTD is encountered. -- to disable DTD processing without warnings or exceptions. +- to disable DTD processing without warnings or exceptions. To perform validation against a DTD, the uses the DTD defined in the DOCTYPE declaration of an XML document. The DOCTYPE declaration can either point to an inline DTD or can be a reference to an external DTD file. To validate an XML file against a DTD: @@ -454,7 +454,7 @@ - If the DTD is an external file stored on a network resource that requires authentication, pass an object with the necessary credentials to the method. > [!IMPORTANT] -> If the property is set to , the will not report the DTDs. This means that the DTD/DOCTYPE will be lost on output. +> If the property is set to , the will not report the DTDs. This means that the DTD/DOCTYPE will be lost on output. diff --git a/xml/System.Xml/XmlTextReader.xml b/xml/System.Xml/XmlTextReader.xml index e7b688d52e91a..bd1a05ec3c668 100644 --- a/xml/System.Xml/XmlTextReader.xml +++ b/xml/System.Xml/XmlTextReader.xml @@ -1094,7 +1094,7 @@ XmlTextReader reader = new XmlTextReader(s); The enumeration contains the , , and enumerators. is the default behavior. The property replaces the `ProhibitDTD` property and adds the ability to ignore the DOCTYPE element. > [!IMPORTANT] -> If the property is set to , the will not report the DTDs. This means that the DTD/DOCTYPE will be lost on output. +> If the property is set to , the will not report the DTDs. This means that the DTD/DOCTYPE will be lost on output. ]]>
diff --git a/xml/System.Xml/XmlWriter.xml b/xml/System.Xml/XmlWriter.xml index 4e165f7108378..85e1497b800f9 100644 --- a/xml/System.Xml/XmlWriter.xml +++ b/xml/System.Xml/XmlWriter.xml @@ -307,16 +307,16 @@ async Task TestWriter(Stream stream) |-------------|-------------| ||`true`| ||`false`| -||| +||| ||| ||`false`| ||Two spaces| || (no removal)| ||`\r\n` (carriage return, new line)| -||| +||| ||`false`| ||`false`| -||| +||| ||`true`| > [!NOTE] @@ -367,16 +367,16 @@ async Task TestWriter(Stream stream) |-------------|-------------| ||`true`| ||`false`| -||| +||| ||| ||`false`| ||Two spaces| || (no removal)| ||`\r\n` (carriage return, new line)| -||| +||| ||`false`| ||`false`| -||| +||| ||`true`| If you want to specify the features to support on the created writer, use an overload that takes an object as one of its arguments, and pass in an object with your custom settings. @@ -437,16 +437,16 @@ async Task TestWriter(Stream stream) |-------------|-------------| ||`true`| ||`false`| -||| +||| ||| ||`false`| ||Two spaces| || (no removal)| ||`\r\n` (carriage return, new line)| -||| +||| ||`false`| ||`false`| -||| +||| ||`true`| If you want to specify the features to support on the created writer, use an overload that takes an object as one of its arguments, and pass in an object with your custom settings. @@ -502,16 +502,16 @@ async Task TestWriter(Stream stream) |-------------|-------------| ||`true`| ||`false`| -||| +||| ||| ||`false`| ||Two spaces| || (no removal)| ||`\r\n` (carriage return, new line)| -||| +||| ||`false`| ||`false`| -||| +||| ||`true`| If you want to specify the features to support on the created XML writer, use an overload that takes an object as one of its arguments, and pass in a object with your custom settings. @@ -570,16 +570,16 @@ async Task TestWriter(Stream stream) |-------------|-------------| ||`true`| ||`false`| -||| +||| ||| ||`false`| ||Two spaces| || (no removal)| ||`\r\n` (carriage return, new line)| -||| +||| ||`false`| ||`false`| -||| +||| ||`true`| If you want to specify the features to support on the created XML writer, use an overload that takes an object as one of its arguments, and pass in a object with your custom settings. @@ -632,16 +632,16 @@ async Task TestWriter(Stream stream) |-------------|-------------| ||`true`| ||`false`| -||| +||| ||| ||`false`| ||Two spaces| || (no removal)| ||`\r\n` (carriage return, new line)| -||| +||| ||`false`| ||`false`| -||| +||| ||`true`| If you want to specify the features to support on the created XML writer, use an overload that takes an object as one of its arguments, and pass in a object with your custom settings. diff --git a/xml/System.Xml/XmlWriterSettings.xml b/xml/System.Xml/XmlWriterSettings.xml index 0c1b7c78247e0..c0e8f01c3cc39 100644 --- a/xml/System.Xml/XmlWriterSettings.xml +++ b/xml/System.Xml/XmlWriterSettings.xml @@ -40,7 +40,7 @@ |Property|Specifies|Value|Default| |--------------|---------------|-----------|-------------| ||Whether to check that characters are in the legal XML character set, as defined by W3C.|`true` or `false`|`true`| -||Whether to check that output is a well-formed XML 1.0 document or fragment.| (document-level), (fragment-level), or (auto-detection)| (document-level conformance)| +||Whether to check that output is a well-formed XML 1.0 document or fragment.| (document-level), (fragment-level), or (auto-detection)| (document-level conformance)| ||Whether to add closing tags to all unclosed elements when the method is called.|`true` or `false`|`true`| To specify output format, use these properties: diff --git a/xml/System/Activator.xml b/xml/System/Activator.xml index 7334d4cc36942..faa4ea8a0be28 100644 --- a/xml/System/Activator.xml +++ b/xml/System/Activator.xml @@ -106,7 +106,7 @@ For information about other exceptions that can be thrown by invoked methods, see the Exceptions section of the and methods. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -170,7 +170,7 @@ For information about other exceptions that can be thrown by invoked methods, see the Exceptions section of the and methods. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -281,7 +281,7 @@ The constructor to be invoked must be accessible. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -424,7 +424,7 @@ For more information on how the common language runtime identifies and loads assemblies, see [How the Runtime Locates Assemblies](~/docs/framework/deployment/how-the-runtime-locates-assemblies.md). For information on using the application configuration file to define assembly locations, see [Specifying an Assembly's Location](~/docs/framework/configure-apps/specify-assembly-location.md). If `assemblyName` is found, it is loaded in the default context. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -513,7 +513,7 @@ ## Remarks > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -597,7 +597,7 @@ The constructor to be invoked must be accessible and must provide the most specific match with the specified argument list. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -705,7 +705,7 @@ Use to unwrap the return value. > [!NOTE] -> This method uses to require the immediate caller to have full trust. +> This method uses to require the immediate caller to have full trust. ]]>
@@ -779,7 +779,7 @@ Use to unwrap the return value. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types if the caller has been granted with the flag and if the grant set of the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -863,7 +863,7 @@ The constructor to be invoked must be accessible and must provide the most specific match with the specified argument list. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -951,7 +951,7 @@ The constructor to be invoked must provide the most specific match with the specified argument list under the constraints of the specified binder and binding attributes. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1044,7 +1044,7 @@ The constructor to be invoked must provide the most specific match with the specified argument list under the constraints of the specified binder and binding attributes. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types and members if the caller has been granted with the flag and if the grant set of the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to access nonpublic types and members if the caller has been granted with the flag and if the grant set of the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1138,7 +1138,7 @@ Use to unwrap the return value. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md)42d9dc2a-8fcc-4ff3-b002-4ff260ef3dc5.) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md)42d9dc2a-8fcc-4ff3-b002-4ff260ef3dc5.) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1232,7 +1232,7 @@ Use to unwrap the return value. > [!NOTE] -> This method uses to require the immediate caller to have full trust. +> This method uses to require the immediate caller to have full trust. ]]>
@@ -1326,7 +1326,7 @@ Use to unwrap the return value. > [!NOTE] -> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) +> Starting with the [!INCLUDE[net_v20sp1_long](~/includes/net-v20sp1-long-md.md)], this method can be used to create nonpublic types and members if the caller has been granted with the flag and if the grant set of the assembly that contains the nonpublic types and members is restricted to the caller’s grant set or to a subset thereof. (See [Security Considerations for Reflection](~/docs/framework/reflection-and-codedom/security-considerations-for-reflection.md).) > > To use this functionality, your application should target the [!INCLUDE[net_v35_long](~/includes/net-v35-long-md.md)] or later. @@ -1423,7 +1423,7 @@ Use to unwrap the return value. > [!NOTE] -> This method uses to require the immediate caller to have full trust. +> This method uses to require the immediate caller to have full trust. ]]>
@@ -1624,7 +1624,7 @@ Use the method to unwrap the return value. > [!NOTE] -> This method uses to require the immediate caller to have full trust. +> This method uses to require the immediate caller to have full trust. For information about other exceptions that can be thrown by invoked methods, see the Exceptions section of the and methods. @@ -2000,7 +2000,7 @@ Use the method to unwrap the return value. > [!NOTE] -> This method uses to require the immediate caller to have full trust. +> This method uses to require the immediate caller to have full trust. For information about other exceptions that can be thrown by invoked methods, see the Exceptions section of the and methods. diff --git a/xml/System/AppDomain.xml b/xml/System/AppDomain.xml index 8ad2c21a5379b..aa5211fe29480 100644 --- a/xml/System/AppDomain.xml +++ b/xml/System/AppDomain.xml @@ -2139,7 +2139,7 @@ This method should only be used to define a dynamic assembly in the current application domain. For more information, see the method overload. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. @@ -2265,7 +2265,7 @@ This method should only be used to define a dynamic assembly in the current application domain. For more information, see the method overload. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. @@ -2324,7 +2324,7 @@ This method should only be used to define a dynamic assembly in the current application domain. For more information, see the method overload. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. @@ -2438,7 +2438,7 @@ This method should only be used to define a dynamic assembly in the current application domain. For more information, see the method overload. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. @@ -2504,7 +2504,7 @@ The permission requests specified for `requiredPermissions`, `optionalPermissions`, and `refusedPermissions` are not used unless the dynamic assembly has been saved and reloaded into memory. To specify permission requests for a transient assembly that is never saved to disk, use an overload of the method that specifies evidence as well as requested permissions, and supply an object. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. This method should only be used to define a dynamic assembly in the current application domain. For more information, see the method overload . @@ -2622,7 +2622,7 @@ The permission requests specified for `requiredPermissions`, `optionalPermissions`, and `refusedPermissions` are used only if `evidence` is also supplied, or if the dynamic assembly is saved and reloaded into memory. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. Only fully trusted callers can supply their `evidence` when defining a dynamic . The runtime will map the through the security policy to determine the granted permissions. Partially trusted callers must supply a null `evidence`. If `evidence` is `null`, the runtime copies the permission sets, that is, the current grant and deny sets, from the caller's to the dynamic being defined and marks policy as resolved. @@ -2696,7 +2696,7 @@ The permission requests specified for `requiredPermissions`, `optionalPermissions`, and `refusedPermissions` are not used unless the dynamic assembly has been saved and reloaded into memory. To specify permission requests for a transient assembly that is never saved to disk, use an overload of the method that specifies evidence as well as requested permissions, and supply an object. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you use an overload of the method that specifies evidence and permissions, supply the evidence you want the dynamic assembly to have, and include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. This method should only be used to define a dynamic assembly in the current application domain. For more information, see the method overload. @@ -2767,7 +2767,7 @@ The permission requests specified for `requiredPermissions`, `optionalPermissions`, and `refusedPermissions` are used only if `evidence` is also supplied, or if the dynamic assembly is saved and reloaded into memory. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. Only fully trusted callers can supply their `evidence` when defining a dynamic . The runtime will map the through the security policy to determine the granted permissions. Partially trusted callers must supply a null `evidence`. If `evidence` is `null`, the runtime copies the permission sets, that is, the current grant and deny sets, from the caller's to the dynamic being defined and marks policy as resolved. @@ -2846,7 +2846,7 @@ The permission requests specified for `requiredPermissions`, `optionalPermissions`, and `refusedPermissions` are used only if `evidence` is also supplied, or if the dynamic assembly is saved and reloaded into memory. > [!NOTE] -> During the development of code that emits dynamic assemblies, it is recommended that you include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. +> During the development of code that emits dynamic assemblies, it is recommended that you include in `refusedPermissions`. Including in the `refusedPermissions` parameter ensures that the MSIL is verified. A limitation of this technique is that it also causes to be thrown when used with code that demands full trust. Only fully trusted callers can supply their evidence when defining a dynamic . The runtime will map the through the security policy to determine the granted permissions. Partially trusted callers must supply `null` for the `evidence` parameter. If `evidence` is `null`, the runtime copies the permission sets, that is, the current grant and deny sets, from the caller's to the dynamic being defined and marks policy as resolved. @@ -2929,7 +2929,7 @@ The permission requests specified for the `requiredPermissions`, `optionalPermissions`, and `refusedPermissions` parameters are used only if the `evidence` parameter is also supplied, or if the dynamic assembly is saved and reloaded into memory. > [!NOTE] -> When you develop code that emits dynamic assemblies, we recommend that you include the flag in the `refusedPermissions` parameter. The inclusion of this flag ensures that the Microsoft intermediate language (MSIL) will be verified. This technique will detect the unintentional generation of unverifiable code, which otherwise is very difficult to detect. A limitation of this technique is that it also causes to be thrown when it is used with code that demands full trust. +> When you develop code that emits dynamic assemblies, we recommend that you include the flag in the `refusedPermissions` parameter. The inclusion of this flag ensures that the Microsoft intermediate language (MSIL) will be verified. This technique will detect the unintentional generation of unverifiable code, which otherwise is very difficult to detect. A limitation of this technique is that it also causes to be thrown when it is used with code that demands full trust. Only fully trusted callers can supply evidence when defining a dynamic . The runtime maps the through the security policy to determine the granted permissions. Partially trusted callers must supply `null` for the `evidence` parameter. If `evidence` is `null`, the runtime copies the permission sets (that is, the current grant and deny sets) from the caller's assembly to the dynamic assembly that is being defined, and marks the policy as resolved. @@ -6189,7 +6189,7 @@ ## Other Events for Unhandled Exceptions For certain application models, the event can be preempted by other events if the unhandled exception occurs in the main application thread. - In applications that use Windows Forms, unhandled exceptions in the main application thread cause the event to be raised. If this event is handled, the default behavior is that the unhandled exception does not terminate the application, although the application is left in an unknown state. In that case, the event is not raised. This behavior can be changed by using the application configuration file, or by using the method to change the mode to before the event handler is hooked up. This applies only to the main application thread. The event is raised for unhandled exceptions thrown in other threads. + In applications that use Windows Forms, unhandled exceptions in the main application thread cause the event to be raised. If this event is handled, the default behavior is that the unhandled exception does not terminate the application, although the application is left in an unknown state. In that case, the event is not raised. This behavior can be changed by using the application configuration file, or by using the method to change the mode to before the event handler is hooked up. This applies only to the main application thread. The event is raised for unhandled exceptions thrown in other threads. Starting with Microsoft Visual Studio 2005, the Visual Basic application framework provides another event for unhandled exceptions in the main application thread. See the event. This event has an event arguments object with the same name as the event arguments object used by , but with different properties. In particular, this event arguments object has an property that allows the application to continue running, ignoring the unhandled exception (and leaving the application in an unknown state). In that case, the event is not raised. diff --git a/xml/System/AppDomainSetup.xml b/xml/System/AppDomainSetup.xml index 20748fc32c934..121a4de28d051 100644 --- a/xml/System/AppDomainSetup.xml +++ b/xml/System/AppDomainSetup.xml @@ -786,7 +786,7 @@ (""), to exclude the application directory path — that is, — from the search path for the application, and to search for assemblies only in . + Set this property to any non-null string value, including (""), to exclude the application directory path — that is, — from the search path for the application, and to search for assemblies only in . ]]> diff --git a/xml/System/BitConverter.xml b/xml/System/BitConverter.xml index 10b9e3e3dc3bf..20df146f8beff 100644 --- a/xml/System/BitConverter.xml +++ b/xml/System/BitConverter.xml @@ -1397,7 +1397,7 @@ . + The `length` elements from array position `startIndex` are converted. If `length` equals zero, the method returns . The order of hexadecimal strings returned by the method depends on whether the computer architecture is little-endian or big-endian. diff --git a/xml/System/Boolean.xml b/xml/System/Boolean.xml index 84a6cfbd29211..4519ca9466b6a 100644 --- a/xml/System/Boolean.xml +++ b/xml/System/Boolean.xml @@ -188,9 +188,9 @@ |Enumeration type|Unmanaged format| |----------------------|----------------------| -||A 4-byte integer value, where any nonzero value represents `true` and 0 represents `false`. This is the default format of a field in a structure and of a parameter in platform invoke calls.| -||A 1-byte integer value, where the 1 represents `true` and 0 represents `false`.| -||A 2-byte integer value, where -1 represents `true` and 0 represents `false`. This is the default format of a parameter in COM interop calls.| +||A 4-byte integer value, where any nonzero value represents `true` and 0 represents `false`. This is the default format of a field in a structure and of a parameter in platform invoke calls.| +||A 1-byte integer value, where the 1 represents `true` and 0 represents `false`.| +||A 2-byte integer value, where -1 represents `true` and 0 represents `false`. This is the default format of a parameter in COM interop calls.| ]]> diff --git a/xml/System/Byte.xml b/xml/System/Byte.xml index 180f3ed58db49..dd7bd8ae04ef8 100644 --- a/xml/System/Byte.xml +++ b/xml/System/Byte.xml @@ -566,7 +566,7 @@ |*sign*|An optional positive or negative sign.| |*digits*|A sequence of digits ranging from 0 to 9.| - The `s` parameter is interpreted using the style. In addition to the byte value's decimal digits, only leading and trailing spaces together with a leading sign are allowed. (If the sign is present, it must be a positive sign or the method throws an .) To explicitly define the style elements that can be present in `s`, use either the or the method. + The `s` parameter is interpreted using the style. In addition to the byte value's decimal digits, only leading and trailing spaces together with a leading sign are allowed. (If the sign is present, it must be a positive sign or the method throws an .) To explicitly define the style elements that can be present in `s`, use either the or the method. The `s` parameter is parsed using the formatting information in a object that is initialized for the current system culture. For more information, see . To parse a string using the formatting information of some other culture, use the method. @@ -639,31 +639,31 @@ |Element|Description| |-------------|-----------------| -|*ws*|Optional white space. White space can appear at the beginning of `s` if `style` includes the flag, or at the end of s if style includes the flag.| -|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the current culture. The current culture's currency symbol can appear in `s` if `style` includes the flag.| -|*sign*|An optional positive sign. (The method throws an if a negative sign is present in `s`.) The sign can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| +|*ws*|Optional white space. White space can appear at the beginning of `s` if `style` includes the flag, or at the end of s if style includes the flag.| +|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the current culture. The current culture's currency symbol can appear in `s` if `style` includes the flag.| +|*sign*|An optional positive sign. (The method throws an if a negative sign is present in `s`.) The sign can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| |*digits*|A sequence of digits from 0 through 9.| -|*.*|A culture-specific decimal point symbol. The current culture's decimal point symbol can appear in `s` if `style` includes the flag.| -|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `s` only if `style` includes the flag.| -|*e*|The e or E character, which indicates that the value is represented in exponential notation. The `s` parameter can represent a number in exponential notation if `style` includes the flag.| +|*.*|A culture-specific decimal point symbol. The current culture's decimal point symbol can appear in `s` if `style` includes the flag.| +|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `s` only if `style` includes the flag.| +|*e*|The e or E character, which indicates that the value is represented in exponential notation. The `s` parameter can represent a number in exponential notation if `style` includes the flag.| |*hexdigits*|A sequence of hexadecimal digits from 0 through f, or 0 through F.| - A string with decimal digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be but are not required to be present in this input string. The following table indicates how individual members affect the elements that may be present in `s`. + A string with decimal digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be but are not required to be present in this input string. The following table indicates how individual members affect the elements that may be present in `s`. |Non-composite NumberStyles values|Elements permitted in s in addition to digits| |----------------------------------------|---------------------------------------------------| -||Decimal digits only.| -||The *.* and *fractional_digits* elements. However, *fractional_digits* must consist of only one or more 0 digits or an is thrown.| -||The `s` parameter can also use exponential notation.| -||The *ws* element at the beginning of `s`.| -||The *ws* element at the end of `s`.| -||A positive sign can appear before *digits*.| -||A positive sign can appear after *digits*.| -||Although this flag is supported, the use of parentheses in `s` results in an .| -||Although the group separator symbol can appear in `s`, it can be preceded by only one or more 0 digits.| -||The *$* element.| - - If the flag is used, `s` must be a hexadecimal value without a prefix. For example, "F3" parses successfully, but "0xF3" does not. The only other flags that can be combined with it are and . (The enumeration includes a composite number style, , that includes both white space flags.) +||Decimal digits only.| +||The *.* and *fractional_digits* elements. However, *fractional_digits* must consist of only one or more 0 digits or an is thrown.| +||The `s` parameter can also use exponential notation.| +||The *ws* element at the beginning of `s`.| +||The *ws* element at the end of `s`.| +||A positive sign can appear before *digits*.| +||A positive sign can appear after *digits*.| +||Although this flag is supported, the use of parentheses in `s` results in an .| +||Although the group separator symbol can appear in `s`, it can be preceded by only one or more 0 digits.| +||The *$* element.| + + If the flag is used, `s` must be a hexadecimal value without a prefix. For example, "F3" parses successfully, but "0xF3" does not. The only other flags that can be combined with it are and . (The enumeration includes a composite number style, , that includes both white space flags.) The `s` parameter is parsed using the formatting information in a object that is initialized for the current system culture. To use the formatting information of some other culture, call the overload. @@ -821,31 +821,31 @@ |Element|Description| |-------------|-----------------| -|*ws*|Optional white space. White space can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| -|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the object returned by the method of the `provider` parameter. The currency symbol can appear in `s` if `style` includes the flag.| -|*sign*|An optional positive sign. (The method throws an if a negative sign is present in `s`.) The sign can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| +|*ws*|Optional white space. White space can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| +|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the object returned by the method of the `provider` parameter. The currency symbol can appear in `s` if `style` includes the flag.| +|*sign*|An optional positive sign. (The method throws an if a negative sign is present in `s`.) The sign can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| |*digits*|A sequence of digits from 0 through 9.| -|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture specified by `provider` can appear in `s` if `style` includes the flag.| -|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `s` only if `style` includes the flag.| -|*e*|The e or E character, which indicates that the value is represented in exponential notation. The s parameter can represent a number in exponential notation if `style` includes the flag.| +|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture specified by `provider` can appear in `s` if `style` includes the flag.| +|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `s` only if `style` includes the flag.| +|*e*|The e or E character, which indicates that the value is represented in exponential notation. The s parameter can represent a number in exponential notation if `style` includes the flag.| |*hexdigits*|A sequence of hexadecimal digits from 0 through f, or 0 through F.| - A string with decimal digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be but are not required to be present in this input string. The following table indicates how individual members affect the elements that may be present in `s`. + A string with decimal digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be but are not required to be present in this input string. The following table indicates how individual members affect the elements that may be present in `s`. |Non-composite NumberStyles values|Elements permitted in s in addition to digits| |----------------------------------------|---------------------------------------------------| -||Decimal digits only.| -||The *.* and *fractional_digits* elements. However, *fractional_digits* must consist of only one or more 0 digits or an is thrown.| -||The `s` parameter can also use exponential notation.| -||The *ws* element at the beginning of `s`.| -||The *ws* element at the end of `s`.| -||A positive sign can appear before *digits*.| -||A positive sign can appear after *digits*.| -||Although this flag is supported, the use of parentheses in `s` results in an .| -||Although the group separator symbol can appear in `s`, it can be preceded by only one or more 0 digits.| -||The *$* element.| - - If the flag is used, `s` must be a hexadecimal value without a prefix. For example, "F3" parses successfully, but "0xF3" does not. The only other flags that can be present in `style` are and . (The enumeration has a composite number style, , that includes both white space flags.) +||Decimal digits only.| +||The *.* and *fractional_digits* elements. However, *fractional_digits* must consist of only one or more 0 digits or an is thrown.| +||The `s` parameter can also use exponential notation.| +||The *ws* element at the beginning of `s`.| +||The *ws* element at the end of `s`.| +||A positive sign can appear before *digits*.| +||A positive sign can appear after *digits*.| +||Although this flag is supported, the use of parentheses in `s` results in an .| +||Although the group separator symbol can appear in `s`, it can be preceded by only one or more 0 digits.| +||The *$* element.| + + If the flag is used, `s` must be a hexadecimal value without a prefix. For example, "F3" parses successfully, but "0xF3" does not. The only other flags that can be present in `style` are and . (The enumeration has a composite number style, , that includes both white space flags.) The `provider` parameter is an implementation, such as a or object. The `provider` parameter supplies culture-specific information used in parsing. If `provider` is `null`, the thread current culture is used. @@ -1839,7 +1839,7 @@ , or if it represents a number less than or greater than . + The conversion fails and the method returns `false` if the `s` parameter is not in the correct format, if it is `null` or , or if it represents a number less than or greater than . The method is similar to the method, except that does not throw an exception if the conversion fails. @@ -1935,31 +1935,31 @@ |Element|Description| |-------------|-----------------| -|*ws*|Optional white space. White space can appear at the beginning of `s` if `style` includes the flag, or at the end of s if style includes the flag.| -|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the object returned by the method of the `provider` parameter. The currency symbol can appear in `s` if `style` includes the flag.| -|*sign*|An optional positive sign. (The parse operation fails if a negative sign is present in `s`.) The sign can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| +|*ws*|Optional white space. White space can appear at the beginning of `s` if `style` includes the flag, or at the end of s if style includes the flag.| +|*$*|A culture-specific currency symbol. Its position in the string is defined by the property of the object returned by the method of the `provider` parameter. The currency symbol can appear in `s` if `style` includes the flag.| +|*sign*|An optional positive sign. (The parse operation fails if a negative sign is present in `s`.) The sign can appear at the beginning of `s` if `style` includes the flag, or at the end of `s` if `style` includes the flag.| |*digits*|A sequence of digits from 0 through 9.| -|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture specified by `provider` can appear in `s` if `style` includes the flag.| -|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `s` only if `style` includes the flag.| -|*e*|The e or E character, which indicates that the value is represented in exponential notation. The `s` parameter can represent a number in exponential notation if `style` includes the flag.| +|*.*|A culture-specific decimal point symbol. The decimal point symbol of the culture specified by `provider` can appear in `s` if `style` includes the flag.| +|*fractional_digits*|One or more occurrences of the digit 0. Fractional digits can appear in `s` only if `style` includes the flag.| +|*e*|The e or E character, which indicates that the value is represented in exponential notation. The `s` parameter can represent a number in exponential notation if `style` includes the flag.| |*hexdigits*|A sequence of hexadecimal digits from 0 through f, or 0 through F.| - A string with decimal digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be but are not required to be present in this input string. The following table indicates how individual members affect the elements that may be present in `s`. + A string with decimal digits only (which corresponds to the style) always parses successfully. Most of the remaining members control elements that may be but are not required to be present in this input string. The following table indicates how individual members affect the elements that may be present in `s`. |Non-composite NumberStyles values|Elements permitted in s in addition to digits| |----------------------------------------|---------------------------------------------------| -||Decimal digits only.| -||The *.* and *fractional_digits* elements. However, *fractional_digits* must consist of only one or more 0 digits or the method returns `false`.| -||The `s` parameter can also use exponential notation. If `s` represents a number in exponential notation, it must represent an integer within the range of the data type without a non-zero, fractional component.| -||The *ws* element at the beginning of `s`.| -||The *ws* element at the end of `s`.| -||A positive sign can appear before *digits*.| -||A positive sign can appear after *digits*.| -||Although this flag is supported, the method returns `false` if parentheses are present in `s`.| -||Although the group separator symbol can appear in `s`, it can be preceded by only one or more 0 digits.| -||The *$* element.| - - If the flag is used, `s` must be a hexadecimal value without a prefix. For example, "F3" parses successfully, but "0xF3" does not. The only other flags that can be present in `style` are and . (The enumeration has a composite number style, , that includes both white space flags.) +||Decimal digits only.| +||The *.* and *fractional_digits* elements. However, *fractional_digits* must consist of only one or more 0 digits or the method returns `false`.| +||The `s` parameter can also use exponential notation. If `s` represents a number in exponential notation, it must represent an integer within the range of the data type without a non-zero, fractional component.| +||The *ws* element at the beginning of `s`.| +||The *ws* element at the end of `s`.| +||A positive sign can appear before *digits*.| +||A positive sign can appear after *digits*.| +||Although this flag is supported, the method returns `false` if parentheses are present in `s`.| +||Although the group separator symbol can appear in `s`, it can be preceded by only one or more 0 digits.| +||The *$* element.| + + If the flag is used, `s` must be a hexadecimal value without a prefix. For example, "F3" parses successfully, but "0xF3" does not. The only other flags that can be present in `style` are and . (The enumeration has a composite number style, , that includes both white space flags.) The `provider` parameter is an implementation, such as a object or a object, whose method returns a object. The object provides culture-specific information about the format of `s`. diff --git a/xml/System/Char.xml b/xml/System/Char.xml index 1a6f6d2fa7676..9b58f5d25bb97 100644 --- a/xml/System/Char.xml +++ b/xml/System/Char.xml @@ -75,7 +75,7 @@ ## Characters and character categories - Each Unicode character or valid surrogate pair belongs to a Unicode category. In the .NET Framework, Unicode categories are represented by members of the enumeration and include values such as , , and , for example. + Each Unicode character or valid surrogate pair belongs to a Unicode category. In the .NET Framework, Unicode categories are represented by members of the enumeration and include values such as , , and , for example. To determine the Unicode category of a character, you call the method. For example, the following example calls the to display the Unicode category of each character in a string. @@ -860,7 +860,7 @@ When a managed type, which is represented as a Unicode UTF-16 category. + Control characters are formatting and other non-printing characters, such as ACK, BEL, CR, FF, LF, and VT. The Unicode standard assigns code points from \U0000 to \U001F, \U007F, and from \U0080 to \U009F to control characters. According to the Unicode standard, these values are to be interpreted as control characters unless their use is otherwise defined by an application. Valid control characters are members of the category. ]]> @@ -903,7 +903,7 @@ When a managed type, which is represented as a Unicode UTF-16 category. + Control characters are formatting and other non-printing characters, such as ACK, BEL, CR, FF, LF, and VT. T The Unicode standard assigns code points from \U0000 to \U001F, \U007F, and from \U0080 to \U009F to control characters. According to the Unicode standard, these values are to be interpreted as control characters unless their use is otherwise defined by an application. Valid control characters are members of the category. @@ -959,7 +959,7 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks Character positions in a string are indexed starting from zero. - Control characters are formatting and other non-printing characters, such as ACK, BEL, CR, FF, LF, and VT. The Unicode standard assigns code points from \U0000 to \U001F, \U007F, and from \U0080 to \U009F to control characters. According to the Unicode standard, these values are to be interpreted as control characters unless their use is otherwise defined by an application. Valid control characters are members of the category. + Control characters are formatting and other non-printing characters, such as ACK, BEL, CR, FF, LF, and VT. The Unicode standard assigns code points from \U0000 to \U001F, \U007F, and from \U0080 to \U009F to control characters. According to the Unicode standard, these values are to be interpreted as control characters unless their use is otherwise defined by an application. Valid control characters are members of the category. @@ -992,7 +992,7 @@ When a managed type, which is represented as a Unicode UTF-16 category. + Valid digits are members of the category. ]]> @@ -1037,7 +1037,7 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks This method determines whether a is a radix-10 digit. This contrasts with , which determines whether a `Char` is of any numeric Unicode category. Numbers include characters such as fractions, subscripts, superscripts, Roman numerals, currency numerators, encircled numbers, and script-specific digits. - Valid digits are members of the category. + Valid digits are members of the category. @@ -1095,7 +1095,7 @@ When a managed type, which is represented as a Unicode UTF-16 Character positions in a string are indexed starting from zero. - Valid digits are members of the category. + Valid digits are members of the category. @@ -1242,15 +1242,15 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks This method determines whether a is a member of any category of Unicode letter. Unicode letters include the following: -- Uppercase letters, such as U+0041 (LATIN CAPITAL LETTER A) through U+005A (LATIN CAPITAL LETTER Z), or U+0400 (CYRILLIC CAPITAL LETTER IE WITH GRAVE) through U+042F (CYRILLIC CAPITAL LETTER YA). These characters are members of the category. +- Uppercase letters, such as U+0041 (LATIN CAPITAL LETTER A) through U+005A (LATIN CAPITAL LETTER Z), or U+0400 (CYRILLIC CAPITAL LETTER IE WITH GRAVE) through U+042F (CYRILLIC CAPITAL LETTER YA). These characters are members of the category. -- Lowercase letters, such as U+0061 (LATIN SMALL LETTER A) through U+007A (LATIN SMALL LETTER Z), or U+03AC (GREEK SMALL LETTER ALPHA WITH TONOS) through U+03CE (GREEK SMALL LETTER OMEGA WITH TONOS). These characters are members of the category. +- Lowercase letters, such as U+0061 (LATIN SMALL LETTER A) through U+007A (LATIN SMALL LETTER Z), or U+03AC (GREEK SMALL LETTER ALPHA WITH TONOS) through U+03CE (GREEK SMALL LETTER OMEGA WITH TONOS). These characters are members of the category. -- Title case letters, such as U+01C5 (LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON) or U+1FFC (GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI). These characters are members of the category. +- Title case letters, such as U+01C5 (LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON) or U+1FFC (GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI). These characters are members of the category. -- Modifiers, such as U+02B0 (MODIFIER LETTER SMALL H) through U+02C1 (MODIFIER LETTER REVERSED GLOTTAL STOP), or U+1D2C (MODIFIER LETTER CAPITAL A) through U+1D61 (MODIFIER LETTER SMALL CHI). These characters are members of the category. +- Modifiers, such as U+02B0 (MODIFIER LETTER SMALL H) through U+02C1 (MODIFIER LETTER REVERSED GLOTTAL STOP), or U+1D2C (MODIFIER LETTER CAPITAL A) through U+1D61 (MODIFIER LETTER SMALL CHI). These characters are members of the category. -- Other letters, such as U+05D0 (HEBREW LETTER ALEF) through U+05EA (HEBREW LETTER TAV), U+0621 (ARABIC LETTER HAMZA) through U+063A (ARABIC LETTER GHAIN), or U+4E00 (\) through U+9FC3 (\). These characters are members of the category. +- Other letters, such as U+05D0 (HEBREW LETTER ALEF) through U+05EA (HEBREW LETTER TAV), U+0621 (ARABIC LETTER HAMZA) through U+063A (ARABIC LETTER GHAIN), or U+4E00 (\) through U+9FC3 (\). These characters are members of the category. ]]> @@ -1295,15 +1295,15 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks This method determines whether a is a member of any category of Unicode letter. Unicode letters include the following: -- Uppercase letters, such as U+0041 (LATIN CAPITAL LETTER A) through U+005A (LATIN CAPITAL LETTER Z), or U+0400 (CYRILLIC CAPITAL LETTER IE WITH GRAVE) through U+042F (CYRILLIC CAPITAL LETTER YA). These characters are members of the category. +- Uppercase letters, such as U+0041 (LATIN CAPITAL LETTER A) through U+005A (LATIN CAPITAL LETTER Z), or U+0400 (CYRILLIC CAPITAL LETTER IE WITH GRAVE) through U+042F (CYRILLIC CAPITAL LETTER YA). These characters are members of the category. -- Lowercase letters, such as U+0061 (LATIN SMALL LETTER A) through U+007A (LATIN SMALL LETTER Z), or U+03AC (GREEK SMALL LETTER ALPHA WITH TONOS) through U+03CE (GREEK SMALL LETTER OMEGA WITH TONOS). These characters are members of the category. +- Lowercase letters, such as U+0061 (LATIN SMALL LETTER A) through U+007A (LATIN SMALL LETTER Z), or U+03AC (GREEK SMALL LETTER ALPHA WITH TONOS) through U+03CE (GREEK SMALL LETTER OMEGA WITH TONOS). These characters are members of the category. -- Title case letters, such as U+01C5 (LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON) or U+1FFC (GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI). These characters are members of the category. +- Title case letters, such as U+01C5 (LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON) or U+1FFC (GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI). These characters are members of the category. -- Modifiers, such as U+02B0 (MODIFIER LETTER SMALL H) through U+02C1 (MODIFIER LETTER REVERSED GLOTTAL STOP), or U+1D2C (MODIFIER LETTER CAPITAL A) through U+1D61 (MODIFIER LETTER SMALL CHI). These characters are members of the category. +- Modifiers, such as U+02B0 (MODIFIER LETTER SMALL H) through U+02C1 (MODIFIER LETTER REVERSED GLOTTAL STOP), or U+1D2C (MODIFIER LETTER CAPITAL A) through U+1D61 (MODIFIER LETTER SMALL CHI). These characters are members of the category. -- Other letters, such as U+05D0 (HEBREW LETTER ALEF) through U+05EA (HEBREW LETTER TAV), U+0621 (ARABIC LETTER HAMZA) through U+063A (ARABIC LETTER GHAIN), or U+4E00 (\) through U+9FC3 (\). These characters are members of the category. +- Other letters, such as U+05D0 (HEBREW LETTER ALEF) through U+05EA (HEBREW LETTER TAV), U+0621 (ARABIC LETTER HAMZA) through U+063A (ARABIC LETTER GHAIN), or U+4E00 (\) through U+9FC3 (\). These characters are members of the category. @@ -1361,15 +1361,15 @@ When a managed type, which is represented as a Unicode UTF-16 This method determines whether the character at a specified index position in a string is a member of any category of Unicode letter. Unicode letters include the following: -- Uppercase letters, such as U+0041 (LATIN CAPITAL LETTER A) through U+005A (LATIN CAPITAL LETTER Z), or U+0400 (CYRILLIC CAPITAL LETTER IE WITH GRAVE) through U+042F (CYRILLIC CAPITAL LETTER YA). These characters are members of the category. +- Uppercase letters, such as U+0041 (LATIN CAPITAL LETTER A) through U+005A (LATIN CAPITAL LETTER Z), or U+0400 (CYRILLIC CAPITAL LETTER IE WITH GRAVE) through U+042F (CYRILLIC CAPITAL LETTER YA). These characters are members of the category. -- Lowercase letters, such as U+0061 (LATIN SMALL LETTER A) through U+007A (LATIN SMALL LETTER Z), or U+03AC (GREEK SMALL LETTER ALPHA WITH TONOS) through U+03CE (GREEK SMALL LETTER OMEGA WITH TONOS). These characters are members of the category. +- Lowercase letters, such as U+0061 (LATIN SMALL LETTER A) through U+007A (LATIN SMALL LETTER Z), or U+03AC (GREEK SMALL LETTER ALPHA WITH TONOS) through U+03CE (GREEK SMALL LETTER OMEGA WITH TONOS). These characters are members of the category. -- Title case letters, such as U+01C5 (LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON) or U+1FFC (GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI). These characters are members of the category. +- Title case letters, such as U+01C5 (LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON) or U+1FFC (GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI). These characters are members of the category. -- Modifiers, such as U+02B0 (MODIFIER LETTER SMALL H) through U+02C1 (MODIFIER LETTER REVERSED GLOTTAL STOP), or U+1D2C (MODIFIER LETTER CAPITAL A) through U+1D61 (MODIFIER LETTER SMALL CHI). These characters are members of the category. +- Modifiers, such as U+02B0 (MODIFIER LETTER SMALL H) through U+02C1 (MODIFIER LETTER REVERSED GLOTTAL STOP), or U+1D2C (MODIFIER LETTER CAPITAL A) through U+1D61 (MODIFIER LETTER SMALL CHI). These characters are members of the category. -- Other letters, such as U+05D0 (HEBREW LETTER ALEF) through U+05EA (HEBREW LETTER TAV), U+0621 (ARABIC LETTER HAMZA) through U+063A (ARABIC LETTER GHAIN), or U+4E00 (\) through U+9FC3 (\). These characters are members of the category. +- Other letters, such as U+05D0 (HEBREW LETTER ALEF) through U+05EA (HEBREW LETTER TAV), U+0621 (ARABIC LETTER HAMZA) through U+063A (ARABIC LETTER GHAIN), or U+4E00 (\) through U+9FC3 (\). These characters are members of the category. @@ -1786,7 +1786,7 @@ When a managed type, which is represented as a Unicode UTF-16 > [!IMPORTANT] > The method is not intended to determine whether a string consists of numeric characters (for example, by calling the method for each character in a string). To determine whether a string consists of numeric characters, call one of the overloads of the `TryParse` method (such as or of an integral or floating point type. - Valid numbers are members of the , , or category. + Valid numbers are members of the , , or category. The method assumes that `c` corresponds to a single linguistic character and checks whether that character represents a number. However, some numbers in the Unicode standard are represented by two objects that form a surrogate pair. For example, the Aegean numbering system consists of code points U+10107 through U+10133. The following example uses the method to instantiate a string that represents AEGEAN NUMBER ONE. As the output from the example shows, the method returns `false` if it is passed either a high surrogate or a low surrogate of this character. @@ -1852,7 +1852,7 @@ When a managed type, which is represented as a Unicode UTF-16 > [!IMPORTANT] > The method is not intended to determine whether a string consists of numeric characters (for example, by calling the method for each character in a string). To determine whether a string consists of numeric characters, call one of the overloads of the `TryParse` method (such as or of an integral or floating point type. - Valid numbers are members of the , , or category. + Valid numbers are members of the , , or category. If the object at position `index` is the first character of a valid surrogate pair, the method determines whether the surrogate pair forms a numeric digit. For example, the Aegean numbering system consists of code points U+10107 through U+10133. The following example uses the method to instantiate a string that represents AEGEAN NUMBER ONE. As the output from the example shows, the method returns `true` if it is passed the high surrogate of AEGEAN NUMBER ONE. However, if it is passed the low surrogate, it considers only the category of the low surrogate and returns `false`. @@ -2105,14 +2105,14 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks The Unicode standard recognizes three subcategories of separators: -- Space separators (the category), which includes characters such as \u0020. +- Space separators (the category), which includes characters such as \u0020. -- Line separators (the category), which includes \u2028. +- Line separators (the category), which includes \u2028. -- Paragraph separators (the category), which includes \u2029. +- Paragraph separators (the category), which includes \u2029. > [!NOTE] -> The Unicode standard classifies the characters \u000A (LF), \u000C (FF), and \u000D (CR) as control characters (members of the category), not as separator characters. +> The Unicode standard classifies the characters \u000A (LF), \u000C (FF), and \u000D (CR) as control characters (members of the category), not as separator characters. ]]> @@ -2157,14 +2157,14 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks The Unicode standard recognizes three subcategories of separators: -- Space separators (the category), which includes characters such as \u0020. +- Space separators (the category), which includes characters such as \u0020. -- Line separators (the category), which includes \u2028. +- Line separators (the category), which includes \u2028. -- Paragraph separators (the category), which includes \u2029. +- Paragraph separators (the category), which includes \u2029. > [!NOTE] -> The Unicode standard classifies the characters \u000A (LF), \u000C (FF), and \u000D (CR) as control characters (members of the category), not as separator characters. +> The Unicode standard classifies the characters \u000A (LF), \u000C (FF), and \u000D (CR) as control characters (members of the category), not as separator characters. @@ -2222,14 +2222,14 @@ When a managed type, which is represented as a Unicode UTF-16 The Unicode standard recognizes three subcategories of separators: -- Space separators (the category), which includes characters such as \u0020. +- Space separators (the category), which includes characters such as \u0020. -- Line separators (the category), which includes \u2028. +- Line separators (the category), which includes \u2028. -- Paragraph separators (the category), which includes \u2029. +- Paragraph separators (the category), which includes \u2029. > [!NOTE] -> The Unicode standard classifies the characters \u000A (LF), \u000C (FF), and \u000D (CR) as control characters (members of the category), not as separator characters. +> The Unicode standard classifies the characters \u000A (LF), \u000C (FF), and \u000D (CR) as control characters (members of the category), not as separator characters. @@ -2285,7 +2285,7 @@ When a managed type, which is represented as a Unicode UTF-16 object with a UTF-16 code unit in the range from U+D800 to U+DFFF. Each character with a code unit in this range belongs to the category. The individual surrogate code unit has no interpretation of its own, but has meaning only when used as part of a surrogate pair. For more information about surrogate pairs, see the Unicode Standard at the [Unicode home page](http://go.microsoft.com/fwlink/?linkid=37123). + A surrogate is a object with a UTF-16 code unit in the range from U+D800 to U+DFFF. Each character with a code unit in this range belongs to the category. The individual surrogate code unit has no interpretation of its own, but has meaning only when used as part of a surrogate pair. For more information about surrogate pairs, see the Unicode Standard at the [Unicode home page](http://go.microsoft.com/fwlink/?linkid=37123). @@ -2341,7 +2341,7 @@ When a managed type, which is represented as a Unicode UTF-16 ## Remarks Character positions in a string are indexed starting from zero. - A surrogate is a object with a UTF-16 code unit in the range from U+D800 to U+DFFF. Each character with a code unit in this range belongs to the category. The individual surrogate code unit has no interpretation of its own, but has meaning only when used as part of a surrogate pair. For more information about surrogate pairs, see the Unicode Standard at the [Unicode home page](http://go.microsoft.com/fwlink/?linkid=37123). + A surrogate is a object with a UTF-16 code unit in the range from U+D800 to U+DFFF. Each character with a code unit in this range belongs to the category. The individual surrogate code unit has no interpretation of its own, but has meaning only when used as part of a surrogate pair. For more information about surrogate pairs, see the Unicode Standard at the [Unicode home page](http://go.microsoft.com/fwlink/?linkid=37123). diff --git a/xml/System/Console.xml b/xml/System/Console.xml index 2f19783accf43..1ca88b51d3a82 100644 --- a/xml/System/Console.xml +++ b/xml/System/Console.xml @@ -212,7 +212,7 @@ [!code-csharp[System.Console.BackgroundColor#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.console.backgroundcolor/cs/backgroundcolor1.cs#1)] [!code-vb[System.Console.BackgroundColor#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.console.backgroundcolor/vb/backgroundcolor1.vb#1)] - A get operation for a Windows-based application, in which a console does not exist, returns . + A get operation for a Windows-based application, in which a console does not exist, returns . @@ -485,7 +485,7 @@ When the user presses either Ctrl+C or Ctrl+Break, the event is fired and the application's event handler is executed. The event handler is passed a object that has two useful properties: -- , which allows you to determine whether the handler was invoked as a result of the user pressing Ctrl+C (the property value is ) or Ctrl+Break (the property value is ). +- , which allows you to determine whether the handler was invoked as a result of the user pressing Ctrl+C (the property value is ) or Ctrl+Break (the property value is ). - , which allows you to determine how to your application should respond to the user pressing Ctrl+C or Ctrl+Break. By default, the property is `false`, which causes program execution to terminate when the event handler exits. Changing its property to `true` specifies that the application should continue to execute. diff --git a/xml/System/ConsoleSpecialKey.xml b/xml/System/ConsoleSpecialKey.xml index 1374239feead5..80b82fadd95a9 100644 --- a/xml/System/ConsoleSpecialKey.xml +++ b/xml/System/ConsoleSpecialKey.xml @@ -27,7 +27,7 @@ ## Remarks The property returns the enumeration type. - Simultaneously pressing certain key combinations signals the operating system to interrupt the currently running process. The two valid key combinations are plus BREAK (CTRL+BREAK) and plus (CTRL+C). + Simultaneously pressing certain key combinations signals the operating system to interrupt the currently running process. The two valid key combinations are plus BREAK (CTRL+BREAK) and plus (CTRL+C). diff --git a/xml/System/Convert.xml b/xml/System/Convert.xml index 59189d5b8fa61..6c63f1f553828 100644 --- a/xml/System/Convert.xml +++ b/xml/System/Convert.xml @@ -758,13 +758,13 @@ method tests whether the `value` parameter is equal to . It is equivalent to the following code: + The method tests whether the `value` parameter is equal to . It is equivalent to the following code: [!code-csharp[System.Convert.IsDBNull#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.Convert.IsDBNull/cs/Form1.cs#1)] [!code-vb[System.Convert.IsDBNull#1](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Convert.IsDBNull/vb/Form1.vb#1)] > [!NOTE] -> is used to indicate a value that is missing. It is not equivalent to `null` or to . Therefore, code such as `Convert.IsDBNull(null)` in C# or `Convert.IsDBNull(Nothing)` in Visual Basic returns`false`. +> is used to indicate a value that is missing. It is not equivalent to `null` or to . Therefore, code such as `Convert.IsDBNull(null)` in C# or `Convert.IsDBNull(Nothing)` in Visual Basic returns`false`. @@ -1061,7 +1061,7 @@ ## Examples - The following example calls the with a argument to insert line breaks in the string that is produced by encoding a 100-element byte array. + The following example calls the with a argument to insert line breaks in the string that is produced by encoding a 100-element byte array. [!code-csharp[System.Convert.ToBase64String#3](~/samples/snippets/csharp/VS_Snippets_CLR_System/System.Convert.ToBase64String/cs/ToBase64String3.cs#3)] [!code-vb[System.Convert.ToBase64String#3](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/System.Convert.ToBase64String/vb/ToBase64String3.vb#3)] @@ -1792,7 +1792,7 @@ , a constant whose value is `True`, , a constant whose value is `False`, or it must be `null`. In comparing `value` with and , the method ignores case as well as leading and trailing white space. + For a successful conversion to occur, the `value` parameter must equal either , a constant whose value is `True`, , a constant whose value is `False`, or it must be `null`. In comparing `value` with and , the method ignores case as well as leading and trailing white space. If you prefer not to handle an exception if the conversion fails, you can call the method instead. It returns a value that indicates whether the conversion succeeded or failed. @@ -7186,7 +7186,7 @@ ## Remarks If `fromBase` is 16, you can prefix the number specified by the `value` parameter with "0x" or "0X". - Because the negative sign is not supported for non-base 10 numeric representations, the method assumes that negative numbers use two’s complement representation. In other words, the method always interprets the highest-order binary bit of an integer (bit 15) as its sign bit. As a result, it is possible to write code in which a non-base 10 number that is out of the range of the data type is converted to an value without the method throwing an exception. The following example increments by one, converts the resulting number to its hexadecimal string representation, and then calls the method. Instead of throwing an exception, the method displays the message, "0x8000 converts to -32768." + Because the negative sign is not supported for non-base 10 numeric representations, the method assumes that negative numbers use two’s complement representation. In other words, the method always interprets the highest-order binary bit of an integer (bit 15) as its sign bit. As a result, it is possible to write code in which a non-base 10 number that is out of the range of the data type is converted to an value without the method throwing an exception. The following example increments by one, converts the resulting number to its hexadecimal string representation, and then calls the method. Instead of throwing an exception, the method displays the message, "0x8000 converts to -32768." [!code-csharp[System.Convert.BaseConversion#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.Convert.BaseConversion/cs/Conversion.cs#5)] [!code-vb[System.Convert.BaseConversion#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Convert.BaseConversion/vb/Conversion.vb#5)] @@ -8138,7 +8138,7 @@ ## Remarks If `fromBase` is 16, you can prefix the number specified by the `value` parameter with "0x" or "0X". - Because the negative sign is not supported for non-base 10 numeric representations, the method assumes that negative numbers use two’s complement representation. In other words, the method always interprets the highest-order binary bit of an integer (bit 31) as its sign bit. As a result, it is possible to write code in which a non-base 10 number that is out of the range of the data type is converted to an value without the method throwing an exception. The following example increments by one, converts the resulting number to its hexadecimal string representation, and then calls the method. Instead of throwing an exception, the method displays the message, "0x80000000 converts to -2147483648." + Because the negative sign is not supported for non-base 10 numeric representations, the method assumes that negative numbers use two’s complement representation. In other words, the method always interprets the highest-order binary bit of an integer (bit 31) as its sign bit. As a result, it is possible to write code in which a non-base 10 number that is out of the range of the data type is converted to an value without the method throwing an exception. The following example increments by one, converts the resulting number to its hexadecimal string representation, and then calls the method. Instead of throwing an exception, the method displays the message, "0x80000000 converts to -2147483648." [!code-cpp[System.Convert.BaseConversion#1](~/samples/snippets/cpp/VS_Snippets_CLR_System/system.Convert.BaseConversion/cpp/toint_str_int32.cpp#1)] [!code-csharp[System.Convert.BaseConversion#1](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.Convert.BaseConversion/cs/Conversion.cs#1)] diff --git a/xml/System/DateTime.xml b/xml/System/DateTime.xml index a344ef0d8c7ea..1944ac9dd8d94 100644 --- a/xml/System/DateTime.xml +++ b/xml/System/DateTime.xml @@ -168,7 +168,7 @@ UTC time is suitable for calculations, comparisons, and storing dates and time in files. Local time is appropriate for display in user interfaces of desktop applications. Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones. - If the property of a object is , it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone. + If the property of a object is , it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone. ## DateTime operations @@ -308,7 +308,7 @@ To restore the persisted values without data loss, do the following: -1. Parse the data by calling the or overload. Specify as the `provider` argument, and use the same standard format string you used for the `format` argument during conversion. Include the value in the `styles` argument. +1. Parse the data by calling the or overload. Specify as the `provider` argument, and use the same standard format string you used for the `format` argument during conversion. Include the value in the `styles` argument. 2. If the values represent single moments in time, call the method to convert the parsed date from UTC to local time. @@ -529,7 +529,7 @@ ## Remarks This constructor interprets `year`, `month`, and `day` as a year, month, and day in the Gregorian calendar. To instantiate a value by using the year, month, and day in another calendar, call the constructor. - The time of day for the resulting is midnight (00:00:00). The property is initialized to . + The time of day for the resulting is midnight (00:00:00). The property is initialized to . @@ -2485,7 +2485,7 @@ The `fileTime` parameter specifies a file time expressed in 100-nanosecond ticks. - Starting with the .NET Framework version 2.0, the return value is a whose property is . + Starting with the .NET Framework version 2.0, the return value is a whose property is . @@ -4130,10 +4130,10 @@ juillet 2009 For additional guidance on choosing an overload, see [Which method do I call?](#Tasks) `DateTime.Parse(String s)` - For the conversion, uses the formatting conventions of the current thread culture and interprets the string based on the style flag ([example](#Parse1_Example)). + For the conversion, uses the formatting conventions of the current thread culture and interprets the string based on the style flag ([example](#Parse1_Example)). `DateTime.Parse(String s, IFormatProvider provider)` - For the conversion, uses the formatting conventions of a specified culture and interprets the string based on the style flag ([example](#Parse2_Example)). + For the conversion, uses the formatting conventions of a specified culture and interprets the string based on the style flag ([example](#Parse2_Example)). `DateTime.Parse(String s, IFormatProvider provider, DateTypeStyles styles)` For the conversion, uses the formatting conventions of a specified culture and interprets the string based on specified style flags ([example](#Parse3_Example)). @@ -4146,27 +4146,27 @@ juillet 2009 |---------------|----------|-----------------| |`s`||A string that contains the date and time to convert. See [The string to parse](#StringToParse).

Default value: None (parameter is used by all overloads)| |`provider`||An object that supplies culture-specific formatting information about `s`. See [Parsing and cultural conventions](#Culture).

Default value: | -|`styles`||A bitwise combination of the enumeration values that indicates the style elements that can be present in `s` for the parse operation to succeed, and that defines how to interpret the parsed date in relation to the current time zone or the current date. A typical value to specify is . See [Parsing and style elements](#Styles).

Default value: | +|`styles`||A bitwise combination of the enumeration values that indicates the style elements that can be present in `s` for the parse operation to succeed, and that defines how to interpret the parsed date in relation to the current time zone or the current date. A typical value to specify is . See [Parsing and style elements](#Styles).

Default value: | ## Return value Type: An object that is equivalent to the date and time contained in `s`. - Generally, the method returns a object whose property is . However, the method may also perform time zone conversion and set the value of the property differently, depending on the values of the `s` and `styles` parameters: + Generally, the method returns a object whose property is . However, the method may also perform time zone conversion and set the value of the property differently, depending on the values of the `s` and `styles` parameters: |If|Time zone conversion|Kind property| |--------|--------------------------|-------------------| -|`s` contains time zone information.|The date and time is converted to the time in the local time zone.|| -|`s` contains time zone information, and `styles` includes the flag.|The date and time is converted to Coordinated Universal Time (UTC).|| -|`s` contains the Z or GMT time zone designator, and `styles` includes the flag.|The date and time are interpreted as UTC.|| +|`s` contains time zone information.|The date and time is converted to the time in the local time zone.|| +|`s` contains time zone information, and `styles` includes the flag.|The date and time is converted to Coordinated Universal Time (UTC).|| +|`s` contains the Z or GMT time zone designator, and `styles` includes the flag.|The date and time are interpreted as UTC.|| The following example converts date strings that contain time zone information to the time in the local time zone: [!code-csharp[System.DateTime.Parse#2](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTime.Parse/cs/Parse2.cs#2)] [!code-vb[System.DateTime.Parse#2](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTime.Parse/vb/Parse2.vb#2)] - You can also preserve the value of a date and time's property during a formatting and parsing operation by using the flag. The following example illustrates how the flag affects the parsing operation on values that are converted to strings by using the "o", "r", or "u" format specifier. + You can also preserve the value of a date and time's property during a formatting and parsing operation by using the flag. The following example illustrates how the flag affects the parsing operation on values that are converted to strings by using the "o", "r", or "u" format specifier. [!code-csharp[System.DateTime.Parse#5](~/samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTime.Parse/cs/Parse5.cs#5)] [!code-vb[System.DateTime.Parse#5](~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTime.Parse/vb/Parse5.vb#5)] @@ -4190,7 +4190,7 @@ An object that is equivalent to the date and time contained in `s`. |Parse a date and time string with special style elements (such as white space or no white space).| overload| |Parse a date and time string and perform a conversion to UTC or local time.| overload| |Parse a date and time string without handling exceptions.| method| -|Restore (round-trip) a date and time value created by a formatting operation.|Pass the "o" or "r" standard format string to the method, and call the overload with | +|Restore (round-trip) a date and time value created by a formatting operation.|Pass the "o" or "r" standard format string to the method, and call the overload with | |Parse a date and time string in a fixed format across machine (and possibly cultural) boundaries.| or method| @@ -4206,7 +4206,7 @@ An object that is equivalent to the date and time contained in `s`. - A string with a date but no time component. If the time component is absent, the method assumes 12:00 midnight. If the date component has a two-digit year, it is converted to a year based on the of the current culture's current calendar or the specified culture's current calendar (if you use an overload with a non-null `provider` argument). -- A string with a time but no date component. The method assumes the current date unless you call the overload and include in the `styles` parameter, in which case the method assumes January 1, 0001. +- A string with a time but no date component. The method assumes the current date unless you call the overload and include in the `styles` parameter, in which case the method assumes January 1, 0001. - A string that includes time zone information and conforms to ISO 8601. In the following examples, the first string designates Coordinated Universal Time (UTC), and the second string designates the time in a time zone that's seven hours earlier than UTC: @@ -4260,15 +4260,15 @@ An object that is equivalent to the date and time contained in `s`. |DateTimeStyles member|Effect on conversion| |---------------------------|--------------------------| -||Parses `s` and, if necessary, converts it to UTC, as follows:

- If `s` includes a time zone offset, or if `s` contains no time zone information but `styles` includes the flag, the method parses the string, calls to convert the returned value to UTC, and sets the property to .
- If `s` indicates that it represents UTC, or if `s` does not contain time zone information but `styles` includes the flag, the method parses the string, performs no time zone conversion on the returned value, and sets the property to .
- In all other cases, the flag has no effect.| +||Parses `s` and, if necessary, converts it to UTC, as follows:

- If `s` includes a time zone offset, or if `s` contains no time zone information but `styles` includes the flag, the method parses the string, calls to convert the returned value to UTC, and sets the property to .
- If `s` indicates that it represents UTC, or if `s` does not contain time zone information but `styles` includes the flag, the method parses the string, performs no time zone conversion on the returned value, and sets the property to .
- In all other cases, the flag has no effect.| ||This value is ignored. Inner white space is always permitted in the date and time elements of `s`.| ||This value is ignored. Leading white space is always permitted in the date and time elements of `s`.| ||This value is ignored. Trailing white space is always permitted in the date and time elements of `s`.| ||Specifies that `s` may contain leading, inner, and trailing white spaces. This is the default behavior. It cannot be overridden by supplying a more restrictive enumeration value such as .| -||Specifies that if `s` lacks any time zone information, local time is assumed. Unless the flag is present, the property of the returned value is set to .| -||Specifies that if `s` lacks any time zone information, UTC is assumed. Unless the flag is present, the method converts the returned value from UTC to local time and sets its property to .| +||Specifies that if `s` lacks any time zone information, local time is assumed. Unless the flag is present, the property of the returned value is set to .| +||Specifies that if `s` lacks any time zone information, UTC is assumed. Unless the flag is present, the method converts the returned value from UTC to local time and sets its property to .| ||Although valid, this value is ignored.| -||For strings that contain time zone information, tries to prevent the conversion of a date and time string to a value that represents a local time with its property set to . Typically, such a string is created by calling the method and by using the "o", "r", or "u" standard format specifier.| +||For strings that contain time zone information, tries to prevent the conversion of a date and time string to a value that represents a local time with its property set to . Typically, such a string is created by calling the method and by using the "o", "r", or "u" standard format specifier.| ## DateTime.Parse(String) example @@ -4503,7 +4503,7 @@ An object that is equivalent to the date and time contained in `s`. ## Remarks The method parses the string representation of a date, which must be in the format defined by the `format` parameter. It also requires that the \ and \