|
|
@@ -0,0 +1,604 @@
|
|
|
+# 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)
|
|
|
+ - [Binding Redirect Configuration](#binding-redirect-configuration)
|
|
|
+- [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)
|
|
|
+
|
|
|
+ - [_Doc\_Doc.csproj](#_doc_doccsproj)
|
|
|
+ - [EntitySync\EntitySync.csproj](#entitysyncentitysynccsproj)
|
|
|
+ - [OASystem.Api\OASystem.API.csproj](#oasystemapioasystemapicsproj)
|
|
|
+ - [OASystem.Domain\OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)
|
|
|
+ - [OASystem.Infrastructure\OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj)
|
|
|
+ - [OASystem.RedisRepository\OASystem.RedisRepository.csproj](#oasystemredisrepositoryoasystemredisrepositorycsproj)
|
|
|
+ - [OpWin\OpWin.csproj](#opwinopwincsproj)
|
|
|
+
|
|
|
+
|
|
|
+## Executive Summary
|
|
|
+
|
|
|
+### Highlevel Metrics
|
|
|
+
|
|
|
+| Metric | Count | Status |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| Total Projects | 7 | All require upgrade |
|
|
|
+| Total NuGet Packages | 54 | 16 need upgrade |
|
|
|
+| Total Code Files | 663 | |
|
|
|
+| Total Code Files with Incidents | 47 | |
|
|
|
+| Total Lines of Code | 234099 | |
|
|
|
+| Total Number of Issues | 548 | |
|
|
|
+| Estimated LOC to modify | 522+ | at least 0.2% of codebase |
|
|
|
+
|
|
|
+### Projects Compatibility
|
|
|
+
|
|
|
+| Project | Target Framework | Difficulty | Package Issues | API Issues | Binding Issues | Est. LOC Impact | Description |
|
|
|
+| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :--- |
|
|
|
+| [_Doc\_Doc.csproj](#_doc_doccsproj) | net6.0 | 🟢 Low | 0 | 0 | 0 | | ClassLibrary, Sdk Style = True |
|
|
|
+| [EntitySync\EntitySync.csproj](#entitysyncentitysynccsproj) | net6.0 | 🟢 Low | 0 | 0 | 0 | | DotNetCoreApp, Sdk Style = True |
|
|
|
+| [OASystem.Api\OASystem.API.csproj](#oasystemapioasystemapicsproj) | net6.0 | 🟡 Medium | 9 | 255 | 0 | 255+ | AspNetCore, Sdk Style = True |
|
|
|
+| [OASystem.Domain\OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj) | net6.0 | 🟢 Low | 2 | 16 | 0 | 16+ | ClassLibrary, Sdk Style = True |
|
|
|
+| [OASystem.Infrastructure\OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | net6.0 | 🟢 Low | 7 | 9 | 0 | 9+ | ClassLibrary, Sdk Style = True |
|
|
|
+| [OASystem.RedisRepository\OASystem.RedisRepository.csproj](#oasystemredisrepositoryoasystemredisrepositorycsproj) | net6.0 | 🟢 Low | 1 | 2 | 0 | 2+ | ClassLibrary, Sdk Style = True |
|
|
|
+| [OpWin\OpWin.csproj](#opwinopwincsproj) | net6.0-windows | 🟡 Medium | 0 | 240 | 0 | 240+ | WinForms, Sdk Style = True |
|
|
|
+
|
|
|
+### Package Compatibility
|
|
|
+
|
|
|
+| Status | Count | Percentage |
|
|
|
+| :--- | :---: | :---: |
|
|
|
+| ✅ Compatible | 38 | 70.4% |
|
|
|
+| ⚠️ Incompatible | 6 | 11.1% |
|
|
|
+| 🔄 Upgrade Recommended | 10 | 18.5% |
|
|
|
+| ***Total NuGet Packages*** | ***54*** | ***100%*** |
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 291 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 98 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 133 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 251555 | |
|
|
|
+| ***Total APIs Analyzed*** | ***252077*** | |
|
|
|
+
|
|
|
+## Aggregate NuGet packages details
|
|
|
+
|
|
|
+| Package | Current Version | Suggested Version | Projects | Description |
|
|
|
+| :--- | :---: | :---: | :--- | :--- |
|
|
|
+| AlibabaCloud.SDK.Dysmsapi20170525 | 2.0.23 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| AspNetCore.HealthChecks.UI | 6.0.1 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| AspNetCore.HealthChecks.UI.Client | 6.0.2 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| AspNetCore.HealthChecks.UI.InMemory.Storage | 6.0.2 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| AspNetCoreRateLimit | 5.0.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Aspose.Cells | 23.4.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| Autofac | 6.4.0 | | [EntitySync.csproj](#entitysyncentitysynccsproj)<br/>[OASystem.API.csproj](#oasystemapioasystemapicsproj)<br/>[OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| Autofac.Extensions.DependencyInjection | 8.0.0 | | [EntitySync.csproj](#entitysyncentitysynccsproj)<br/>[OASystem.API.csproj](#oasystemapioasystemapicsproj)<br/>[OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| AutoMapper | 12.0.0 | 16.1.1 | [OASystem.API.csproj](#oasystemapioasystemapicsproj)<br/>[OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | NuGet 包有安全漏洞 |
|
|
|
+| AutoMapper.Extensions.Microsoft.DependencyInjection | 12.0.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj)<br/>[OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| Betalgo.OpenAI.GPT3 | 6.8.3 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ⚠️NuGet 包已弃用 |
|
|
|
+| BouncyCastle.NetCore | 1.8.8 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| CommonServiceLocator | 2.0.7 | | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| CurlThin | 0.0.7 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| CurlThin.Native | 0.0.8 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| EPPlus | 7.4.1 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| EyeSoft.FluentValidation | 3.0.7760.34875 | | [OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj) | ✅Compatible |
|
|
|
+| Flurl.Http | 3.2.4 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| iTextSharp | 5.5.13.5 | 5.5.13.3 | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ⚠️NuGet 包不兼容 |
|
|
|
+| JsonDiffPatch.Net | 2.3.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| MailKit | 4.15.1 | 4.17.0 | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | NuGet 包有安全漏洞 |
|
|
|
+| Markdig | 0.33.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Microsoft.AspNetCore.Authentication.JwtBearer | 6.0.11 | 10.0.9 | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | 建议升级 NuGet 包 |
|
|
|
+| Microsoft.AspNetCore.Http.Abstractions | 2.2.0 | | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ⚠️NuGet 包已弃用 |
|
|
|
+| Microsoft.AspNetCore.Http.Features | 2.2.0 | | [OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj) | ⚠️NuGet 包已弃用 |
|
|
|
+| Microsoft.Extensions.Configuration | 7.0.0 | 10.0.9 | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj)<br/>[OASystem.RedisRepository.csproj](#oasystemredisrepositoryoasystemredisrepositorycsproj) | 建议升级 NuGet 包 |
|
|
|
+| Microsoft.Extensions.Configuration.Abstractions | 7.0.0 | 10.0.9 | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | 建议升级 NuGet 包 |
|
|
|
+| Microsoft.Extensions.Configuration.Binder | 7.0.0 | 10.0.9 | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | 建议升级 NuGet 包 |
|
|
|
+| Microsoft.Extensions.Diagnostics.HealthChecks | 6.0.0 | 10.0.9 | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | 建议升级 NuGet 包 |
|
|
|
+| Microsoft.Extensions.Logging.Abstractions | 6.0.0 | 10.0.9 | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | 建议升级 NuGet 包 |
|
|
|
+| Microsoft.Graph | 5.103.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| NodaTime | 3.2.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| NPOI | 2.6.0 | | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ⚠️NuGet 包已弃用 |
|
|
|
+| NPOI | 2.7.1 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ⚠️NuGet 包已弃用 |
|
|
|
+| PinYinConverterCore | 1.0.2 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| QRCoder | 1.4.1 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Quartz | 3.6.2 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| QuartzUI.Extension.AspNetCore | 1.1.8 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| RestSharp | 106.15.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Serilog | 4.0.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Serilog.AspNetCore | 8.0.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Serilog.Sinks.Console | 6.0.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| Serilog.Sinks.File | 5.0.0 | | [OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| Serilog.Sinks.File | 6.0.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| SqlSugarCore | 5.1.3.32 | | [OASystem.Domain.csproj](#oasystemdomainoasystemdomaincsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| SqlSugarCore | 5.1.4.193 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| StackExchange.Redis | 2.6.96 | | [OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj)<br/>[OASystem.RedisRepository.csproj](#oasystemredisrepositoryoasystemredisrepositorycsproj) | ✅Compatible |
|
|
|
+| Swashbuckle.AspNetCore | 6.4.0 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| System.Data.OleDb | 8.0.0 | 10.0.9 | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | 建议升级 NuGet 包 |
|
|
|
+| System.Security.Permissions | 6.0.1 | 10.0.9 | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | 建议升级 NuGet 包 |
|
|
|
+| TencentCloudSDK.Hunyuan | 3.0.1378 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| TencentCloudSDK.Ocr | 3.0.734 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+| TinyPinyin.Net | 1.0.2 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj)<br/>[OASystem.Infrastructure.csproj](#oasysteminfrastructureoasysteminfrastructurecsproj) | ✅Compatible |
|
|
|
+| UAParser | 3.1.47 | | [OASystem.API.csproj](#oasystemapioasystemapicsproj) | ✅Compatible |
|
|
|
+
|
|
|
+## Top API Migration Challenges
|
|
|
+
|
|
|
+### Technologies and Features
|
|
|
+
|
|
|
+| Technology | Issues | Percentage | Migration Path |
|
|
|
+| :--- | :---: | :---: | :--- |
|
|
|
+| Windows Forms | 238 | 45.6% | 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 <UseWindowsDesktop>true</UseWindowsDesktop>; Option 3 (Legacy): Use Microsoft.NET.Sdk.WindowsDesktop SDK. |
|
|
|
+| IdentityModel & Claims-based Security | 44 | 8.4% | Windows Identity Foundation (WIF), SAML, and claims-based authentication APIs that have been replaced by modern identity libraries. WIF was the original identity framework for .NET Framework. Migrate to Microsoft.IdentityModel.* packages (modern identity stack). |
|
|
|
+| GDI+ / System.Drawing | 22 | 4.2% | System.Drawing APIs for 2D graphics, imaging, and printing that are available via NuGet package System.Drawing.Common. Note: Not recommended for server scenarios due to Windows dependencies; consider cross-platform alternatives like SkiaSharp or ImageSharp for new code. |
|
|
|
+| Legacy Cryptography | 4 | 0.8% | Obsolete or insecure cryptographic algorithms that have been deprecated for security reasons. These algorithms are no longer considered secure by modern standards. Migrate to modern cryptographic APIs using secure algorithms. |
|
|
|
+| Deprecated Remoting & Serialization | 3 | 0.6% | Legacy .NET Remoting, BinaryFormatter, and related serialization APIs that are deprecated and removed for security reasons. Remoting provided distributed object communication but had significant security vulnerabilities. Migrate to gRPC, HTTP APIs, or modern serialization (System.Text.Json, protobuf). |
|
|
|
+
|
|
|
+### Most Frequent API Issues
|
|
|
+
|
|
|
+| API | Count | Percentage | Category |
|
|
|
+| :--- | :---: | :---: | :--- |
|
|
|
+| T:System.Net.Http.HttpContent | 72 | 13.8% | Behavioral Change |
|
|
|
+| T:System.Windows.Forms.Label | 41 | 7.9% | Binary Incompatible |
|
|
|
+| T:System.Uri | 23 | 4.4% | Behavioral Change |
|
|
|
+| T:System.Windows.Forms.ComboBox | 22 | 4.2% | Binary Incompatible |
|
|
|
+| T:System.Windows.Forms.Button | 22 | 4.2% | Binary Incompatible |
|
|
|
+| M:System.TimeSpan.FromSeconds(System.Double) | 16 | 3.1% | Source Incompatible |
|
|
|
+| T:System.Text.Json.JsonDocument | 15 | 2.9% | Behavioral Change |
|
|
|
+| M:System.TimeSpan.FromMinutes(System.Double) | 14 | 2.7% | Source Incompatible |
|
|
|
+| P:System.Windows.Forms.Label.Text | 14 | 2.7% | Binary Incompatible |
|
|
|
+| M:System.Uri.#ctor(System.String) | 10 | 1.9% | Behavioral Change |
|
|
|
+| P:System.Windows.Forms.Control.ForeColor | 9 | 1.7% | Binary Incompatible |
|
|
|
+| T:System.IdentityModel.Tokens.Jwt.JwtSecurityToken | 7 | 1.3% | Binary Incompatible |
|
|
|
+| T:System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler | 7 | 1.3% | Binary Incompatible |
|
|
|
+| M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get''1(Microsoft.Extensions.Configuration.IConfiguration) | 6 | 1.1% | Binary Incompatible |
|
|
|
+| M:System.TimeSpan.FromHours(System.Double) | 6 | 1.1% | Source Incompatible |
|
|
|
+| T:System.Windows.Forms.MessageBox | 6 | 1.1% | Binary Incompatible |
|
|
|
+| T:System.Windows.Forms.DialogResult | 6 | 1.1% | Binary Incompatible |
|
|
|
+| M:System.Windows.Forms.MessageBox.Show(System.String) | 6 | 1.1% | Binary Incompatible |
|
|
|
+| P:System.Windows.Forms.Control.Name | 6 | 1.1% | Binary Incompatible |
|
|
|
+| M:System.Net.Http.HttpContent.ReadAsStreamAsync | 5 | 1.0% | Behavioral Change |
|
|
|
+| M:System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.#ctor | 5 | 1.0% | Binary Incompatible |
|
|
|
+| M:Microsoft.Extensions.DependencyInjection.HttpClientFactoryServiceCollectionExtensions.AddHttpClient(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.String,System.Action{System.Net.Http.HttpClient}) | 5 | 1.0% | Behavioral Change |
|
|
|
+| T:System.Windows.Forms.Control.ControlCollection | 5 | 1.0% | Binary Incompatible |
|
|
|
+| P:System.Windows.Forms.Control.Controls | 5 | 1.0% | Binary Incompatible |
|
|
|
+| M:System.Windows.Forms.Control.ControlCollection.Add(System.Windows.Forms.Control) | 5 | 1.0% | Binary Incompatible |
|
|
|
+| P:System.Windows.Forms.Control.TabIndex | 5 | 1.0% | Binary Incompatible |
|
|
|
+| P:System.Windows.Forms.Control.Size | 5 | 1.0% | Binary Incompatible |
|
|
|
+| P:System.Windows.Forms.Control.Location | 5 | 1.0% | Binary Incompatible |
|
|
|
+| T:System.IdentityModel.Tokens.Jwt.JwtPayload | 4 | 0.8% | Binary Incompatible |
|
|
|
+| M:System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ReadJwtToken(System.String) | 4 | 0.8% | Binary Incompatible |
|
|
|
+| T:System.Drawing.Imaging.ImageFormat | 4 | 0.8% | Source Incompatible |
|
|
|
+| T:Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents | 4 | 0.8% | Source Incompatible |
|
|
|
+| T:System.Windows.Forms.Application | 4 | 0.8% | Binary Incompatible |
|
|
|
+| T:System.Windows.Forms.ComboBox.ObjectCollection | 4 | 0.8% | Binary Incompatible |
|
|
|
+| P:System.Windows.Forms.ComboBox.Items | 4 | 0.8% | Binary Incompatible |
|
|
|
+| P:System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Payload | 3 | 0.6% | Binary Incompatible |
|
|
|
+| P:System.Drawing.Image.Height | 3 | 0.6% | Source Incompatible |
|
|
|
+| P:System.Drawing.Image.Width | 3 | 0.6% | Source Incompatible |
|
|
|
+| M:System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.WriteToken(Microsoft.IdentityModel.Tokens.SecurityToken) | 3 | 0.6% | Binary Incompatible |
|
|
|
+| T:System.Security.Cryptography.RijndaelManaged | 3 | 0.6% | Source Incompatible |
|
|
|
+| T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | 3 | 0.6% | Source Incompatible |
|
|
|
+| P:System.Windows.Forms.ComboBox.Text | 3 | 0.6% | Binary Incompatible |
|
|
|
+| T:System.Windows.Forms.AutoScaleMode | 3 | 0.6% | Binary Incompatible |
|
|
|
+| M:System.TimeSpan.FromDays(System.Double) | 2 | 0.4% | Source Incompatible |
|
|
|
+| T:System.IdentityModel.Tokens.Jwt.JwtRegisteredClaimNames | 2 | 0.4% | Binary Incompatible |
|
|
|
+| F:System.IdentityModel.Tokens.Jwt.JwtRegisteredClaimNames.Exp | 2 | 0.4% | Binary Incompatible |
|
|
|
+| T:System.Drawing.Image | 2 | 0.4% | Source Incompatible |
|
|
|
+| P:System.Drawing.Imaging.ImageFormat.Jpeg | 2 | 0.4% | Source Incompatible |
|
|
|
+| T:System.Drawing.Bitmap | 2 | 0.4% | Source Incompatible |
|
|
|
+| P:Microsoft.AspNetCore.Authentication.JwtBearer.MessageReceivedContext.Token | 2 | 0.4% | Source Incompatible |
|
|
|
+
|
|
|
+## Projects Relationship Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart LR
|
|
|
+ P1["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P2["<b>📦 EntitySync.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P3["<b>📦 _Doc.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P4["<b>📦 OASystem.RedisRepository.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P5["<b>📦 OpWin.csproj</b><br/><small>net6.0-windows</small>"]
|
|
|
+ P6["<b>📦 OASystem.Domain.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P7["<b>📦 OASystem.Infrastructure.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P1 --> P4
|
|
|
+ P1 --> P6
|
|
|
+ P1 --> P7
|
|
|
+ P2 --> P1
|
|
|
+ P5 --> P1
|
|
|
+ P7 --> P4
|
|
|
+ P7 --> P6
|
|
|
+ click P1 "#oasystemapioasystemapicsproj"
|
|
|
+ click P2 "#entitysyncentitysynccsproj"
|
|
|
+ click P3 "#_doc_doccsproj"
|
|
|
+ click P4 "#oasystemredisrepositoryoasystemredisrepositorycsproj"
|
|
|
+ click P5 "#opwinopwincsproj"
|
|
|
+ click P6 "#oasystemdomainoasystemdomaincsproj"
|
|
|
+ click P7 "#oasysteminfrastructureoasysteminfrastructurecsproj"
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+## Project Details
|
|
|
+
|
|
|
+<a id="_doc_doccsproj"></a>
|
|
|
+### _Doc\_Doc.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0
|
|
|
+- **Proposed Target Framework:** net10.0
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** ClassLibrary
|
|
|
+- **Dependencies**: 0
|
|
|
+- **Dependants**: 0
|
|
|
+- **Number of Files**: 0
|
|
|
+- **Number of Files with Incidents**: 1
|
|
|
+- **Lines of Code**: 0
|
|
|
+- **Estimated LOC to modify**: 0+ (at least 0.0% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph current["_Doc.csproj"]
|
|
|
+ MAIN["<b>📦 _Doc.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click MAIN "#_doc_doccsproj"
|
|
|
+ end
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 0 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 0 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 0 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 0 | |
|
|
|
+| ***Total APIs Analyzed*** | ***0*** | |
|
|
|
+
|
|
|
+<a id="entitysyncentitysynccsproj"></a>
|
|
|
+### EntitySync\EntitySync.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0
|
|
|
+- **Proposed Target Framework:** net10.0
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** DotNetCoreApp
|
|
|
+- **Dependencies**: 1
|
|
|
+- **Dependants**: 0
|
|
|
+- **Number of Files**: 1
|
|
|
+- **Number of Files with Incidents**: 1
|
|
|
+- **Lines of Code**: 191
|
|
|
+- **Estimated LOC to modify**: 0+ (at least 0.0% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph current["EntitySync.csproj"]
|
|
|
+ MAIN["<b>📦 EntitySync.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click MAIN "#entitysyncentitysynccsproj"
|
|
|
+ end
|
|
|
+ subgraph downstream["Dependencies (1"]
|
|
|
+ P1["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P1 "#oasystemapioasystemapicsproj"
|
|
|
+ end
|
|
|
+ MAIN --> P1
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 0 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 0 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 0 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 58 | |
|
|
|
+| ***Total APIs Analyzed*** | ***58*** | |
|
|
|
+
|
|
|
+<a id="oasystemapioasystemapicsproj"></a>
|
|
|
+### OASystem.Api\OASystem.API.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0
|
|
|
+- **Proposed Target Framework:** net10.0
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** AspNetCore
|
|
|
+- **Dependencies**: 3
|
|
|
+- **Dependants**: 2
|
|
|
+- **Number of Files**: 102
|
|
|
+- **Number of Files with Incidents**: 28
|
|
|
+- **Lines of Code**: 119063
|
|
|
+- **Estimated LOC to modify**: 255+ (at least 0.2% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph upstream["Dependants (2)"]
|
|
|
+ P2["<b>📦 EntitySync.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P5["<b>📦 OpWin.csproj</b><br/><small>net6.0-windows</small>"]
|
|
|
+ click P2 "#entitysyncentitysynccsproj"
|
|
|
+ click P5 "#opwinopwincsproj"
|
|
|
+ end
|
|
|
+ subgraph current["OASystem.API.csproj"]
|
|
|
+ MAIN["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click MAIN "#oasystemapioasystemapicsproj"
|
|
|
+ end
|
|
|
+ subgraph downstream["Dependencies (3"]
|
|
|
+ P4["<b>📦 OASystem.RedisRepository.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P6["<b>📦 OASystem.Domain.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P7["<b>📦 OASystem.Infrastructure.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P4 "#oasystemredisrepositoryoasystemredisrepositorycsproj"
|
|
|
+ click P6 "#oasystemdomainoasystemdomaincsproj"
|
|
|
+ click P7 "#oasysteminfrastructureoasysteminfrastructurecsproj"
|
|
|
+ end
|
|
|
+ P2 --> MAIN
|
|
|
+ P5 --> MAIN
|
|
|
+ MAIN --> P4
|
|
|
+ MAIN --> P6
|
|
|
+ MAIN --> P7
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 53 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 74 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 128 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 144679 | |
|
|
|
+| ***Total APIs Analyzed*** | ***144934*** | |
|
|
|
+
|
|
|
+#### Project Technologies and Features
|
|
|
+
|
|
|
+| Technology | Issues | Percentage | Migration Path |
|
|
|
+| :--- | :---: | :---: | :--- |
|
|
|
+| GDI+ / System.Drawing | 22 | 8.6% | System.Drawing APIs for 2D graphics, imaging, and printing that are available via NuGet package System.Drawing.Common. Note: Not recommended for server scenarios due to Windows dependencies; consider cross-platform alternatives like SkiaSharp or ImageSharp for new code. |
|
|
|
+| IdentityModel & Claims-based Security | 44 | 17.3% | Windows Identity Foundation (WIF), SAML, and claims-based authentication APIs that have been replaced by modern identity libraries. WIF was the original identity framework for .NET Framework. Migrate to Microsoft.IdentityModel.* packages (modern identity stack). |
|
|
|
+
|
|
|
+<a id="oasystemdomainoasystemdomaincsproj"></a>
|
|
|
+### OASystem.Domain\OASystem.Domain.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0
|
|
|
+- **Proposed Target Framework:** net10.0
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** ClassLibrary
|
|
|
+- **Dependencies**: 0
|
|
|
+- **Dependants**: 2
|
|
|
+- **Number of Files**: 455
|
|
|
+- **Number of Files with Incidents**: 7
|
|
|
+- **Lines of Code**: 65557
|
|
|
+- **Estimated LOC to modify**: 16+ (at least 0.0% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph upstream["Dependants (2)"]
|
|
|
+ P1["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P7["<b>📦 OASystem.Infrastructure.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P1 "#oasystemapioasystemapicsproj"
|
|
|
+ click P7 "#oasysteminfrastructureoasysteminfrastructurecsproj"
|
|
|
+ end
|
|
|
+ subgraph current["OASystem.Domain.csproj"]
|
|
|
+ MAIN["<b>📦 OASystem.Domain.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click MAIN "#oasystemdomainoasystemdomaincsproj"
|
|
|
+ end
|
|
|
+ P1 --> MAIN
|
|
|
+ P7 --> MAIN
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 0 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 16 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 0 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 52900 | |
|
|
|
+| ***Total APIs Analyzed*** | ***52916*** | |
|
|
|
+
|
|
|
+#### Project Technologies and Features
|
|
|
+
|
|
|
+| Technology | Issues | Percentage | Migration Path |
|
|
|
+| :--- | :---: | :---: | :--- |
|
|
|
+| Legacy Cryptography | 4 | 25.0% | Obsolete or insecure cryptographic algorithms that have been deprecated for security reasons. These algorithms are no longer considered secure by modern standards. Migrate to modern cryptographic APIs using secure algorithms. |
|
|
|
+| Deprecated Remoting & Serialization | 1 | 6.3% | Legacy .NET Remoting, BinaryFormatter, and related serialization APIs that are deprecated and removed for security reasons. Remoting provided distributed object communication but had significant security vulnerabilities. Migrate to gRPC, HTTP APIs, or modern serialization (System.Text.Json, protobuf). |
|
|
|
+
|
|
|
+<a id="oasysteminfrastructureoasysteminfrastructurecsproj"></a>
|
|
|
+### OASystem.Infrastructure\OASystem.Infrastructure.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0
|
|
|
+- **Proposed Target Framework:** net10.0
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** ClassLibrary
|
|
|
+- **Dependencies**: 2
|
|
|
+- **Dependants**: 1
|
|
|
+- **Number of Files**: 93
|
|
|
+- **Number of Files with Incidents**: 3
|
|
|
+- **Lines of Code**: 42988
|
|
|
+- **Estimated LOC to modify**: 9+ (at least 0.0% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph upstream["Dependants (1)"]
|
|
|
+ P1["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P1 "#oasystemapioasystemapicsproj"
|
|
|
+ end
|
|
|
+ subgraph current["OASystem.Infrastructure.csproj"]
|
|
|
+ MAIN["<b>📦 OASystem.Infrastructure.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click MAIN "#oasysteminfrastructureoasysteminfrastructurecsproj"
|
|
|
+ end
|
|
|
+ subgraph downstream["Dependencies (2"]
|
|
|
+ P4["<b>📦 OASystem.RedisRepository.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P6["<b>📦 OASystem.Domain.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P4 "#oasystemredisrepositoryoasystemredisrepositorycsproj"
|
|
|
+ click P6 "#oasystemdomainoasystemdomaincsproj"
|
|
|
+ end
|
|
|
+ P1 --> MAIN
|
|
|
+ MAIN --> P4
|
|
|
+ MAIN --> P6
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 0 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 5 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 4 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 46724 | |
|
|
|
+| ***Total APIs Analyzed*** | ***46733*** | |
|
|
|
+
|
|
|
+<a id="oasystemredisrepositoryoasystemredisrepositorycsproj"></a>
|
|
|
+### OASystem.RedisRepository\OASystem.RedisRepository.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0
|
|
|
+- **Proposed Target Framework:** net10.0
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** ClassLibrary
|
|
|
+- **Dependencies**: 0
|
|
|
+- **Dependants**: 2
|
|
|
+- **Number of Files**: 12
|
|
|
+- **Number of Files with Incidents**: 2
|
|
|
+- **Lines of Code**: 1060
|
|
|
+- **Estimated LOC to modify**: 2+ (at least 0.2% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph upstream["Dependants (2)"]
|
|
|
+ P1["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ P7["<b>📦 OASystem.Infrastructure.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P1 "#oasystemapioasystemapicsproj"
|
|
|
+ click P7 "#oasysteminfrastructureoasysteminfrastructurecsproj"
|
|
|
+ end
|
|
|
+ subgraph current["OASystem.RedisRepository.csproj"]
|
|
|
+ MAIN["<b>📦 OASystem.RedisRepository.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click MAIN "#oasystemredisrepositoryoasystemredisrepositorycsproj"
|
|
|
+ end
|
|
|
+ P1 --> MAIN
|
|
|
+ P7 --> MAIN
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 0 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 2 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 0 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 510 | |
|
|
|
+| ***Total APIs Analyzed*** | ***512*** | |
|
|
|
+
|
|
|
+#### Project Technologies and Features
|
|
|
+
|
|
|
+| Technology | Issues | Percentage | Migration Path |
|
|
|
+| :--- | :---: | :---: | :--- |
|
|
|
+| Deprecated Remoting & Serialization | 2 | 100.0% | Legacy .NET Remoting, BinaryFormatter, and related serialization APIs that are deprecated and removed for security reasons. Remoting provided distributed object communication but had significant security vulnerabilities. Migrate to gRPC, HTTP APIs, or modern serialization (System.Text.Json, protobuf). |
|
|
|
+
|
|
|
+<a id="opwinopwincsproj"></a>
|
|
|
+### OpWin\OpWin.csproj
|
|
|
+
|
|
|
+#### Project Info
|
|
|
+
|
|
|
+- **Current Target Framework:** net6.0-windows
|
|
|
+- **Proposed Target Framework:** net10.0-windows
|
|
|
+- **SDK-style**: True
|
|
|
+- **Project Kind:** WinForms
|
|
|
+- **Dependencies**: 1
|
|
|
+- **Dependants**: 0
|
|
|
+- **Number of Files**: 4
|
|
|
+- **Number of Files with Incidents**: 5
|
|
|
+- **Lines of Code**: 5240
|
|
|
+- **Estimated LOC to modify**: 240+ (at least 4.6% of the project)
|
|
|
+
|
|
|
+#### Dependency Graph
|
|
|
+
|
|
|
+Legend:
|
|
|
+📦 SDK-style project
|
|
|
+⚙️ Classic project
|
|
|
+
|
|
|
+```mermaid
|
|
|
+flowchart TB
|
|
|
+ subgraph current["OpWin.csproj"]
|
|
|
+ MAIN["<b>📦 OpWin.csproj</b><br/><small>net6.0-windows</small>"]
|
|
|
+ click MAIN "#opwinopwincsproj"
|
|
|
+ end
|
|
|
+ subgraph downstream["Dependencies (1"]
|
|
|
+ P1["<b>📦 OASystem.API.csproj</b><br/><small>net6.0</small>"]
|
|
|
+ click P1 "#oasystemapioasystemapicsproj"
|
|
|
+ end
|
|
|
+ MAIN --> P1
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### API Compatibility
|
|
|
+
|
|
|
+| Category | Count | Impact |
|
|
|
+| :--- | :---: | :--- |
|
|
|
+| 🔴 Binary Incompatible | 238 | High - Require code changes |
|
|
|
+| 🟡 Source Incompatible | 1 | Medium - Needs re-compilation and potential conflicting API error fixing |
|
|
|
+| 🔵 Behavioral change | 1 | Low - Behavioral changes that may require testing at runtime |
|
|
|
+| ✅ Compatible | 6684 | |
|
|
|
+| ***Total APIs Analyzed*** | ***6924*** | |
|
|
|
+
|
|
|
+#### Project Technologies and Features
|
|
|
+
|
|
|
+| Technology | Issues | Percentage | Migration Path |
|
|
|
+| :--- | :---: | :---: | :--- |
|
|
|
+| Windows Forms | 238 | 99.2% | 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 <UseWindowsDesktop>true</UseWindowsDesktop>; Option 3 (Legacy): Use Microsoft.NET.Sdk.WindowsDesktop SDK. |
|
|
|
+
|