Skip to content

Monthly chores: Use relative links #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/ai/azure-ai-services-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Application requests to Azure AI Services must be authenticated. In this article

The sections ahead provide conceptual overviews for these two approaches, rather than detailed implementation steps. For more detailed information about connecting to Azure services, visit the following resources:

- [Authenticate .NET apps to Azure services](/dotnet/azure/sdk/authentication/)
- [Authenticate .NET apps to Azure services](../azure/sdk/authentication/index.md)
- [Identity fundamentals](/entra/fundamentals/identity-fundamental-concepts)
- [What is Azure RBAC?](/azure/role-based-access-control/overview)

Expand Down
2 changes: 1 addition & 1 deletion docs/ai/quickstarts/quickstart-openai-generate-images.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ Complete the following steps to create a .NET console app to connect to an AI mo
:::code language="csharp" source="snippets/image-generation/azure-openai/program.cs" :::

> [!NOTE]
> <xref:Azure.Identity.DefaultAzureCredential> searches for authentication credentials from your local tooling. If you aren't using the `azd` template to provision the Azure OpenAI resource, you'll need to assign the `Azure AI Developer` role to the account you used to sign-in to Visual Studio or the Azure CLI. For more information, see [Authenticate to Azure AI services with .NET](/dotnet/ai/azure-ai-services-authentication).
> <xref:Azure.Identity.DefaultAzureCredential> searches for authentication credentials from your local tooling. If you aren't using the `azd` template to provision the Azure OpenAI resource, you'll need to assign the `Azure AI Developer` role to the account you used to sign-in to Visual Studio or the Azure CLI. For more information, see [Authenticate to Azure AI services with .NET](../azure-ai-services-authentication.md).

:::zone-end

