Skip to content
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

Merge main into live #44122

Merged
merged 6 commits into from
Jan 1, 2025
Merged
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: 4 additions & 0 deletions docs/core/compatibility/serialization/8.0/publishtrimmed.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,7 @@ However, if you must use reflection, you can revert to the original behavior by
## Affected APIs

N/A

## See also

- [Trimming options: Enable trimming](../../../deploying/trimming/trimming-options.md#enable-trimming)
1 change: 1 addition & 0 deletions docs/core/install/linux-alpine.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ When you install with a package manager, these libraries are installed for you.
- libssl3
- libstdc++
- zlib
- icu-libs and icu-data-full (unless the .NET app is running in [globalization-invariant mode](../runtime-config/globalization.md#invariant-mode)
- libgdiplus (if the .NET app requires the *System.Drawing.Common* assembly)

Use the `apk add` command to install the dependencies.
Expand Down
3 changes: 2 additions & 1 deletion docs/core/tools/dotnet-install-script.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ ms.date: 12/26/2024
---
# dotnet-install scripts reference

Note: The behavior of the install script has changed. It downloads .NET from new network locations. Please see [Critical: .NET Install links are changing](https://devblogs.microsoft.com/dotnet/critical-dotnet-install-links-are-changing/) for more information.
> [!NOTE]
> The behavior of the install script has changed. It downloads .NET from new network locations. For more information, see [Critical: .NET Install links are changing](https://devblogs.microsoft.com/dotnet/critical-dotnet-install-links-are-changing/).

## Name

Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/keywords/value.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ helpviewer_keywords:
---
# The `value` implicit parameter

The implicit parameter `value` is used in the `set` accessor in [property](../../programming-guide/classes-and-structs/properties.md) and [indexer](../../programming-guide/indexers/index.md) declarations. It's an input parameter of a method. The word `value` references the value that client code is attempting to assign to the property or indexer. In the following example, `TimePeriod2` has a property called `Name` that uses the `value` parameter to assign a new string to the backing field `name`. From the point of view of client code, the operation is written as a simple assignment.
The implicit parameter `value` is used in the `set` accessor in [property](../../programming-guide/classes-and-structs/properties.md) and [indexer](../../programming-guide/indexers/index.md) declarations. It's an input parameter of a method. The word `value` references the value that client code is attempting to assign to the property or indexer. In the following example, `TimePeriod2` has a property called `Seconds` that uses the `value` parameter to assign a new string to the backing field `_seconds`. From the point of view of client code, the operation is written as a simple assignment.

:::code language="csharp" source="./snippets/PropertyAccessors.cs" id="GetSetExpressions":::

Expand Down
24 changes: 16 additions & 8 deletions docs/fundamentals/code-analysis/style-rules/ide0079.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "IDE0079: Remove unnecessary suppression"
description: "Learn about code analysis rule IDE0079: Remove unnecessary suppression"
ms.date: 03/23/2023
ms.date: 12/27/2024
f1_keywords:
- IDE0079
- dotnet_remove_unnecessary_suppression_exclusions
Expand Down Expand Up @@ -71,15 +71,23 @@ class C2

Options specify the behavior that you want the rule to enforce. For information about configuring options, see [Option format](language-rules.md#option-format).

> [!NOTE]
> Setting a severity in the format `option_name = value:severity` doesn't apply to the `dotnet_remove_unnecessary_suppression_exclusions` option and should be avoided. Instead, specify the severity using a separate entry, for example:
>
> ```ini
> dotnet_remove_unnecessary_suppression_exclusions = none
> dotnet_diagnostic.IDE0079.severity = warning
> ```

### dotnet_remove_unnecessary_suppression_exclusions

| Property | Value | Description |
| ------------------------ | ------------------------------------------------------------------------ | ---------------------------------------------- |
| **Option name** | dotnet_remove_unnecessary_suppression_exclusions | |
| **Option values** | `,` separated list of rule IDs or categories (prefixed with `category:`) | Excludes suppressions for the listed rules |
| | `all` | Disables the rule (all rule IDs excluded) |
| | `none` | Enables the rule for all rules (no exclusions) |
| **Default option value** | `none` | |
| Property | Value | Description |
|--------------------------|--------------------------------------------------|------------------------------------------------|
| **Option name** | dotnet_remove_unnecessary_suppression_exclusions | |
| **Option values** | Comma-separated list of rule IDs or categories (prefixed with `category:`) | Excludes suppressions for the listed rules or categories |
| | `all` | Disables the rule (all rule IDs excluded) |
| | `none` | Enables the rule for all rules (no exclusions) |
| **Default option value** | `none` | |

```csharp
using System.Diagnostics.CodeAnalysis;
Expand Down
208 changes: 77 additions & 131 deletions docs/standard/linq/stream-xml-fragments-xmlreader.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,163 +27,109 @@ The article [How to perform streaming transform of large XML documents](perform-
This example creates a custom axis method. You can query it by using a LINQ query. The custom axis method `StreamRootChildDoc` can read a document that has a repeating `Child` element.

```csharp
using System.Xml;
using System.Xml.Linq;

static IEnumerable<XElement> StreamRootChildDoc(StringReader stringReader)
{
using (XmlReader reader = XmlReader.Create(stringReader))
using XmlReader reader = XmlReader.Create(stringReader);

reader.MoveToContent();

// Parse the file and display each of the nodes.
while (true)
{
reader.MoveToContent();
// Parse the file and display each of the nodes.
while (reader.Read())
// If the current node is an element and named "Child"
if (reader.NodeType == XmlNodeType.Element && reader.Name == "Child")
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "Child") {
XElement el = XElement.ReadFrom(reader) as XElement;
if (el != null)
yield return el;
}
break;
}
// Get the current node and advance the reader to the next
if (XNode.ReadFrom(reader) is XElement el)
yield return el;

}
else if (!reader.Read())
break;
}
}

static void Main(string[] args)
{
string markup = @"<Root>
<Child Key=""01"">
<GrandChild>aaa</GrandChild>
</Child>
<Child Key=""02"">
<GrandChild>bbb</GrandChild>
</Child>
<Child Key=""03"">
<GrandChild>ccc</GrandChild>
</Child>
</Root>";

IEnumerable<string> grandChildData =
from el in StreamRootChildDoc(new StringReader(markup))
where (int)el.Attribute("Key") > 1
select (string)el.Element("GrandChild");

foreach (string str in grandChildData) {
Console.WriteLine(str);
}
}
string markup = """
<Root>
<Child Key="01">
<GrandChild>aaa</GrandChild>
</Child>
<Child Key="02">
<GrandChild>bbb</GrandChild>
</Child>
<Child Key="03">
<GrandChild>ccc</GrandChild>
</Child>
</Root>
""";

IEnumerable<string> grandChildData =
from el in StreamRootChildDoc(new StringReader(markup))
where (int)el.Attribute("Key") > 1
select (string)el.Element("GrandChild");

foreach (string str in grandChildData)
Console.WriteLine(str);
```

```vb
Module Module1
Sub Main()
Dim markup = "<Root>" &
" <Child Key=""01"">" &
" <GrandChild>aaa</GrandChild>" &
" </Child>" &
" <Child Key=""02"">" &
" <GrandChild>bbb</GrandChild>" &
" </Child>" &
" <Child Key=""03"">" &
" <GrandChild>ccc</GrandChild>" &
" </Child>" &
"</Root>"

Dim grandChildData =
From el In New StreamRootChildDoc(New IO.StringReader(markup))
Where CInt(el.@Key) > 1
Select el.<GrandChild>.Value

For Each s In grandChildData
Console.WriteLine(s)
Next
End Sub
End Module

Public Class StreamRootChildDoc
Implements IEnumerable(Of XElement)
Imports System.Xml

Private _stringReader As IO.StringReader

Public Sub New(ByVal stringReader As IO.StringReader)
_stringReader = stringReader
End Sub

Public Function GetEnumerator() As IEnumerator(Of XElement) Implements IEnumerable(Of XElement).GetEnumerator
Return New StreamChildEnumerator(_stringReader)
End Function
Module Module1

Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator
Return Me.GetEnumerator()
End Function
End Class
Public Iterator Function StreamRootChildDoc(stringReader As IO.StringReader) As IEnumerable(Of XElement)
Using reader As XmlReader = XmlReader.Create(stringReader)
reader.MoveToContent()

Public Class StreamChildEnumerator
Implements IEnumerator(Of XElement)
' Parse the file and display each of the nodes.
While True

Private _current As XElement
Private _reader As Xml.XmlReader
Private _stringReader As IO.StringReader
' If the current node is an element and named "Child"
If reader.NodeType = XmlNodeType.Element And reader.Name = "Child" Then

Public Sub New(ByVal stringReader As IO.StringReader)
_stringReader = stringReader
_reader = Xml.XmlReader.Create(_stringReader)
_reader.MoveToContent()
End Sub
' Get the current node and advance the reader to the next
Dim el As XElement = TryCast(XNode.ReadFrom(reader), XElement)

Public ReadOnly Property Current As XElement Implements IEnumerator(Of XElement).Current
Get
Return _current
End Get
End Property

Public ReadOnly Property Current1 As Object Implements IEnumerator.Current
Get
Return Me.Current
End Get
End Property

Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
While _reader.Read()
Select Case _reader.NodeType
Case Xml.XmlNodeType.Element
Dim el = TryCast(XElement.ReadFrom(_reader), XElement)
If el IsNot Nothing Then
_current = el
Return True
If (el IsNot Nothing) Then
Yield el
End If
End Select
End While

Return False
ElseIf Not reader.Read() Then
Exit While
End If

End While
End Using
End Function

Public Sub Reset() Implements IEnumerator.Reset
_reader = Xml.XmlReader.Create(_stringReader)
_reader.MoveToContent()
End Sub
Sub Main()

#Region "IDisposable Support"
Dim markup = "<Root>
<Child Key=""01"">
<GrandChild>aaa</GrandChild>
</Child>
<Child Key=""02"">
<GrandChild>bbb</GrandChild>
</Child>
<Child Key=""03"">
<GrandChild>ccc</GrandChild>
</Child>
</Root>"

Private disposedValue As Boolean ' To detect redundant calls
Dim grandChildData =
From el In StreamRootChildDoc(New IO.StringReader(markup))
Where CInt(el.@Key) > 1
Select el.<GrandChild>.Value

' IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
_reader.Close()
End If
End If
Me.disposedValue = True
End Sub
For Each s In grandChildData
Console.WriteLine(s)
Next

Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region

End Class
End Module
```

This example produces the following output:
Expand Down
Loading