# Projects and dependencies analysis This document provides a comprehensive overview of the projects and their dependencies in the context of upgrading to .NETCoreApp,Version=v10.0. ## Table of Contents - [Executive Summary](#executive-Summary) - [Highlevel Metrics](#highlevel-metrics) - [Projects Compatibility](#projects-compatibility) - [Package Compatibility](#package-compatibility) - [API Compatibility](#api-compatibility) - [Aggregate NuGet packages details](#aggregate-nuget-packages-details) - [Top API Migration Challenges](#top-api-migration-challenges) - [Technologies and Features](#technologies-and-features) - [Most Frequent API Issues](#most-frequent-api-issues) - [Projects Relationship Graph](#projects-relationship-graph) - [Project Details](#project-details) - [HorseRacingPredictor\BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) ## Executive Summary ### Highlevel Metrics | Metric | Count | Status | | :--- | :---: | :--- | | Total Projects | 1 | All require upgrade | | Total NuGet Packages | 26 | 9 need upgrade | | Total Code Files | 39 | | | Total Code Files with Incidents | 27 | | | Total Lines of Code | 7140 | | | Total Number of Issues | 2202 | | | Estimated LOC to modify | 2185+ | at least 30,6% of codebase | ### Projects Compatibility | Project | Target Framework | Difficulty | Package Issues | API Issues | Est. LOC Impact | Description | | :--- | :---: | :---: | :---: | :---: | :---: | :--- | | [HorseRacingPredictor\BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | net481 | 🟡 Medium | 15 | 2185 | 2185+ | ClassicWpf, Sdk Style = False | ### Package Compatibility | Status | Count | Percentage | | :--- | :---: | :---: | | ✅ Compatible | 17 | 65,4% | | ⚠️ Incompatible | 0 | 0,0% | | 🔄 Upgrade Recommended | 9 | 34,6% | | ***Total NuGet Packages*** | ***26*** | ***100%*** | ### API Compatibility | Category | Count | Impact | | :--- | :---: | :--- | | 🔴 Binary Incompatible | 897 | High - Require code changes | | 🟡 Source Incompatible | 1264 | Medium - Needs re-compilation and potential conflicting API error fixing | | 🔵 Behavioral change | 24 | Low - Behavioral changes that may require testing at runtime | | ✅ Compatible | 10445 | | | ***Total APIs Analyzed*** | ***12630*** | | ## Aggregate NuGet packages details | Package | Current Version | Suggested Version | Projects | Description | | :--- | :---: | :---: | :--- | :--- | | CsvHelper | 33.1.0 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.Bcl.AsyncInterfaces | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | Microsoft.Bcl.HashCode | 6.0.0 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.Bcl.Numerics | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | Microsoft.CSharp | 4.7.0 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.ML | 5.0.0-preview.25503.2 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.ML.CpuMath | 5.0.0-preview.25503.2 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.ML.DataView | 5.0.0-preview.25503.2 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.ML.FastTree | 5.0.0-preview.25503.2 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Microsoft.Web.WebView2 | 1.0.3800.47 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | Newtonsoft.Json | 13.0.4 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | RestSharp | 112.1.1-alpha.0.4 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | System.Buffers | 4.6.1 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | Le funzionalità del pacchetto NuGet sono incluse nel riferimento al framework. | | System.CodeDom | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.Collections.Immutable | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.IO.Pipelines | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.Memory | 4.6.3 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | Le funzionalità del pacchetto NuGet sono incluse nel riferimento al framework. | | System.Numerics.Tensors | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.Numerics.Vectors | 4.6.1 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | Le funzionalità del pacchetto NuGet sono incluse nel riferimento al framework. | | System.Reflection.Emit.Lightweight | 4.7.0 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | Le funzionalità del pacchetto NuGet sono incluse nel riferimento al framework. | | System.Runtime.CompilerServices.Unsafe | 6.1.2 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | ✅Compatible | | System.Text.Encodings.Web | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.Text.Json | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.Threading.Channels | 10.0.0-rc.1.25451.107 | 10.0.5 | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | | System.Threading.Tasks.Extensions | 4.6.3 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | Le funzionalità del pacchetto NuGet sono incluse nel riferimento al framework. | | System.ValueTuple | 4.6.1 | | [BettingPredictor.csproj](#horseracingpredictorbettingpredictorcsproj) | Le funzionalità del pacchetto NuGet sono incluse nel riferimento al framework. | ## Top API Migration Challenges ### Technologies and Features | Technology | Issues | Percentage | Migration Path | | :--- | :---: | :---: | :--- | | WPF (Windows Presentation Foundation) | 566 | 25,9% | WPF APIs for building Windows desktop applications with XAML-based UI that are available in .NET on Windows. WPF provides rich desktop UI capabilities with data binding and styling. Enable Windows Desktop support: Option 1 (Recommended): Target net9.0-windows; Option 2: Add true. | | Windows Forms | 18 | 0,8% | Windows Forms APIs for building Windows desktop applications with traditional Forms-based UI that are available in .NET on Windows. Enable Windows Desktop support: Option 1 (Recommended): Target net9.0-windows; Option 2: Add true; Option 3 (Legacy): Use Microsoft.NET.Sdk.WindowsDesktop SDK. | | Legacy Configuration System | 2 | 0,1% | Legacy XML-based configuration system (app.config/web.config) that has been replaced by a more flexible configuration model in .NET Core. The old system was rigid and XML-based. Migrate to Microsoft.Extensions.Configuration with JSON/environment variables; use System.Configuration.ConfigurationManager NuGet package as interim bridge if needed. | ### Most Frequent API Issues | API | Count | Percentage | Category | | :--- | :---: | :---: | :--- | | T:System.Data.SqlClient.SqlParameterCollection | 273 | 12,5% | Source Incompatible | | P:System.Data.SqlClient.SqlCommand.Parameters | 273 | 12,5% | Source Incompatible | | T:System.Data.SqlClient.SqlParameter | 273 | 12,5% | Source Incompatible | | M:System.Data.SqlClient.SqlParameterCollection.AddWithValue(System.String,System.Object) | 270 | 12,4% | Source Incompatible | | T:System.Windows.Controls.TextBox | 81 | 3,7% | Binary Incompatible | | T:System.Windows.Controls.TextBlock | 57 | 2,6% | Binary Incompatible | | T:System.Windows.RoutedEventHandler | 52 | 2,4% | Binary Incompatible | | P:System.Windows.Controls.TextBox.Text | 47 | 2,2% | Binary Incompatible | | T:System.Windows.Controls.Button | 42 | 1,9% | Binary Incompatible | | T:System.Windows.Controls.ComboBox | 41 | 1,9% | Binary Incompatible | | P:System.Windows.Controls.TextBlock.Text | 40 | 1,8% | Binary Incompatible | | T:System.Windows.Visibility | 40 | 1,8% | Binary Incompatible | | T:System.Data.SqlClient.SqlConnection | 35 | 1,6% | Source Incompatible | | T:System.Data.SqlClient.SqlCommand | 33 | 1,5% | Source Incompatible | | T:System.Windows.MessageBoxImage | 30 | 1,4% | Binary Incompatible | | T:System.Windows.MessageBoxButton | 30 | 1,4% | Binary Incompatible | | M:System.Data.SqlClient.SqlCommand.ExecuteNonQuery | 23 | 1,1% | Source Incompatible | | M:System.Data.SqlClient.SqlCommand.#ctor(System.String,System.Data.SqlClient.SqlConnection) | 22 | 1,0% | Source Incompatible | | T:System.Windows.Controls.DatePicker | 22 | 1,0% | Binary Incompatible | | T:System.Windows.Controls.CheckBox | 20 | 0,9% | Binary Incompatible | | T:System.Windows.Controls.RadioButton | 19 | 0,9% | Binary Incompatible | | T:System.Windows.RoutedEventArgs | 17 | 0,8% | Binary Incompatible | | T:System.Text.Json.JsonDocument | 16 | 0,7% | Behavioral Change | | T:System.Windows.Controls.SelectionChangedEventHandler | 16 | 0,7% | Binary Incompatible | | T:System.Windows.Controls.TextChangedEventHandler | 16 | 0,7% | Binary Incompatible | | F:System.Windows.MessageBoxButton.OK | 15 | 0,7% | Binary Incompatible | | T:System.Windows.MessageBox | 15 | 0,7% | Binary Incompatible | | T:System.Windows.MessageBoxResult | 15 | 0,7% | Binary Incompatible | | M:System.Windows.MessageBox.Show(System.String,System.String,System.Windows.MessageBoxButton,System.Windows.MessageBoxImage) | 15 | 0,7% | Binary Incompatible | | T:System.Windows.Controls.ProgressBar | 14 | 0,6% | Binary Incompatible | | P:System.Windows.UIElement.IsEnabled | 14 | 0,6% | Binary Incompatible | | P:System.Windows.Controls.ContentControl.Content | 13 | 0,6% | Binary Incompatible | | T:System.Windows.Controls.Grid | 12 | 0,5% | Binary Incompatible | | M:System.Data.SqlClient.SqlCommand.#ctor(System.String,System.Data.SqlClient.SqlConnection,System.Data.SqlClient.SqlTransaction) | 11 | 0,5% | Source Incompatible | | E:System.Windows.Controls.Primitives.ButtonBase.Click | 11 | 0,5% | Binary Incompatible | | T:System.Data.SqlClient.SqlTransaction | 10 | 0,5% | Source Incompatible | | E:System.Windows.Controls.Primitives.ToggleButton.Checked | 10 | 0,5% | Binary Incompatible | | P:System.Windows.Controls.DatePicker.SelectedDate | 10 | 0,5% | Binary Incompatible | | P:System.Windows.Controls.Primitives.RangeBase.Value | 10 | 0,5% | Binary Incompatible | | P:System.Windows.Controls.Primitives.Selector.SelectedItem | 9 | 0,4% | Binary Incompatible | | P:System.Windows.Controls.Primitives.ToggleButton.IsChecked | 9 | 0,4% | Binary Incompatible | | M:System.Data.SqlClient.SqlCommand.ExecuteScalar | 8 | 0,4% | Source Incompatible | | T:System.Windows.Controls.DataGrid | 8 | 0,4% | Binary Incompatible | | F:System.Windows.Visibility.Visible | 8 | 0,4% | Binary Incompatible | | F:System.Windows.Visibility.Collapsed | 8 | 0,4% | Binary Incompatible | | P:System.Windows.UIElement.Visibility | 8 | 0,4% | Binary Incompatible | | E:System.Windows.Controls.Primitives.Selector.SelectionChanged | 8 | 0,4% | Binary Incompatible | | E:System.Windows.Controls.Primitives.TextBoxBase.TextChanged | 8 | 0,4% | Binary Incompatible | | F:System.Windows.MessageBoxImage.Error | 7 | 0,3% | Binary Incompatible | | T:System.Uri | 6 | 0,3% | Behavioral Change | ## Projects Relationship Graph Legend: 📦 SDK-style project ⚙️ Classic project ```mermaid flowchart LR P1["⚙️ BettingPredictor.csproj
net481"] click P1 "#horseracingpredictorbettingpredictorcsproj" ``` ## Project Details ### HorseRacingPredictor\BettingPredictor.csproj #### Project Info - **Current Target Framework:** net481 - **Proposed Target Framework:** net10.0-windows - **SDK-style**: False - **Project Kind:** ClassicWpf - **Dependencies**: 0 - **Dependants**: 0 - **Number of Files**: 43 - **Number of Files with Incidents**: 27 - **Lines of Code**: 7140 - **Estimated LOC to modify**: 2185+ (at least 30,6% of the project) #### Dependency Graph Legend: 📦 SDK-style project ⚙️ Classic project ```mermaid flowchart TB subgraph current["BettingPredictor.csproj"] MAIN["⚙️ BettingPredictor.csproj
net481"] click MAIN "#horseracingpredictorbettingpredictorcsproj" end ``` ### API Compatibility | Category | Count | Impact | | :--- | :---: | :--- | | 🔴 Binary Incompatible | 897 | High - Require code changes | | 🟡 Source Incompatible | 1264 | Medium - Needs re-compilation and potential conflicting API error fixing | | 🔵 Behavioral change | 24 | Low - Behavioral changes that may require testing at runtime | | ✅ Compatible | 10445 | | | ***Total APIs Analyzed*** | ***12630*** | | #### Project Technologies and Features | Technology | Issues | Percentage | Migration Path | | :--- | :---: | :---: | :--- | | Legacy Configuration System | 2 | 0,1% | Legacy XML-based configuration system (app.config/web.config) that has been replaced by a more flexible configuration model in .NET Core. The old system was rigid and XML-based. Migrate to Microsoft.Extensions.Configuration with JSON/environment variables; use System.Configuration.ConfigurationManager NuGet package as interim bridge if needed. | | Windows Forms | 18 | 0,8% | Windows Forms APIs for building Windows desktop applications with traditional Forms-based UI that are available in .NET on Windows. Enable Windows Desktop support: Option 1 (Recommended): Target net9.0-windows; Option 2: Add true; Option 3 (Legacy): Use Microsoft.NET.Sdk.WindowsDesktop SDK. | | WPF (Windows Presentation Foundation) | 566 | 25,9% | WPF APIs for building Windows desktop applications with XAML-based UI that are available in .NET on Windows. WPF provides rich desktop UI capabilities with data binding and styling. Enable Windows Desktop support: Option 1 (Recommended): Target net9.0-windows; Option 2: Add true. |