Skip to content

Monthly chores: Use relative links #2657

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
4 changes: 2 additions & 2 deletions docs/ai/ai-extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,5 @@ For an end-to-end sample using `Microsoft.Extensions.AI`, see [eShopSupport](htt

## Next steps

- [Build an AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)
- [Quickstart - Summarize text using Azure AI chat app with .NET](/dotnet/ai/quickstarts/prompt-model)
- [Build an AI chat app with .NET](quickstarts/build-chat-app.md)
- [Quickstart - Summarize text using Azure AI chat app with .NET](quickstarts/prompt-model.md)
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
4 changes: 2 additions & 2 deletions docs/ai/dotnet-ai-ecosystem.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Azure offers many other AI services to build specific application capabilities a

.NET apps can also connect to local AI models for many different development scenarios. [Semantic Kernel](https://github.com/microsoft/semantic-kernel) is the recommended tool to connect to local models using .NET. Semantic Kernel can connect to many different models hosted across a variety of platforms and abstracts away lower-level implementation details.

For example, you can use [Ollama](https://ollama.com/) to [connect to local AI models with .NET](/dotnet/ai/quickstarts/chat-local-model), including several small language models (SLMs) developed by Microsoft:
For example, you can use [Ollama](https://ollama.com/) to [connect to local AI models with .NET](quickstarts/chat-local-model.md), including several small language models (SLMs) developed by Microsoft:

| Model | Description |
|---------------------|-----------------------------------------------------------|
Expand All @@ -84,7 +84,7 @@ This article summarized the tools and SDKs in the .NET ecosystem, with a focus o
## Next steps

- [What is Semantic Kernel?](/semantic-kernel/overview/)
- [Quickstart - Summarize text using Azure AI chat app with .NET](/dotnet/ai/quickstarts/prompt-model)
- [Quickstart - Summarize text using Azure AI chat app with .NET](quickstarts/prompt-model.md)

[phi3]: https://azure.microsoft.com/products/phi-3
[orca]: https://www.microsoft.com/research/project/orca/
12 changes: 6 additions & 6 deletions docs/ai/get-started/dotnet-ai-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@ We recommend the following sequence of tutorials and articles for an introductio

| Scenario | Tutorial |
|----------|----------|
| Create a chat application | [Build an Azure AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)|
| Summarize text | [Summarize text using Azure AI chat app with .NET](/dotnet/ai/quickstarts/prompt-model) |
| Chat with your data | [Get insight about your data from an .NET Azure AI chat app](/dotnet/ai/quickstarts/build-vector-search-app) |
| Call .NET functions with AI | [Extend Azure AI using tools and execute a local function with .NET](/dotnet/ai/quickstarts/use-function-calling) |
| Generate images | [Generate images using Azure AI with .NET](/dotnet/ai/quickstarts/generate-images) |
| Create a chat application | [Build an Azure AI chat app with .NET](../quickstarts/build-chat-app.md)|
| Summarize text | [Summarize text using Azure AI chat app with .NET](../quickstarts/prompt-model.md) |
| Chat with your data | [Get insight about your data from an .NET Azure AI chat app](../quickstarts/build-vector-search-app.md) |
| Call .NET functions with AI | [Extend Azure AI using tools and execute a local function with .NET](../quickstarts/use-function-calling.md) |
| Generate images | [Generate images using Azure AI with .NET](../quickstarts/generate-images.md) |
| Train your own model |[ML.NET tutorial](https://dotnet.microsoft.com/learn/ml-dotnet/get-started-tutorial/intro) |

Browse the table of contents to learn more about the core concepts, starting with [How generative AI and LLMs work](../conceptual/how-genai-and-llms-work.md).

## Next steps

- [Quickstart: Build an Azure AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)
- [Quickstart: Build an Azure AI chat app with .NET](../quickstarts/build-chat-app.md)
- [Video series: Machine Learning and AI with .NET](/shows/machine-learning-and-ai-with-dotnet-for-beginners)
2 changes: 1 addition & 1 deletion docs/ai/how-to/content-filtering.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ The response was filtered due to the prompt triggering Azure OpenAI's content ma

* [Create and assign a content filter](/azure/ai-services/openai/how-to/content-filters)
* [Content Filtering concepts](/azure/ai-services/openai/concepts/content-filter)
* [Create a chat app](/dotnet/ai/quickstarts/prompt-model)
* [Create a chat app](../quickstarts/prompt-model.md)
4 changes: 2 additions & 2 deletions docs/ai/quickstarts/build-chat-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,5 +153,5 @@ azd down

## Next steps

- [Quickstart - Chat with a local AI model](/dotnet/ai/quickstarts/chat-local-model)
- [Generate images using AI with .NET](/dotnet/ai/quickstarts/generate-images)
- [Quickstart - Chat with a local AI model](chat-local-model.md)
- [Generate images using AI with .NET](generate-images.md)
4 changes: 2 additions & 2 deletions docs/ai/quickstarts/build-vector-search-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,5 +205,5 @@ azd down

## Next steps

- [Quickstart - Chat with a local AI model](/dotnet/ai/quickstarts/chat-local-model)
- [Generate images using AI with .NET](/dotnet/ai/quickstarts/generate-images)
- [Quickstart - Chat with a local AI model](chat-local-model.md)
- [Generate images using AI with .NET](generate-images.md)
4 changes: 2 additions & 2 deletions docs/ai/quickstarts/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 Expand Up @@ -144,5 +144,5 @@ azd down

## Next steps

- [Quickstart - Build an AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)
- [Quickstart - Build an AI chat app with .NET](build-chat-app.md)
- [Generate text and conversations with .NET and Azure OpenAI Completions](/training/modules/open-ai-dotnet-text-completions/)
4 changes: 2 additions & 2 deletions docs/ai/quickstarts/prompt-model.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 Expand Up @@ -153,5 +153,5 @@ azd down

## Next steps

- [Quickstart - Build an AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)
- [Quickstart - Build an AI chat app with .NET](build-chat-app.md)
- [Generate text and conversations with .NET and Azure OpenAI Completions](/training/modules/open-ai-dotnet-text-completions/)
2 changes: 1 addition & 1 deletion docs/ai/quickstarts/use-function-calling.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,5 +154,5 @@ azd down

## Next steps

- [Quickstart - Build an AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)
- [Quickstart - Build an AI chat app with .NET](build-chat-app.md)
- [Generate text and conversations with .NET and Azure OpenAI Completions](/training/modules/open-ai-dotnet-text-completions/)
4 changes: 2 additions & 2 deletions docs/ai/semantic-kernel-dotnet-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,5 +213,5 @@ foreach (var fact in facts) {
The preceding code loads a set of facts into memory so that the data is available to use when interacting with AI models and orchestrating tasks.

>[!div class="step-by-step"]
>[Quickstart - Summarize text with OpenAI](/dotnet/ai/quickstarts/prompt-model)
>[Quickstart - Chat with your data](/dotnet/ai/quickstarts/build-vector-search-app)
>[Quickstart - Summarize text with OpenAI](quickstarts/prompt-model.md)
>[Quickstart - Chat with your data](quickstarts/build-vector-search-app.md)
2 changes: 1 addition & 1 deletion docs/azure/sdk/includes/auth-visual-studio.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ms.date: 03/19/2025
Developers using Visual Studio 2017 or later can authenticate using their developer account through the IDE. Apps using <xref:Azure.Identity.DefaultAzureCredential> or <xref:Azure.Identity.VisualStudioCredential> can discover and use this account to authenticate app requests when running locally. This account is also used when you publish apps directly from Visual Studio to Azure.

> [!IMPORTANT]
> You'll need to [install the **Azure development** workload](/dotnet/azure/configure-visual-studio#install-azure-workloads) to enable Visual Studio tooling for Azure authentication, development, and deployment.
> You'll need to [install the **Azure development** workload](../../configure-visual-studio.md#install-azure-workloads) to enable Visual Studio tooling for Azure authentication, development, and deployment.

1. Inside Visual Studio, navigate to **Tools** > **Options** to open the options dialog.
1. In the **Search Options** box at the top, type *Azure* to filter the available options.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Use aliases to resolve conflicting namespaces. For example:
using ContextMenu = System.Windows.Controls.ContextMenu;
```

Refer to the [alias name conflicts documentation](/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#alias-name-conflicts) for more details.
Refer to the [alias name conflicts documentation](../../../../csharp/language-reference/compiler-messages/using-directive-errors.md#alias-name-conflicts) for more details.

## Affected APIs

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/core/extensions/artificial-intelligence.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ In this way, the `RateLimitingEmbeddingGenerator` can be composed with other `IE

- [Develop .NET applications with AI features](../../ai/get-started/dotnet-ai-overview.md)
- [Unified AI building blocks for .NET using Microsoft.Extensions.AI](../../ai/ai-extensions.md)
- [Build an AI chat app with .NET](/dotnet/ai/quickstarts/build-chat-app)
- [Build an AI chat app with .NET](../../ai/quickstarts/build-chat-app.md)
- [.NET dependency injection](dependency-injection.md)
- [Rate limit an HTTP handler in .NET](http-ratelimiter.md)
- [.NET Generic Host](generic-host.md)
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 @@ -61,7 +61,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 @@ -67,7 +67,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.

## Trim whitespace

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 language="csharp" interactive="try-dotnet-method" source="snippets/shared/LambdaOperator.cs" id="InferredTypes":::

Expand Down
Loading