Expand Down
2 changes: 1 addition & 1 deletion docs/ai/quickstarts/quickstart-openai-summarize-text.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ The app uses the [`Microsoft.Extensions.AI`](https://www.nuget.org/packages/Micr
:::code language="csharp" source="snippets/prompt-completion/azure-openai/program.cs" range="1-12":::

> [!NOTE]
> <xref:Azure.Identity.DefaultAzureCredential> searches for authentication credentials from your local tooling. If you aren't using the `azd` template to provision the Azure OpenAI resource, you'll need to assign the `Azure AI Developer` role to the account you used to sign-in to Visual Studio or the Azure CLI. For more information, see [Authenticate to Azure AI services with .NET](/dotnet/ai/azure-ai-services-authentication).
> <xref:Azure.Identity.DefaultAzureCredential> searches for authentication credentials from your local tooling. If you aren't using the `azd` template to provision the Azure OpenAI resource, you'll need to assign the `Azure AI Developer` role to the account you used to sign-in to Visual Studio or the Azure CLI. For more information, see [Authenticate to Azure AI services with .NET](../azure-ai-services-authentication.md).

:::zone-end

Expand Down
2 changes: 1 addition & 1 deletion docs/azure/migration/appcat/visual-studio-copilot.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ms.author: alexwolf
Azure Migrate application and code assessment for .NET integrates with the GitHub Copilot extension for Visual Studio. Together, they provide conversational analysis about your migration reports. GitHub Copilot can help you learn more about the overall results and specific issues and determine next steps. In this article, you learn how to use GitHub Copilot to analyze the results of a completed Azure migration report.

> [!NOTE]
> Copilot integration is not available natively using the [.NET CLI version](/dotnet/azure/migration/appcat/dotnet-cli) of Azure Migrate application and code assessment for .NET.
> Copilot integration is not available natively using the [.NET CLI version](dotnet-cli.md) of Azure Migrate application and code assessment for .NET.

## Prerequisites

Expand Down
10 changes: 5 additions & 5 deletions docs/azure/sdk/aspnetcore-guidance.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ ASP.NET Core apps that connect to Azure services generally depend on the followi

- [Microsoft.Extensions.Azure](https://www.nuget.org/packages/Microsoft.Extensions.Azure) provides helper methods to register clients with the dependency injection service collection and handles various concerns for you, such as setting up logging, handling DI service lifetimes, and authentication credential management.
- [Azure.Identity](https://www.nuget.org/packages/Azure.Identity) enables Microsoft Entra ID authentication support across the Azure SDK. It provides a set of [TokenCredential](/dotnet/api/azure.core.tokencredential?view=azure-dotnet) implementations to construct Azure SDK clients that support Microsoft Entra authentication.
- `Azure.<service-namespace>` libraries, such as [Azure.Storage.Blobs](https://www.nuget.org/packages/Azure.Storage.Blobs) and [Azure.Messaging.ServiceBus](https://www.nuget.org/packages/Azure.Messaging.ServiceBus), provide service clients and other types to help you connect to and consume specific Azure services. For a complete inventory of these libraries, see [Libraries using Azure.Core](/dotnet/azure/sdk/packages#libraries-using-azurecore).
- `Azure.<service-namespace>` libraries, such as [Azure.Storage.Blobs](https://www.nuget.org/packages/Azure.Storage.Blobs) and [Azure.Messaging.ServiceBus](https://www.nuget.org/packages/Azure.Messaging.ServiceBus), provide service clients and other types to help you connect to and consume specific Azure services. For a complete inventory of these libraries, see [Libraries using Azure.Core](packages.md#libraries-using-azurecore).

In the sections ahead, you'll explore how to implement an ASP.NET Core application that uses these libraries.

Expand Down Expand Up @@ -63,7 +63,7 @@ Complete the following steps to register the services you need:

---

For more information, see [Dependency injection with the Azure SDK for .NET](/dotnet/azure/sdk/dependency-injection).
For more information, see [Dependency injection with the Azure SDK for .NET](dependency-injection.md).

## Authenticate using Microsoft Entra ID

Expand All @@ -90,10 +90,10 @@ Use the [Azure Identity](/dotnet/api/overview/azure/identity-readme) library for

Azure SDK service clients support configurations to change their default behaviors. There are two ways to configure service clients:

- [JSON configuration files](/dotnet/core/extensions/configuration-providers#json-configuration-provider) are generally the recommended approach because they simplify managing differences in app deployments between environments.
- [JSON configuration files](../../core/extensions/configuration-providers.md#json-configuration-provider) are generally the recommended approach because they simplify managing differences in app deployments between environments.
- Inline code configurations can be applied when you register the service client. For example, in the [Register clients and subclients](#register-azure-sdk-clients-with-the-di-service-collection) section, you explicitly passed the URI variables to the client constructors.

`IConfiguration` precedence rules are respected by the `Microsoft.Extensions.Azure` extension methods, which are detailed in the [Configuration Providers](/dotnet/core/extensions/configuration#configuration-providers) documentation.
`IConfiguration` precedence rules are respected by the `Microsoft.Extensions.Azure` extension methods, which are detailed in the [Configuration Providers](../../core/extensions/configuration.md#configuration-providers) documentation.

Complete the steps in the following sections to update your app to use JSON file configuration for the appropriate environments. Use the `appsettings.Development.json` file for development settings and the `appsettings.Production.json` file for production environment settings. You can add configuration settings whose names are public properties on the <xref:Azure.Core.ClientOptions> class to the JSON file.

Expand Down Expand Up @@ -128,7 +128,7 @@ You may want to change default Azure client configurations globally or for a spe

The Azure SDK for .NET client libraries can log client library operations to monitor requests and responses to Azure services. Client libraries can also log a variety of other events, including retries, token retrieval, and service-specific events from various clients. When you register an Azure SDK client using the <xref:Microsoft.Extensions.Azure.AzureClientServiceCollectionExtensions.AddAzureClients%2A> extension method, the <xref:Microsoft.Extensions.Azure.AzureEventSourceLogForwarder> is registered with the dependency injection container. The `AzureEventSourceLogForwarder` forwards log messages from Azure SDK event sources to <xref:Microsoft.Extensions.Logging.ILoggerFactory> to enables you to use the standard ASP.NET Core logging configuration for logging.

The following table depicts how the Azure SDK for .NET `EventLevel` maps to the ASP.NET Core `LogLevel`. For more information on these topics and other scenarios, see [Logging with the Azure SDK for .NET](/dotnet/azure/sdk/logging) and [Dependency injection with the Azure SDK for .NET](/dotnet/azure/sdk/dependency-injection).
The following table depicts how the Azure SDK for .NET `EventLevel` maps to the ASP.NET Core `LogLevel`. For more information on these topics and other scenarios, see [Logging with the Azure SDK for .NET](logging.md) and [Dependency injection with the Azure SDK for .NET](dependency-injection.md).

| Azure SDK `EventLevel` | ASP.NET Core `LogLevel` |
|------------------------|-------------------------|
Expand Down
2 changes: 1 addition & 1 deletion docs/core/deploying/deploy-with-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ You must use the following switches with the `dotnet publish` command to publish

> [!TIP]
>
> - In .NET 6 and later versions, you can reduce the total size of compatible self-contained apps by [publishing trimmed](trimming/trim-self-contained.md). This enables the trimmer to remove parts of the framework and referenced assemblies that are not on any code path or potentially referenced in [runtime reflection](/dotnet/csharp/advanced-topics/reflection-and-attributes/). See [trimming incompatibilities](./trimming/incompatibilities.md) to determine if trimming makes sense for your application.
> - In .NET 6 and later versions, you can reduce the total size of compatible self-contained apps by [publishing trimmed](trimming/trim-self-contained.md). This enables the trimmer to remove parts of the framework and referenced assemblies that are not on any code path or potentially referenced in [runtime reflection](../../csharp/advanced-topics/reflection-and-attributes/index.md). See [trimming incompatibilities](./trimming/incompatibilities.md) to determine if trimming makes sense for your application.
> - You can reduce the total size of your deployment by enabling **globalization invariant mode**. This mode is useful for applications that are not globally aware and that can use the formatting conventions, casing conventions, and string comparison and sort order of the [invariant culture](xref:System.Globalization.CultureInfo.InvariantCulture). For more information about **globalization invariant mode** and how to enable it, see [.NET Core Globalization Invariant Mode](https://github.com/dotnet/runtime/blob/main/docs/design/features/globalization-invariant-mode.md).

## See also
Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/advanced-topics/expression-trees/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ ms.custom: updateeachrelease

*Expression trees* represent code in a tree-like data structure, where each node is an expression, for example, a method call or a binary operation such as `x < y`.

If you used LINQ, you have experience with a rich library where the `Func` types are part of the API set. (If you aren't familiar with LINQ, you probably want to read [the LINQ tutorial](/dotnet/csharp/linq/) and the article about [lambda expressions](../../language-reference/operators/lambda-expressions.md) before this one.) Expression Trees provide richer interaction with the arguments that are functions.
If you used LINQ, you have experience with a rich library where the `Func` types are part of the API set. (If you aren't familiar with LINQ, you probably want to read [the LINQ tutorial](../../linq/index.md) and the article about [lambda expressions](../../language-reference/operators/lambda-expressions.md) before this one.) Expression Trees provide richer interaction with the arguments that are functions.

You write function arguments, typically using Lambda Expressions, when you create LINQ queries. In a typical LINQ query, those function arguments are transformed into a delegate the compiler creates.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ long num = Convert.ToInt64(s);
For more information, see <xref:System.Int64.Parse%2A> and <xref:System.Convert>.

> [!TIP]
> Parsing command-line arguments can be complex. Consider using the [System.CommandLine](/dotnet/standard/commandline/) library (currently in beta) to simplify the process.
> Parsing command-line arguments can be complex. Consider using the [System.CommandLine](../../../standard/commandline/index.md) library (currently in beta) to simplify the process.

The following example shows how to use command-line arguments in a console application. The application takes one argument at run time, converts the argument to an integer, and calculates the factorial of the number. If no arguments are supplied, the application issues a message that explains the correct usage of the program.

Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/how-to/concatenate-multiple-strings.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Another option to join strings from a collection is to use <xref:System.String.C

## LINQ and `Enumerable.Aggregate`

At last, you can use [LINQ](/dotnet/csharp/linq/)
At last, you can use [LINQ](../linq/index.md)
and the <xref:System.Linq.Enumerable.Aggregate%2A?displayProperty=nameWithType> method to join strings from a collection. This method combines
the source strings using a lambda expression. The lambda expression does the
work to add each string to the existing accumulation. The following example
Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/how-to/parse-strings-using-split.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Consecutive separator characters produce the empty string as a value in the retu

This behavior makes it easier for formats like comma-separated values (CSV) files representing tabular data. Consecutive commas represent a blank column.

You can pass an optional <xref:System.StringSplitOptions.RemoveEmptyEntries?displayProperty=nameWithType> parameter to exclude any empty strings in the returned array. For more complicated processing of the returned collection, you can use [LINQ](/dotnet/csharp/linq/) to manipulate the result sequence.
You can pass an optional <xref:System.StringSplitOptions.RemoveEmptyEntries?displayProperty=nameWithType> parameter to exclude any empty strings in the returned array. For more complicated processing of the returned collection, you can use [LINQ](../linq/index.md) to manipulate the result sequence.

<xref:System.String.Split%2A?displayProperty=nameWithType> can use multiple separator characters. The following example uses spaces, commas, periods, colons, and tabs as separating characters, which are passed to <xref:System.String.Split%2A> in an array. The loop at the bottom of the code displays each of the words in the returned array.

Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/attributes/general.md
Original file line number Diff line number Diff line change
Expand Up @@ -274,4 +274,4 @@ The <xref:System.Runtime.CompilerServices.IUnknownConstantAttribute?displayPrope
- <xref:System.Attribute>
- <xref:System.Reflection>
- [Attributes](../../../standard/attributes/index.md)
- [Reflection](/dotnet/csharp/advanced-topics/reflection-and-attributes/)
- [Reflection](../../advanced-topics/reflection-and-attributes/index.md)
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/keywords/join-clause.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ A `join` clause performs an equijoin. In other words, you can only base matches

## Non-equijoins

You can perform non-equijoins, cross joins, and other custom join operations by using multiple `from` clauses to introduce new sequences independently into a query. For more information, see [Perform custom join operations](/dotnet/csharp/linq/).
You can perform non-equijoins, cross joins, and other custom join operations by using multiple `from` clauses to introduce new sequences independently into a query. For more information, see [Perform custom join operations](../../linq/index.md).

## Joins on object collections vs. relational tables

Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/keywords/let-clause.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ In the following example `let` is used in two ways:

- [Query Keywords (LINQ)](query-keywords.md)
- [LINQ in C#](../../linq/index.md)
- [Language Integrated Query (LINQ)](/dotnet/csharp/linq/)
- [Language Integrated Query (LINQ)](../../linq/index.md)
- [Handle exceptions in query expressions](../../linq/get-started/write-linq-queries.md)
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/keywords/orderby-clause.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ At compile time, the `orderby` clause is translated to a call to the <xref:Syste
- [Query Keywords (LINQ)](query-keywords.md)
- [LINQ in C#](../../linq/index.md)
- [group clause](group-clause.md)
- [Language Integrated Query (LINQ)](/dotnet/csharp/linq/)
- [Language Integrated Query (LINQ)](../../linq/index.md)
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ For more information about these features, see the following feature proposal no

- [Use local function instead of lambda (style rule IDE0039)](../../../fundamentals/code-analysis/style-rules/ide0039.md)
- [C# operators and expressions](index.md)
- [LINQ (Language-Integrated Query)](/dotnet/csharp/linq/)
- [LINQ (Language-Integrated Query)](../../linq/index.md)
- [Expression trees](../../advanced-topics/expression-trees/index.md)
- [Local functions vs. lambda expressions](../../programming-guide/classes-and-structs/local-functions.md#local-functions-vs-lambda-expressions)
- [LINQ sample queries](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/Visual%20Studio%20Product%20Team/Official%20Visual%20Studio%202008%20C%23%20Samples/%5BC%23%5D-Official%20Visual%20Studio%202008%20C%23%20Samples/LINQ%20-%20Sample%20Queries/C%23)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The `=>` token is supported in two forms: as the [lambda operator](#lambda-opera

In [lambda expressions](lambda-expressions.md), the lambda operator `=>` separates the input parameters on the left side from the lambda body on the right side.

The following example uses the [LINQ](/dotnet/csharp/linq/) feature with method syntax to demonstrate the usage of lambda expressions:
The following example uses the [LINQ](../../linq/index.md) feature with method syntax to demonstrate the usage of lambda expressions:

[!code-csharp-interactive[infer types of input variables](snippets/shared/LambdaOperator.cs#InferredTypes)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Overload resolution prefers instance or static method defined by the type itself
## See also

- [Extension Methods](./extension-methods.md)
- [LINQ (Language-Integrated Query)](/dotnet/csharp/linq/)
- [LINQ (Language-Integrated Query)](../../linq/index.md)
- [Static Classes and Static Class Members](./static-classes-and-static-class-members.md)
- [protected](../../language-reference/keywords/protected.md)
- [internal](../../language-reference/keywords/internal.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/tutorials/working-with-linq.md
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ Aside from LINQ, you learned a bit about a technique magicians use for card tric

For more information on LINQ, see:

- [Introduction to LINQ](/dotnet/csharp/linq/)
- [Introduction to LINQ](../linq/index.md)
- [Basic LINQ Query Operations (C#)](../linq/standard-query-operators/index.md)
- [Data Transformations With LINQ (C#)](../linq/standard-query-operators/index.md)
- [Query Syntax and Method Syntax in LINQ (C#)](../linq/get-started/write-linq-queries.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ LINQ to Entities provides Language-Integrated Query (LINQ) support that enables
## See also

- [Known Issues and Considerations in LINQ to Entities](known-issues-and-considerations-in-linq-to-entities.md)
- [Language-Integrated Query (LINQ) - C#](/dotnet/csharp/linq/)
- [Language-Integrated Query (LINQ) - C#](../../../../../csharp/linq/index.md)
- [Language-Integrated Query (LINQ) - Visual Basic](../../../../../visual-basic/programming-guide/concepts/linq/index.md)
- [LINQ and ADO.NET](../../linq-and-ado-net.md)
- [ADO.NET Entity Framework](../index.md)
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,6 @@ A query is an expression that retrieves data from a data source. Queries are usu
## See also

- [LINQ to Entities](linq-to-entities.md)
- [Getting Started with LINQ in C#](/dotnet/csharp/linq/)
- [Getting Started with LINQ in C#](../../../../../csharp/linq/index.md)
- [Getting Started with LINQ in Visual Basic](../../../../../visual-basic/programming-guide/concepts/linq/getting-started-with-linq.md)
- [EF Merge Options and Compiled Queries](/archive/blogs/dsimmons/ef-merge-options-and-compiled-queries)
Loading