# .NET 8.0 Upgrade Plan

## Execution Steps

Execute steps below sequentially one by one in the order they are listed.

1. Validate that an .NET 8.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed.
2. Ensure that the SDK version specified in global.json files is compatible with the .NET 8.0 upgrade.
3. Upgrade ClipTrimDotNet\ClipTrimDotNet.csproj
4. Run unit tests to validate upgrade in the projects listed below:
  - ClientTest\ClientTest.csproj

## Settings

This section contains settings and data used by execution steps.

### Excluded projects

| Project name                                   | Description                 |
|:-----------------------------------------------|:---------------------------:|

### Aggregate NuGet packages modifications across all projects

NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them.

| Package Name                        | Current Version | New Version | Description                                   |
|:------------------------------------|:---------------:|:-----------:|:----------------------------------------------|
| Microsoft.Bcl.AsyncInterfaces       |   10.0.2        |  8.0.0      | Recommended for .NET 8.0                      |
| Microsoft.Extensions.DependencyInjection | 10.0.2   |  8.0.1      | Recommended for .NET 8.0                      |
| Microsoft.Extensions.DependencyInjection.Abstractions | 10.0.2 | 8.0.2 | Recommended for .NET 8.0                      |
| Microsoft.Extensions.Logging        |   10.0.2        |  8.0.1      | Recommended for .NET 8.0                      |
| Microsoft.Extensions.Logging.Abstractions | 10.0.2   |  8.0.3      | Recommended for .NET 8.0                      |
| Microsoft.Extensions.Options        |   10.0.2        |  8.0.2      | Recommended for .NET 8.0                      |
| Microsoft.Extensions.Primitives     |   10.0.2        |  8.0.0      | Recommended for .NET 8.0                      |
| System.Diagnostics.DiagnosticSource |   10.0.2        |  8.0.1      | Recommended for .NET 8.0                      |
| System.Drawing.Common               |   9.0.10        |  8.0.24     | Recommended for .NET 8.0                      |
| System.IO.Pipelines                 |   10.0.2        |  8.0.0      | Recommended for .NET 8.0                      |
| System.Security.AccessControl       |   4.7.0         |  6.0.1      | Recommended for .NET 8.0                      |
| System.Text.Encodings.Web           |   10.0.2        |  8.0.0      | Recommended for .NET 8.0                      |
| System.Text.Json                    |   10.0.2        |  8.0.6      | Recommended for .NET 8.0                      |
| Microsoft.Win32.Registry            |   4.7.0         |             | Functionality included with framework         |
| System.Buffers                      |   4.6.1         |             | Functionality included with framework         |
| System.IO                           |   4.3.0         |             | Functionality included with framework         |
| System.Memory                       |   4.6.3         |             | Functionality included with framework         |
| System.Net.Http                     |   4.3.4         |             | Functionality included with framework         |
| System.Numerics.Vectors             |   4.6.1         |             | Functionality included with framework         |
| System.Runtime                      |   4.3.0         |             | Functionality included with framework         |
| System.Security.Cryptography.Algorithms | 4.3.0     |             | Functionality included with framework         |
| System.Security.Cryptography.Encoding | 4.3.0        |             | Functionality included with framework         |
| System.Security.Cryptography.Primitives | 4.3.0     |             | Functionality included with framework         |
| System.Security.Cryptography.X509Certificates | 4.3.0 |         | Functionality included with framework         |
| System.Security.Principal.Windows   |   4.7.0         |             | Functionality included with framework         |
| System.Threading.Tasks.Extensions   |   4.6.3         |             | Functionality included with framework         |
| System.ValueTuple                   |   4.6.1         |             | Functionality included with framework         |

### Project upgrade details

#### ClipTrimDotNet\ClipTrimDotNet.csproj modifications

Project properties changes:
  - Target framework should be changed from `.NETFramework,Version=v4.8` to `net8.0`
  - Project file should be converted to SDK-style

NuGet packages changes:
  - Update all packages listed in the NuGet packages table above as recommended
  - Remove packages whose functionality is now included with the framework

Other changes:
  - Ensure compatibility with .NET 8.0 APIs and features
  - Update code as needed for breaking changes
