Skip to content

Commit 69df784

Browse files
Merge pull request #47595 from dotnet/main
Merge main into live
2 parents 8c4edcd + cc2d50a commit 69df784

File tree

12 files changed

+96
-24
lines changed

12 files changed

+96
-24
lines changed

.github/copilot-instructions.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
When you're assigned an issue, after you've completed your work and the workflows (status checks) have run, check to make sure there are no build warnings under the OpenPublishing.Build status check. If there are, open the build report (under View Details) and resolve any build warnings you introduced.
2+
13
When writing documentation, follow the following guidelines:
24

35
Unless otherwise specified, all .NET content refers to modern .NET (not .NET Framework).

.github/policies/label-issues.yml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,12 @@ configuration:
3131
* 'needs-more-info' label removed
3232
if:
3333
- payloadType: Issues
34-
- or:
35-
34+
- or:
3635
- or:
3736
- isAction:
3837
action: Opened
3938
- isAction:
40-
action: Reopened
41-
39+
action: Reopened
4240
- labelRemoved:
4341
label: 'needs-more-info'
4442
then:
@@ -57,8 +55,7 @@ configuration:
5755
- isAction:
5856
action: Closed
5957
- isActivitySender:
60-
issueAuthor: true
61-
58+
issueAuthor: true
6259
- labelAdded:
6360
label: ':world_map: reQUEST'
6461
then:
@@ -71,7 +68,6 @@ configuration:
7168
- or:
7269
- payloadType: Issues
7370
- payloadType: Pull_Request
74-
7571
- labelAdded:
7672
label: ':world_map: mapQUEST'
7773
then:
@@ -97,8 +93,7 @@ configuration:
9793
- isAction:
9894
action: Reopened
9995
- hasLabel:
100-
label: "won't fix"
101-
96+
label: "won't fix"
10297
then:
10398
- removeLabel:
10499
label: "won't fix"
@@ -109,8 +104,7 @@ configuration:
109104
- isAction:
110105
action: Closed
111106
- hasLabel:
112-
label: 'in-progress'
113-
107+
label: 'in-progress'
114108
then:
115109
- removeLabel:
116110
label: 'in-progress'
@@ -122,7 +116,9 @@ configuration:
122116
action: Closed
123117
- isActivitySender:
124118
issueAuthor: true
125-
119+
- not:
120+
activitySenderHasAssociation:
121+
association: Member
126122
then:
127123
- addLabel:
128124
label: resolved-by-customer

docs/ai/conceptual/evaluation-libraries.md

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: The Microsoft.Extensions.AI.Evaluation libraries
33
description: Learn about the Microsoft.Extensions.AI.Evaluation libraries, which simplify the process of evaluating the quality and accuracy of responses generated by AI models in .NET intelligent apps.
44
ms.topic: concept-article
5-
ms.date: 05/13/2025
5+
ms.date: 07/24/2025
66
---
77
# The Microsoft.Extensions.AI.Evaluation libraries
88

@@ -11,8 +11,9 @@ The Microsoft.Extensions.AI.Evaluation libraries simplify the process of evaluat
1111
The evaluation libraries, which are built on top of the [Microsoft.Extensions.AI abstractions](../microsoft-extensions-ai.md), are composed of the following NuGet packages:
1212

