From b35c72eadf9b2eb89602d625a066455672a8beed Mon Sep 17 00:00:00 2001 From: alexwolfmsft <93200798+alexwolfmsft@users.noreply.github.com> Date: Fri, 22 Aug 2025 08:54:59 -0400 Subject: [PATCH 01/10] Add instructions for configuring .NET Aspire (#48058) * Add instructions for configuring .NET Aspire --- .../includes/ai-templates-github-models.md | 51 ++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/docs/ai/quickstarts/includes/ai-templates-github-models.md b/docs/ai/quickstarts/includes/ai-templates-github-models.md index 87a1f02d58891..2baf9cf885d35 100644 --- a/docs/ai/quickstarts/includes/ai-templates-github-models.md +++ b/docs/ai/quickstarts/includes/ai-templates-github-models.md @@ -89,25 +89,60 @@ To authenticate to GitHub models from your code, you'll need to [create a GitHub ## Configure the app -The **AI Chat Web App** app is almost ready to go as soon as it's created. However, you need to configure the app to use the personal access token you set up for GitHub Models. By default, the app template searches for this value in the project's local .NET user secrets. You can manage user secrets using either the Visual Studio UI or the .NET CLI. +The **AI Chat Web App** is almost ready to go as soon as it's created. However, you need to configure the app to use the personal access token you set up for GitHub Models. By default, the app template searches for this value in the project's local .NET user secrets. You can manage user secrets using either the Visual Studio UI or the .NET CLI. -# [Visual Studio](#tab/configure-visual-studio) +> [!NOTE] +> If you enabled .NET Aspire for your app, skip to the [.NET Aspire configuration](#net-aspire-configuration) section. + +## [Visual Studio](#tab/configure-visual-studio) -1. In Visual Studio, right-click on your project in the Solution Explorer and select **Manage User Secrets**. This opens a `secrets.json` file where you can store your API keys without them being tracked in source control. +1. Right-click on your project in the Solution Explorer and select **Manage User Secrets**. This opens a `secrets.json` file where you can store your API keys without them being tracked in source control. 2. Add the following key and value: ```json { - "GitHubModels:Token": "" + "GitHubModels:Token": "" } ``` -# [.NET CLI](#tab/configure-dotnet-cli) +## [.NET CLI](#tab/configure-dotnet-cli) -```dotnetcli -dotnet user-secrets set GitHubModels:Token -``` +1. Open a terminal window set to the root of your project. + +1. Run the `dotnet user-secrets set` command to set the user secret: + + ```dotnetcli + dotnet user-secrets set GitHubModels:Token + ``` + +--- + +### .NET Aspire configuration + +To use the **AI Chat Web App** template with .NET Aspire orchestration, add the following configurations: + +#### [Visual Studio](#tab/configure-visual-studio-aspire) + +1. Right-click on your `*.AppHost` project in the Solution Explorer and select **Manage User Secrets**. This opens a `secrets.json` file where you can store your API keys without them being tracked in source control. + +2. Add the following key and value: + + ```json + { + "ConnectionStrings:openai": "Endpoint=https://models.inference.ai.azure.com;Key=" + } + ``` + +#### [.NET CLI](#tab/configure-dotnet-cli-aspire) + +1. Open a terminal window set to the root of your `*.AppHost` project. + +1. Run the `dotnet user-secrets set` command to set the user secret: + + ```dotnetcli + dotnet user-secrets set ConnectionStrings:openai "Endpoint=https://models.inference.ai.azure.com;Key=" + ``` --- From 621b77968838eeed6b6882b8953f03f9e07e7af5 Mon Sep 17 00:00:00 2001 From: Stuart Mosquera Date: Fri, 22 Aug 2025 11:35:26 -0300 Subject: [PATCH 02/10] add links that reference the 'Explore indexes and ranges' article (#48065) * add links that reference the 'Explore indexes and ranges' article * remove unnecessary links * add more links --- docs/csharp/how-to/parse-strings-using-split.md | 2 ++ docs/csharp/language-reference/builtin-types/arrays.md | 2 ++ docs/csharp/language-reference/builtin-types/collections.md | 2 ++ docs/csharp/programming-guide/strings/index.md | 2 ++ docs/csharp/tour-of-csharp/overview.md | 2 ++ docs/csharp/tour-of-csharp/tutorials/list-collection.md | 2 ++ 6 files changed, 12 insertions(+) diff --git a/docs/csharp/how-to/parse-strings-using-split.md b/docs/csharp/how-to/parse-strings-using-split.md index 72c31840f87d6..431967e4344e1 100644 --- a/docs/csharp/how-to/parse-strings-using-split.md +++ b/docs/csharp/how-to/parse-strings-using-split.md @@ -38,6 +38,8 @@ The has many overloads. The remaining examples use different overloads to show each of these behaviors. +For more information about indices, see the [Explore indexes and ranges](../tutorials/ranges-indexes.md) article. + ## Specify multiple separators can use multiple separator characters. The following example uses spaces, commas, periods, colons, and tabs as separating characters, which are passed to in an array. The loop at the bottom of the code displays each of the words in the returned array. diff --git a/docs/csharp/language-reference/builtin-types/arrays.md b/docs/csharp/language-reference/builtin-types/arrays.md index 5528172db6afd..cf2b8ad47917e 100644 --- a/docs/csharp/language-reference/builtin-types/arrays.md +++ b/docs/csharp/language-reference/builtin-types/arrays.md @@ -77,6 +77,8 @@ A *single-dimensional array* is a sequence of like elements. You access an eleme The first declaration declares an uninitialized array of five integers, from `array[0]` to `array[4]`. The elements of the array are initialized to the [default value](default-values.md) of the element type, `0` for integers. The second declaration declares an array of strings and initializes all seven values of that array. A series of `Console.WriteLine` statements prints all the elements of the `weekDay` array. For single-dimensional arrays, the `foreach` statement processes elements in increasing index order, starting with index 0 and ending with index `Length - 1`. +For more information about indices, see the [Explore indexes and ranges](../../tutorials/ranges-indexes.md) article. + ### Pass single-dimensional arrays as arguments You can pass an initialized single-dimensional array to a method. In the following example, an array of strings is initialized and passed as an argument to a `DisplayArray` method for strings. The method displays the elements of the array. Next, the `ChangeArray` method reverses the array elements, and then the `ChangeArrayElements` method modifies the first three elements of the array. After each method returns, the `DisplayArray` method shows that passing an array by value doesn't prevent changes to the array elements. diff --git a/docs/csharp/language-reference/builtin-types/collections.md b/docs/csharp/language-reference/builtin-types/collections.md index b191306fa76f4..09180720ae441 100644 --- a/docs/csharp/language-reference/builtin-types/collections.md +++ b/docs/csharp/language-reference/builtin-types/collections.md @@ -42,6 +42,8 @@ For the type of elements in the , you :::code language="csharp" source="./snippets/shared/Collections.cs" id="SnippetCustomList"::: +For more information about indices, see the [Explore indexes and ranges](../../tutorials/ranges-indexes.md) article. + ## Key/value pair collections These examples use the class. It's the most common dictionary collection. A dictionary collection enables you to access elements in the collection by using the key of each element. Each addition to the dictionary consists of a value and its associated key. diff --git a/docs/csharp/programming-guide/strings/index.md b/docs/csharp/programming-guide/strings/index.md index 26bd10874d165..c19bb5d57519a 100644 --- a/docs/csharp/programming-guide/strings/index.md +++ b/docs/csharp/programming-guide/strings/index.md @@ -150,6 +150,8 @@ If the methods don't provide the functionality that you mus :::code language="csharp" source="./snippets/StringCharacters.cs" id="AccessChars"::: +For more information about indices, see the [Explore indexes and ranges](../../tutorials/ranges-indexes.md) article. + ## Null strings and empty strings An empty string is an instance of a object that contains zero characters. Empty strings are used often in various programming scenarios to represent a blank text field. You can call methods on empty strings because they're valid objects. Empty strings are initialized as follows: diff --git a/docs/csharp/tour-of-csharp/overview.md b/docs/csharp/tour-of-csharp/overview.md index 582c430ef2d1f..d72962c4763d7 100644 --- a/docs/csharp/tour-of-csharp/overview.md +++ b/docs/csharp/tour-of-csharp/overview.md @@ -88,6 +88,8 @@ You can use *index* and *range* expressions to retrieve one or more elements fro The `^` index indicates *from the end* rather than from the start. The `^0` element is one past the end of the collection, so `^1` is the last element. The `..` in a range expression denotes the range of elements to include. The range starts with the first index and includes all elements up to, but not including, the element at the last index. +For more information about index and range expressions, see the [Explore indexes and ranges](../tutorials/ranges-indexes.md) article. + [Language integrated query (LINQ)](../linq/index.md) provides a common pattern-based syntax to query or transform any collection of data. LINQ unifies the syntax for querying in-memory collections, structured data like XML or JSON, database storage, and even cloud based data APIs. You learn one set of syntax and you can search and manipulate data regardless of its storage. The following query finds all students whose grade point average is greater than 3.5: :::code language="csharp" source="./snippets/shared/LinqExample.cs" id="LinqExampleQuery"::: diff --git a/docs/csharp/tour-of-csharp/tutorials/list-collection.md b/docs/csharp/tour-of-csharp/tutorials/list-collection.md index 6a0c3231398ed..74a6388cccb25 100644 --- a/docs/csharp/tour-of-csharp/tutorials/list-collection.md +++ b/docs/csharp/tour-of-csharp/tutorials/list-collection.md @@ -45,6 +45,8 @@ You're not allowed to access past the end of the list. You can check how long th Select **Run** again to see the results. In C#, indices start at 0, so the largest valid index is one less than the number of items in the list. +For more information about indices, see the [Explore indexes and ranges](../../tutorials/ranges-indexes.md) article. + ## Search and sort lists Our samples use relatively small lists, but your applications might often create lists with many more elements, sometimes numbering in the thousands. To find elements in these larger collections, you need to search the list for different items. The method searches for an item and returns the index of the item. If the item isn't in the list, `IndexOf` returns `-1`. Try it to see how it works. Add the following code after what you wrote so far: From 54aa835f317e384f17d9adf8aefb730cf5e4c864 Mon Sep 17 00:00:00 2001 From: Adit Sheth Date: Fri, 22 Aug 2025 07:37:31 -0700 Subject: [PATCH 03/10] Add missing links for namespace aliases and extern alias in C# namespaces guide (#48060) * Fixed bug 48043. * Update docs/csharp/fundamentals/types/namespaces.md --------- Co-authored-by: Adit Sheth Co-authored-by: Bill Wagner --- docs/csharp/fundamentals/types/namespaces.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/csharp/fundamentals/types/namespaces.md b/docs/csharp/fundamentals/types/namespaces.md index 0562f4b721d66..3300b2a2a6057 100644 --- a/docs/csharp/fundamentals/types/namespaces.md +++ b/docs/csharp/fundamentals/types/namespaces.md @@ -18,7 +18,10 @@ Namespaces are heavily used in C# programming in two ways. First, .NET uses name :::code language="csharp" source="snippets/namespaces/Program.cs" ID="Snippet23"::: -For more information, see the [using Directive](../../language-reference/keywords/using-directive.md). +For more information, see the [using directive](../../language-reference/keywords/using-directive.md). + +You can also create an **alias** for a namespace or type using the [using alias directive](../../language-reference/keywords/using-directive.md#the-using-alias). +In more advanced scenarios, you can reference multiple assemblies with the same namespaces or types by using the [extern alias](../../language-reference/keywords/extern-alias.md) feature. [!INCLUDE [csharp10-templates](../../../../includes/csharp10-templates.md)] From 3682fd5a969f7e785e3d9a8aa66cca329b566bb6 Mon Sep 17 00:00:00 2001 From: Randa Zraik Date: Fri, 22 Aug 2025 20:00:25 +0300 Subject: [PATCH 04/10] Fix broken links in AI docs (#48070) --- docs/ai/includes/vector-databases.md | 2 +- docs/ai/quickstarts/build-vector-search-app.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ai/includes/vector-databases.md b/docs/ai/includes/vector-databases.md index 6cd91ac5dcc61..c0d5b65daeb4a 100644 --- a/docs/ai/includes/vector-databases.md +++ b/docs/ai/includes/vector-databases.md @@ -24,6 +24,6 @@ Semantic Kernel provides connectors for the following vector databases and servi | Postgres | [Microsoft.SemanticKernel.Connectors.Postgres](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Postgres) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | | Qdrant | [Microsoft.SemanticKernel.Connectors.Qdrant](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Qdrant) | [Qdrant.Client](https://www.nuget.org/packages/Qdrant.Client) | | Redis | [Microsoft.SemanticKernel.Connectors.Redis](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Redis) | [StackExchange.Redis](https://www.nuget.org/packages/StackExchange.Redis) | -| Weaviate | [Microsoft.SemanticKernel.Connectors.Weaviate](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Weaviate) | [REST API](https://weaviate.io/developers/weaviate/api/rest) | +| Weaviate | [Microsoft.SemanticKernel.Connectors.Weaviate](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Weaviate) | [REST API](https://docs.weaviate.io/weaviate/api/rest) | To discover .NET SDK and API support, visit the documentation for each respective service. diff --git a/docs/ai/quickstarts/build-vector-search-app.md b/docs/ai/quickstarts/build-vector-search-app.md index fc328d07beadb..efc67eccf67b4 100644 --- a/docs/ai/quickstarts/build-vector-search-app.md +++ b/docs/ai/quickstarts/build-vector-search-app.md @@ -80,7 +80,7 @@ Complete the following steps to create a .NET console app that can: - [`Azure.Identity`](https://www.nuget.org/packages/Azure.Identity) provides [`Microsoft Entra ID`](/entra/fundamentals/whatis) token authentication support across the Azure SDK using classes such as `DefaultAzureCredential`. - [`Azure.AI.OpenAI`](https://www.nuget.org/packages/Azure.AI.OpenAI) is the official package for using OpenAI's .NET library with the Azure OpenAI Service. - - [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.AI) enables Create-Read-Update-Delete (CRUD) and search operations on vector stores. + - [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.VectorData.Abstractions) enables Create-Read-Update-Delete (CRUD) and search operations on vector stores. - [`Microsoft.SemanticKernel.Connectors.InMemory`](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.InMemory) provides an in-memory vector store class to hold queryable vector data records. - [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration) provides an implementation of key-value pair—based configuration. - [`Microsoft.Extensions.Configuration.UserSecrets`](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.UserSecrets) is a user secrets configuration provider implementation for `Microsoft.Extensions.Configuration`. @@ -101,7 +101,7 @@ Complete the following steps to create a .NET console app that can: The following list describes each package in the `VectorDataAI` app: - [`Microsoft.Extensions.AI.OpenAI`](https://www.nuget.org/packages/Microsoft.Extensions.AI.OpenAI) provides AI abstractions for OpenAI-compatible models or endpoints. This library also includes the official [`OpenAI`](https://www.nuget.org/packages/OpenAI) library for the OpenAI service API as a dependency. - - [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.AI) enables Create-Read-Update-Delete (CRUD) and search operations on vector stores. + - [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.VectorData.Abstractions) enables Create-Read-Update-Delete (CRUD) and search operations on vector stores. - [`Microsoft.SemanticKernel.Connectors.InMemory`](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.InMemory) provides an in-memory vector store class to hold queryable vector data records. - [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration) provides an implementation of key-value pair—based configuration. - [`Microsoft.Extensions.Configuration.UserSecrets`](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.UserSecrets) is a user secrets configuration provider implementation for `Microsoft.Extensions.Configuration`. From 27a54b7f872fa4956fcdcd31a739a1711fc15045 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 Aug 2025 13:04:08 -0700 Subject: [PATCH 05/10] Clarify interface implementation accessibility requirements and provide comprehensive guidance for internal interfaces (#48050) * Initial plan * Add clarification and example for interface implementation accessibility requirements Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Address review feedback: clarify internal interface implementation capabilities and add comprehensive example Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Update docs/csharp/fundamentals/types/interfaces.md --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> Co-authored-by: Bill Wagner --- docs/csharp/fundamentals/types/interfaces.md | 16 +++++++- .../types/snippets/interfaces/interfaces.cs | 41 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/docs/csharp/fundamentals/types/interfaces.md b/docs/csharp/fundamentals/types/interfaces.md index 9d8984031bd81..1e971ddc8b432 100644 --- a/docs/csharp/fundamentals/types/interfaces.md +++ b/docs/csharp/fundamentals/types/interfaces.md @@ -26,7 +26,7 @@ For more information about abstract classes, see [Abstract and Sealed Classes an Interfaces can contain instance methods, properties, events, indexers, or any combination of those four member types. Interfaces may contain static constructors, fields, constants, or operators. Beginning with C# 11, interface members that aren't fields may be `static abstract`. An interface can't contain instance fields, instance constructors, or finalizers. Interface members are public by default, and you can explicitly specify accessibility modifiers, such as `public`, `protected`, `internal`, `private`, `protected internal`, or `private protected`. A `private` member must have a default implementation. -To implement an interface member, the corresponding member of the implementing class must be public, non-static, and have the same name and signature as the interface member. +To implement an interface member using implicit implementation, the corresponding member of the implementing class must be public, non-static, and have the same name and signature as the interface member. However, when an interface is meant to be internal only or uses internal types in its signature, you can use explicit interface implementation instead, which doesn't require the implementing member to be public. > [!NOTE] > When an interface declares static members, a type implementing that interface may also declare static members with the same signature. Those are distinct and uniquely identified by the type declaring the member. The static member declared in a type *doesn't* override the static member declared in the interface. @@ -43,6 +43,20 @@ Interfaces can inherit from one or more interfaces. The derived interface inheri A base class can also implement interface members by using virtual members. In that case, a derived class can change the interface behavior by overriding the virtual members. For more information about virtual members, see [Polymorphism](../object-oriented/polymorphism.md). +## Working with internal interfaces + +An internal interface can typically be implemented using implicit implementation with public members, as long as all the types in the interface signature are publicly accessible. However, when an interface uses internal types in its member signatures, implicit implementation becomes impossible because the implementing class member would need to be public while exposing internal types. In such cases, you must use explicit interface implementation. + +The following example shows both scenarios: + +:::code language="csharp" source="./snippets/interfaces/interfaces.cs" ID="InternalInterfaceExample"::: + +In the preceding example, the `IConfigurable` interface uses an internal type `InternalConfiguration` in its method signature. The `ServiceImplementation` class cannot use implicit implementation because that would require making the `Configure` method public, which isn't allowed when the method signature contains internal types. Instead, explicit interface implementation is used, which doesn't have an access modifier and is only accessible through the interface type. + +In contrast, the `ILoggable` interface can be implemented implicitly with public members because all types in its signature (`string`) are publicly accessible, even though the interface itself is internal. + +For more information about explicit interface implementation, see [Explicit Interface Implementation](../../programming-guide/interfaces/explicit-interface-implementation.md). + ## Interfaces summary An interface has the following properties: diff --git a/docs/csharp/fundamentals/types/snippets/interfaces/interfaces.cs b/docs/csharp/fundamentals/types/snippets/interfaces/interfaces.cs index b5593879c3c85..66b7be12838b9 100644 --- a/docs/csharp/fundamentals/types/snippets/interfaces/interfaces.cs +++ b/docs/csharp/fundamentals/types/snippets/interfaces/interfaces.cs @@ -28,5 +28,46 @@ public bool Equals(Car? car) } // + // + // Internal type that cannot be exposed publicly + internal class InternalConfiguration + { + public string Setting { get; set; } = ""; + } + + // Internal interface that CAN be implemented with public members + // because it only uses public types in its signature + internal interface ILoggable + { + void Log(string message); // string is public, so this works with implicit implementation + } + + // Interface with internal accessibility using internal types + internal interface IConfigurable + { + void Configure(InternalConfiguration config); // Internal type prevents implicit implementation + } + + // This class shows both implicit and explicit interface implementation + public class ServiceImplementation : ILoggable, IConfigurable + { + // Implicit implementation works for ILoggable because string is public + public void Log(string message) + { + Console.WriteLine($"Log: {message}"); + } + + // Explicit implementation required for IConfigurable because it uses internal types + void IConfigurable.Configure(InternalConfiguration config) + { + // Implementation here + Console.WriteLine($"Configured with: {config.Setting}"); + } + + // If we tried implicit implementation for IConfigurable, this wouldn't compile: + // public void Configure(InternalConfiguration config) // Error: cannot expose internal type + } + // + } From ea8459ae879d310a6d23abce27245ed71f858ecf Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 Aug 2025 13:09:31 -0700 Subject: [PATCH 06/10] Clarify Task.WhenAny documentation to address user confusion about Task return type (#48051) * Initial plan * Clarify Task.WhenAny documentation to address user confusion Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> --- docs/csharp/asynchronous-programming/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/csharp/asynchronous-programming/index.md b/docs/csharp/asynchronous-programming/index.md index 05a310679437e..d000c6ee9878f 100644 --- a/docs/csharp/asynchronous-programming/index.md +++ b/docs/csharp/asynchronous-programming/index.md @@ -249,7 +249,7 @@ while (breakfastTasks.Count > 0) } ``` -Near the end of the code snippet, notice the `await finishedTask;` expression. The `await Task.WhenAny` expression doesn't wait on the finished task, but rather waits on the `Task` object returned by the `Task.WhenAny` method. The result of the `Task.WhenAny` method is the completed (or faulted) task. The best practice is to wait on the task again, even when you know the task is complete. In this manner, you can retrieve the task result, or ensure any exception that causes the task to fault is thrown. +Near the end of the code snippet, notice the `await finishedTask;` expression. This line is important because `Task.WhenAny` returns a `Task` - a wrapper task that contains the completed task. When you `await Task.WhenAny`, you're waiting for the wrapper task to complete, and the result is the actual task that finished first. However, to retrieve that task's result or ensure any exceptions are properly thrown, you must `await` the completed task itself (stored in `finishedTask`). Even though you know the task has finished, awaiting it again allows you to access its result or handle any exceptions that might have caused it to fault. ### Review final code From d368735cf53e5164d04a5723e98e1691cc699468 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 Aug 2025 13:12:09 -0700 Subject: [PATCH 07/10] Fix Collection builder example to be well-behaved with proper buffer allocation (#47994) * Initial plan * Initial analysis and problem verification Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Fix LineBuffer to be well-behaved collection Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Update docs/csharp/language-reference/operators/snippets/shared/CollectionExpressionExamples.cs * Fix LineBuffer buffer allocation to use exact size needed Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Update docs/csharp/language-reference/operators/snippets/shared/operators.csproj --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> Co-authored-by: Bill Wagner --- .../shared/CollectionExpressionExamples.cs | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/docs/csharp/language-reference/operators/snippets/shared/CollectionExpressionExamples.cs b/docs/csharp/language-reference/operators/snippets/shared/CollectionExpressionExamples.cs index b86e8b163a77d..a96a8be5a77a9 100644 --- a/docs/csharp/language-reference/operators/snippets/shared/CollectionExpressionExamples.cs +++ b/docs/csharp/language-reference/operators/snippets/shared/CollectionExpressionExamples.cs @@ -9,19 +9,40 @@ // public class LineBuffer : IEnumerable { - private readonly char[] _buffer = new char[80]; + private readonly char[] _buffer; + private readonly int _count; public LineBuffer(ReadOnlySpan buffer) { - int number = (_buffer.Length < buffer.Length) ? _buffer.Length : buffer.Length; - for (int i = 0; i < number; i++) + _buffer = new char[buffer.Length]; + _count = buffer.Length; + for (int i = 0; i < _count; i++) { _buffer[i] = buffer[i]; } } - public IEnumerator GetEnumerator() => _buffer.AsEnumerable().GetEnumerator(); - IEnumerator IEnumerable.GetEnumerator() => _buffer.GetEnumerator(); + public int Count => _count; + + public char this[int index] + { + get + { + if (index >= _count) + throw new IndexOutOfRangeException(); + return _buffer[index]; + } + } + + public IEnumerator GetEnumerator() + { + for (int i = 0; i < _count; i++) + { + yield return _buffer[i]; + } + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); // etc } From 2fe413876bdcc4e587509af4236ea4f108460218 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 Aug 2025 20:37:50 -0400 Subject: [PATCH 08/10] Update Advanced Compiler Settings documentation for modern .NET (#47995) * Initial plan * Update Advanced Compiler Settings for modern .NET Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Update docs/csharp/language-reference/compiler-options/advanced.md * Update ms.date to today and remove redundant (.NET 5+) text Co-authored-by: adegeo <67293991+adegeo@users.noreply.github.com> * Remove redundant (.NET 5+) text from SubsystemVersion section Co-authored-by: adegeo <67293991+adegeo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> Co-authored-by: Bill Wagner Co-authored-by: adegeo <67293991+adegeo@users.noreply.github.com> --- .../compiler-options/advanced.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/csharp/language-reference/compiler-options/advanced.md b/docs/csharp/language-reference/compiler-options/advanced.md index 91311790d5ad2..bde6ec623bedb 100644 --- a/docs/csharp/language-reference/compiler-options/advanced.md +++ b/docs/csharp/language-reference/compiler-options/advanced.md @@ -1,7 +1,7 @@ --- description: "Advanced C# Compiler Options. These options are used in advanced scenarios." title: "Compiler Options - advanced scenarios" -ms.date: 03/12/2021 +ms.date: 08/22/2025 f1_keywords: - "cs.build.options" helpviewer_keywords: @@ -40,7 +40,7 @@ The following options support advanced scenarios. The new MSBuild syntax is show - **Utf8Output** / `-utf8output`: Output compiler messages in UTF-8 encoding. - **FileAlignment** / `-filealign`: Specify the alignment used for output file sections. - **ErrorEndLocation** / `-errorendlocation`: Output line and column of the end location of each error. -- **NoStandardLib** / `-nostdlib`: Don't reference standard library *mscorlib.dll*. +- **NoStandardLib** / `-nostdlib`: Don't reference standard library. (Prevents automatic reference to the .NET Base Class Library - *mscorlib.dll* in .NET Framework projects, *System.Private.CoreLib.dll* in modern .NET projects.) - **SubsystemVersion** / `-subsystemversion`: Specify subsystem version of this assembly. - **ModuleAssemblyName** / `-moduleassemblyname`: Name of the assembly that this module will be a part of. - **ReportIVTs** / `-reportivts`: Produce additional information on information. @@ -226,13 +226,13 @@ By default, the compiler writes the starting location in source for all errors a ## NoStandardLib -**NoStandardLib** prevents the import of mscorlib.dll, which defines the entire System namespace. +**NoStandardLib** prevents the automatic reference to the .NET Base Class Library. In .NET Framework projects, this refers to *mscorlib.dll*, while in modern .NET projects, this refers to *System.Private.CoreLib.dll*. Both assemblies define the entire System namespace. ```xml true ``` -Use this option if you want to define or create your own System namespace and objects. If you don't specify **NoStandardLib**, mscorlib.dll is imported into your program (same as specifying `false`). +Use this option if you want to define or create your own System namespace and objects. If you don't specify **NoStandardLib**, the appropriate base class library is automatically referenced (same as specifying `false`). ## SubsystemVersion @@ -256,6 +256,9 @@ The following table lists common subsystem versions of Windows. |Windows 7|6.01| |Windows Server 2008|6.01| |Windows 8|6.02| +|Windows 8.1|6.03| +|Windows 10|6.04| +|Windows 11|6.04| The default value of the **SubsystemVersion** compiler option depends on the conditions in the following list: @@ -263,7 +266,8 @@ The default value of the **SubsystemVersion** compiler option depends on the con - [-target:appcontainerexe](output.md#outputtype) - [-target:winmdobj](output.md#outputtype) - [-platform:arm](output.md#platformtarget) -- The default value is 6.00 if you're using MSBuild, you're targeting .NET Framework 4.5, and you haven't set any of the compiler options that were specified earlier in this list. +- The default value is 6.00 if you're using MSBuild, you're targeting .NET Framework 4.5 or later, and you haven't set any of the compiler options that were specified earlier in this list. +- For modern .NET projects, the default value is 6.00, which allows your application to run on Windows Vista and later versions. - The default value is 4.00 if none of the previous conditions are true. ## ModuleAssemblyName From a6cb49629477a6a7889ce95f0cfc0e4863e1608f Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 22 Aug 2025 20:39:57 -0400 Subject: [PATCH 09/10] Add Unicode out-of-range example to CS1009 compiler error documentation (#47963) * Initial plan * Add Unicode out-of-range example to CS1009 documentation Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> --- docs/csharp/language-reference/compiler-messages/cs1009.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/csharp/language-reference/compiler-messages/cs1009.md b/docs/csharp/language-reference/compiler-messages/cs1009.md index 3f0b4e00a381b..6d120b58ceb23 100644 --- a/docs/csharp/language-reference/compiler-messages/cs1009.md +++ b/docs/csharp/language-reference/compiler-messages/cs1009.md @@ -34,6 +34,8 @@ class MyClass string hexEscapeSequence = '\X061'; // CS1009; an uppercase \U-style Unicode escape sequence must have exactly 8 hex digits string uppercaseUnicodeEscape = '\U0061'; + // CS1009; Unicode code points above U+10FFFF are invalid (well-formed but out of range) + string outOfRangeUnicode = "\U00110000"; } } ``` From cc272ce85058687b24eb24d6db3f27a4eb5d2409 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Fri, 22 Aug 2025 17:40:23 -0700 Subject: [PATCH 10/10] Update package index with latest published versions (#48069) --- docs/azure/includes/dotnet-all.md | 6 +++--- docs/azure/includes/dotnet-new.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index c283779890a30..4fc17b9f23348 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -79,7 +79,7 @@ | Monitor Query | NuGet [1.7.1](https://www.nuget.org/packages/Azure.Monitor.Query/1.7.1) | [docs](/dotnet/api/overview/azure/Monitor.Query-readme) | GitHub [1.7.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Query_1.7.1/sdk/monitor/Azure.Monitor.Query/) | | NUnit ? Microsoft Playwright Testing | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Developer.MicrosoftPlaywrightTesting.NUnit-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.MicrosoftPlaywrightTesting.NUnit_1.0.0-beta.4/sdk/playwrighttesting/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/) | | OpenAI Assistants | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.4/sdk/openai/Azure.AI.OpenAI.Assistants/) | -| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.3.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.3.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.3.0-beta.1/sdk/openai/Azure.AI.OpenAI/) | +| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.3.0-beta.2](https://www.nuget.org/packages/Azure.AI.OpenAI/2.3.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.3.0-beta.2/sdk/openai/Azure.AI.OpenAI/) | | OpenTelemetry AspNetCore | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.3.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.3.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) | | OpenTelemetry Exporter | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.4.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.4.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | | Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) | @@ -308,7 +308,7 @@ | Resource Management - MySQL | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.1.2/sdk/mysql/Azure.ResourceManager.MySql/) | | Resource Management - Neon Postgres | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.NeonPostgres/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NeonPostgres-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NeonPostgres_1.0.0/sdk/neonpostgres/Azure.ResourceManager.NeonPostgres/) | | Resource Management - NetApp Files | NuGet [1.11.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.11.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.11.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.11.0/sdk/netapp/Azure.ResourceManager.NetApp/) | -| Resource Management - Network | NuGet [1.11.2](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.11.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.2/sdk/network/Azure.ResourceManager.Network/) | +| Resource Management - Network | NuGet [1.11.3](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.11.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.3/sdk/network/Azure.ResourceManager.Network/) | | Resource Management - Network Cloud | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkCloud-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.2.0/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/) | | Resource Management - Network Function | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.NetworkFunction/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkFunction-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkFunction_1.0.0-beta.5/sdk/networkfunction/Azure.ResourceManager.NetworkFunction/) | | Resource Management - New Relic Observability | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NewRelicObservability/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NewRelicObservability-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NewRelicObservability_1.1.1/sdk/newrelicobservability/Azure.ResourceManager.NewRelicObservability/) | @@ -390,7 +390,7 @@ | App Configuration Extension | NuGet [8.3.0](https://www.nuget.org/packages/Microsoft.Azure.AppConfiguration.Functions.Worker/8.3.0) | | | | App Configuration Provider | NuGet [8.3.0](https://www.nuget.org/packages/Microsoft.Azure.AppConfiguration.AspNetCore/8.3.0) | | | | Azure.Communication.Administration | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Administration/1.0.0-beta.3) | | | -| Communication Calling Windows Client | NuGet [1.11.1](https://www.nuget.org/packages/Azure.Communication.Calling.WindowsClient/1.11.1)
NuGet [1.12.0-beta.1](https://www.nuget.org/packages/Azure.Communication.Calling.WindowsClient/1.12.0-beta.1) | | | +| Communication Calling Windows Client | NuGet [1.12.0](https://www.nuget.org/packages/Azure.Communication.Calling.WindowsClient/1.12.0) | | | | Content Safety Extension Embedded Image | NuGet [1.0.1-beta.4](https://www.nuget.org/packages/Azure.AI.ContentSafety.Extension.Embedded.Image/1.0.1-beta.4) | | | | Content Safety Extension Embedded Text | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety.Extension.Embedded.Text/1.0.0)
NuGet [1.0.1-beta.4](https://www.nuget.org/packages/Azure.AI.ContentSafety.Extension.Embedded.Text/1.0.1-beta.4) | | | | Cosmos DB Fault Injection | NuGet [1.0.0-beta.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos.FaultInjection/1.0.0-beta.0) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index bd4bd505eba8f..5b6a5d8f464f6 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -81,7 +81,7 @@ | Monitor Query | NuGet [1.7.1](https://www.nuget.org/packages/Azure.Monitor.Query/1.7.1) | [docs](/dotnet/api/overview/azure/Monitor.Query-readme) | GitHub [1.7.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Query_1.7.1/sdk/monitor/Azure.Monitor.Query/) | | NUnit ? Microsoft Playwright Testing | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/Developer.MicrosoftPlaywrightTesting.NUnit-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Developer.MicrosoftPlaywrightTesting.NUnit_1.0.0-beta.4/sdk/playwrighttesting/Azure.Developer.MicrosoftPlaywrightTesting.NUnit/) | | OpenAI Assistants | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.4/sdk/openai/Azure.AI.OpenAI.Assistants/) | -| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.3.0-beta.1](https://www.nuget.org/packages/Azure.AI.OpenAI/2.3.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.3.0-beta.1/sdk/openai/Azure.AI.OpenAI/) | +| OpenAI Inference | NuGet [2.1.0](https://www.nuget.org/packages/Azure.AI.OpenAI/2.1.0)
NuGet [2.3.0-beta.2](https://www.nuget.org/packages/Azure.AI.OpenAI/2.3.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme) | GitHub [2.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.1.0/sdk/openai/Azure.AI.OpenAI/)
GitHub [2.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_2.3.0-beta.2/sdk/openai/Azure.AI.OpenAI/) | | OpenTelemetry AspNetCore | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.3.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.3.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) | | OpenTelemetry Exporter | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.4.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.4.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | | OpenTelemetry LiveMetrics | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.LiveMetrics/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.LiveMetrics-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.LiveMetrics_1.0.0-beta.3/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/) | @@ -318,7 +318,7 @@ | Resource Management - MySQL | NuGet [1.1.2](https://www.nuget.org/packages/Azure.ResourceManager.MySql/1.1.2) | [docs](/dotnet/api/overview/azure/ResourceManager.MySql-readme) | GitHub [1.1.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.MySql_1.1.2/sdk/mysql/Azure.ResourceManager.MySql/) | | Resource Management - Neon Postgres | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.NeonPostgres/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NeonPostgres-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NeonPostgres_1.0.0/sdk/neonpostgres/Azure.ResourceManager.NeonPostgres/) | | Resource Management - NetApp Files | NuGet [1.11.0](https://www.nuget.org/packages/Azure.ResourceManager.NetApp/1.11.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetApp-readme) | GitHub [1.11.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetApp_1.11.0/sdk/netapp/Azure.ResourceManager.NetApp/) | -| Resource Management - Network | NuGet [1.11.2](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.11.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.2/sdk/network/Azure.ResourceManager.Network/) | +| Resource Management - Network | NuGet [1.11.3](https://www.nuget.org/packages/Azure.ResourceManager.Network/1.11.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Network-readme) | GitHub [1.11.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Network_1.11.3/sdk/network/Azure.ResourceManager.Network/) | | Resource Management - Network Analytics | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.NetworkAnalytics/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkAnalytics-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkAnalytics_1.0.1/sdk/networkanalytics/Azure.ResourceManager.NetworkAnalytics/) | | Resource Management - Network Cloud | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.NetworkCloud/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkCloud-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkCloud_1.2.0/sdk/networkcloud/Azure.ResourceManager.NetworkCloud/) | | Resource Management - Network Function | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.NetworkFunction/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.NetworkFunction-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NetworkFunction_1.0.0-beta.5/sdk/networkfunction/Azure.ResourceManager.NetworkFunction/) |