1313
- [📦 Microsoft.Extensions.AI.Evaluation](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation) – Defines the core abstractions and types for supporting evaluation.
14-
- [📦 Microsoft.Extensions.AI.Evaluation.Quality](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Quality) – Contains evaluators that assess the quality of LLM responses in an app according to metrics such as relevance and completeness. These evaluators use the LLM directly to perform evaluations.
15-
- [📦 Microsoft.Extensions.AI.Evaluation.Safety](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Safety) – Contains evaluators, such as the `ProtectedMaterialEvaluator` and `ContentHarmEvaluator`, that use the [Azure AI Foundry](/azure/ai-foundry/) Evaluation service to perform evaluations.
14+
- [📦 Microsoft.Extensions.AI.Evaluation.NLP](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.NLP) - Contains [evaluators](#nlp-evaluators) that evaluate the similarity of an LLM's response text to one or more reference responses using natural language processing (NLP) metrics. These evaluators aren't LLM or AI-based; they use traditional NLP techniques such as text tokenization and n-gram analysis to evaluate text similarity.
15+
- [📦 Microsoft.Extensions.AI.Evaluation.Quality](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Quality) – Contains [evaluators](#quality-evaluators) that assess the quality of LLM responses in an app according to metrics such as relevance and completeness. These evaluators use the LLM directly to perform evaluations.
16+
- [📦 Microsoft.Extensions.AI.Evaluation.Safety](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Safety) – Contains [evaluators](#safety-evaluators), such as the `ProtectedMaterialEvaluator` and `ContentHarmEvaluator`, that use the [Azure AI Foundry](/azure/ai-foundry/) Evaluation service to perform evaluations.
1617
- [📦 Microsoft.Extensions.AI.Evaluation.Reporting](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Reporting) – Contains support for caching LLM responses, storing the results of evaluations, and generating reports from that data.
1718
- [📦 Microsoft.Extensions.AI.Evaluation.Reporting.Azure](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Reporting.Azure) - Supports the reporting library with an implementation for caching LLM responses and storing the evaluation results in an [Azure Storage](/azure/storage/common/storage-introduction) container.
1819
- [📦 Microsoft.Extensions.AI.Evaluation.Console](https://www.nuget.org/packages/Microsoft.Extensions.AI.Evaluation.Console) – A command-line tool for generating reports and managing evaluation data.
@@ -23,7 +24,7 @@ The libraries are designed to integrate smoothly with existing .NET apps, allowi
2324

2425
## Comprehensive evaluation metrics
2526

26-
The evaluation libraries were built in collaboration with data science researchers from Microsoft and GitHub, and were tested on popular Microsoft Copilot experiences. The following sections show the built-in [quality](#quality-evaluators) and [safety](#safety-evaluators) evaluators and the metrics they measure.
27+
The evaluation libraries were built in collaboration with data science researchers from Microsoft and GitHub, and were tested on popular Microsoft Copilot experiences. The following sections show the built-in [quality](#quality-evaluators), [NLP](#nlp-evaluators), and [safety](#safety-evaluators) evaluators and the metrics they measure.
2728

2829
You can also customize to add your own evaluations by implementing the <xref:Microsoft.Extensions.AI.Evaluation.IEvaluator> interface.
2930

@@ -41,9 +42,22 @@ Quality evaluators measure response quality. They use an LLM to perform the eval
4142
| <xref:Microsoft.Extensions.AI.Evaluation.Quality.EquivalenceEvaluator> | `Equivalence` | Evaluates the similarity between the generated text and its ground truth with respect to a query |
4243
| <xref:Microsoft.Extensions.AI.Evaluation.Quality.GroundednessEvaluator> | `Groundedness` | Evaluates how well a generated response aligns with the given context |
4344
| <xref:Microsoft.Extensions.AI.Evaluation.Quality.RelevanceTruthAndCompletenessEvaluator>| `Relevance (RTC)`, `Truth (RTC)`, and `Completeness (RTC)` | Evaluates how relevant, truthful, and complete a response is |
45+
| <xref:Microsoft.Extensions.AI.Evaluation.Quality.IntentResolutionEvaluator> | `Intent Resolution` | Evaluates an AI system's effectiveness at identifying and resolving user intent (agent-focused) |
46+
| <xref:Microsoft.Extensions.AI.Evaluation.Quality.TaskAdherenceEvaluator> | `Task Adherence` | Evaluates an AI system's effectiveness at adhering to the task assigned to it (agent-focused) |
47+
| <xref:Microsoft.Extensions.AI.Evaluation.Quality.ToolCallAccuracyEvaluator> | `Tool Call Accuracy` | Evaluates an AI system's effectiveness at using the tools supplied to it (agent-focused) |
4448

4549
† This evaluator is marked [experimental](../../fundamentals/syslib-diagnostics/experimental-overview.md).
4650

51+
### NLP evaluators
52+
53+
NLP evaluators evaluate the quality of an LLM response by comparing it to a reference response using natural language processing (NLP) techniques. These evaluators aren't LLM or AI-based; instead, they use older NLP techniques to perform text comparisons.
54+
55+
| Evaluator type | Metric | Description |
56+
|---------------------------------------------------------------------------|--------------------|-------------|
57+
| <xref:Microsoft.Extensions.AI.Evaluation.NLP.BLEUEvaluator> | `BLEU` | Evaluates a response by comparing it to one or more reference responses using the bilingual evaluation understudy (BLEU) algorithm. This algorithm is commonly used to evaluate the quality of machine-translation or text-generation tasks. |
58+
| <xref:Microsoft.Extensions.AI.Evaluation.NLP.GLEUEvaluator> | `GLEU` | Measures the similarity between the generated response and one or more reference responses using the Google BLEU (GLEU) algorithm, a variant of the BLEU algorithm that's optimized for sentence-level evaluation. |
59+
| <xref:Microsoft.Extensions.AI.Evaluation.NLP.F1Evaluator> | `F1` | Evaluates a response by comparing it to a reference response using the *F1* scoring algorithm (the ratio of the number of shared words between the generated response and the reference response). |
60+
4761
### Safety evaluators
4862

4963
Safety evaluators check for presence of harmful, inappropriate, or unsafe content in a response. They rely on the Azure AI Foundry Evaluation service, which uses a model that's fine tuned to perform evaluations.

docs/core/additional-tools/uninstall-tool-cli-dry-run.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ dotnet-core-uninstall dry-run -h|--help|-?
4949

5050
## Description
5151

52-
The `dotnet-core-uninstall list` command simulates .NET SDK and runtime removal. A status output is provided for each .NET SDK and runtime that would have been removed by the tool.
52+
The `dotnet-core-uninstall dry-run` command simulates .NET SDK and runtime removal. A status output is provided for each .NET SDK and runtime that would have been removed by the tool.
5353

5454
### Arguments
5555

docs/core/compatibility/10.0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
3030
| [Consistent shift behavior in generic math](core-libraries/10.0/generic-math.md) | Behavioral change | Preview 1 |
3131
| [Default trace context propagator updated to W3C standard](core-libraries/10.0/default-trace-context-propagator.md) | Behavioral change | Preview 4 |
3232
| [DriveInfo.DriveFormat returns Linux filesystem types](core-libraries/10.0/driveinfo-driveformat-linux.md) | Behavioral change | Preview 6 |
33+
| [GnuTarEntry and PaxTarEntry no longer includes atime and ctime by default](core-libraries/10.0/tar-atime-ctime-default.md) | Behavioral change | Preview 5 |
3334
| [LDAP DirectoryControl parsing is now more stringent](core-libraries/10.0/ldap-directorycontrol-parsing.md) | Behavioral change | Preview 1 |
3435
| [MacCatalyst version normalization](core-libraries/10.0/maccatalyst-version-normalization.md) | Behavioral change | Preview 1 |
3536
| [.NET runtime no longer provides default SIGTERM signal handler](core-libraries/10.0/sigterm-signal-handler.md) | Behavioral change | Preview 5 |
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
title: "Breaking change: GnuTarEntry and PaxTarEntry exclude atime and ctime by default"
3+
description: "Learn about the breaking change in .NET 10 where GnuTarEntry and PaxTarEntry no longer automatically set access time and change time fields."
4+
ms.date: 06/05/2025
5+
ai-usage: ai-assisted
6+
ms.custom: https://github.com/dotnet/docs/issues/46465
7+
---
8+
# GnuTarEntry and PaxTarEntry exclude atime and ctime by default
9+
10+
Starting in .NET 10, <xref:System.Formats.Tar.GnuTarEntry> and <xref:System.Formats.Tar.PaxTarEntry> no longer automatically set access time (`atime`) and change time (`ctime`) fields when creating new entries. These fields are problematic in tar entries because not all tar readers support them. The fields will still be preserved when reading, and you set them directly. But they won't be set on existing entries that didn't have them to start, or when converting from other entry types.
11+
12+
The behavior of <xref:System.Formats.Tar.TarEntry.ModificationTime?displayProperty=nameWithType> is unchanged. It's initialized to <xref:System.DateTime.UtcNow> for tar entries created with a constructor, and uses the file modification time for entries created from files.
13+
14+
Other minor fixes have been made to <xref:System.Formats.Tar> to prioritize round-tripping of `TarEntry` entries from read to write without change.
15+
16+
## Version introduced
17+
18+
.NET 10 Preview 5
19+
20+
## Previous behavior
21+
22+
Previously, `GnuTarEntry` and `PaxTarEntry` always added `atime` and `ctime` values when creating new entries.
23+
24+
## New behavior
25+
26+
Starting in .NET 10, `GnuTarEntry` and `PaxTarEntry` only set `atime` and `ctime` if:
27+
28+
- The entry is read from a tar archive that already contains these fields.
29+
- The user explicitly set them using the appropriate properties.
30+
31+
The behavior of <xref:System.Formats.Tar.TarEntry.ModificationTime?displayProperty=nameWithType> remains unchanged. It's initialized to <xref:System.DateTime.UtcNow?displayProperty=nameWithType> for tar entries created with a constructor, and uses the file modification time for entries created from files.
32+
33+
## Type of breaking change
34+
35+
This is a [behavioral change](../../categories.md#behavioral-change).
36+
37+
## Reason for change
38+
39+
This change was made for better compatibility with other tar readers and to improve round-tripping of tar files without modification.
40+
41+
## Recommended action
42+
43+
No action required for most users&mdash;most archives have no use for these timestamps.
44+
45+
If you require these fields to be set, you can use the following APIs:
46+
47+
- For `GnuTarEntry`: Use the <xref:System.Formats.Tar.GnuTarEntry.AccessTime?displayProperty=nameWithType> and <xref:System.Formats.Tar.GnuTarEntry.ChangeTime?displayProperty=nameWithType> properties.
48+
- For `PaxTarEntry`: Use the constructor that accepts extended attributes: <xref:System.Formats.Tar.PaxTarEntry.%23ctor(System.Formats.Tar.TarEntryType,System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}})>.
49+
50+
However, be aware that setting these fields creates a tar file that isn't readable by many tar clients.
51+
52+
## Affected APIs
53+
54+
- <xref:System.Formats.Tar.GnuTarEntry?displayProperty=fullName>
55+
- <xref:System.Formats.Tar.PaxTarEntry?displayProperty=fullName>
56+
- <xref:System.Formats.Tar.TarReader?displayProperty=fullName>
57+
- <xref:System.Formats.Tar.TarWriter?displayProperty=fullName>

docs/core/compatibility/sdk/8.0/source-link.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ The [Source Link](https://github.com/dotnet/sourcelink) build tooling is now inc
1212
1313
## Previous behavior
1414

15-
Prior to this change, the default `InformationalVersion` of a library or application was the `Version` property.
15+
Prior to this change, `InformationalVersion` did not include any build metadata. The default `InformationalVersion` of a library or application was the `Version` property.
1616

1717
## New behavior
1818

19-
Starting in .NET 8, the default `InformationalVersion` of a library or application is the `Version` property *and* the `SourceRevisionId` property.
19+
Starting in .NET 8, `InformationalVersion` includes the `SourceRevisionId` property in all cases. For example, the default `InformationalVersion` of a library or application is the `Version` property *and* the `SourceRevisionId` property.
2020

2121
## Version introduced
2222

docs/core/compatibility/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ items:
2626
href: core-libraries/10.0/default-trace-context-propagator.md
2727
- name: DriveInfo.DriveFormat returns Linux filesystem types
2828
href: core-libraries/10.0/driveinfo-driveformat-linux.md
29+
- name: GnuTarEntry and PaxTarEntry exclude atime and ctime by default
30+
href: core-libraries/10.0/tar-atime-ctime-default.md
2931
- name: LDAP DirectoryControl parsing is now more stringent
3032
href: core-libraries/10.0/ldap-directorycontrol-parsing.md
3133
- name: MacCatalyst version normalization

docs/core/tools/dotnet-msbuild.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The `dotnet msbuild` command allows access to a fully functional MSBuild.
2525

2626
The command has the exact same capabilities as the existing MSBuild command-line client for SDK-style projects only. The options are all the same. For more information about the available options, see the [MSBuild command-line reference](/visualstudio/msbuild/msbuild-command-line-reference).
2727

28-
The [dotnet build](dotnet-build.md) command is equivalent to `dotnet msbuild -restore`. When you don't want to build the project and you have a specific target you want to run, use `dotnet build` or `dotnet msbuild` and specify the target.
28+
The [dotnet build](dotnet-build.md) command is equivalent to `dotnet msbuild -restore`.
2929

3030
## Examples
3131

docs/core/tools/dotnet-tool-install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ For more information, see [Install a local tool](global-tools.md#install-a-local
195195

196196
Installs [dotnetsay](https://www.nuget.org/packages/dotnetsay/) as a local tool for the current directory.
197197

198-
- **`dotnet tool install -g --verbosity minimal`**
198+
- **`dotnet tool install -g dotnetsay --verbosity minimal`**
199199

200200
Installs [dotnetsay](https://www.nuget.org/packages/dotnetsay/) as a global tool with the verbosity of minimal. The default verbosity for global tool is quiet.
201201

0 commit comments

Comments
 (0)