-
Notifications
You must be signed in to change notification settings - Fork 0
Migrate GDM solution from .NET Framework 4.7.2 to .NET 10 #2
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
base: master
Are you sure you want to change the base?
Conversation
Co-authored-by: KaptenJon <10761546+KaptenJon@users.noreply.github.com>
Co-authored-by: KaptenJon <10761546+KaptenJon@users.noreply.github.com>
Co-authored-by: KaptenJon <10761546+KaptenJon@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request migrates the GDM solution from .NET Framework 4.7.2 to .NET 10, modernizing all 5 projects to use SDK-style project files. The migration successfully converted project files, removed legacy AssemblyInfo.cs files (now auto-generated), migrated from packages.config to PackageReference, and resolved initial compatibility issues including type ambiguities and namespace changes. Three projects (GDMInterfaces, GDMCore, GDMTool) now build successfully, while GDMPlugins has outstanding errors from API breaking changes in dependencies, and GDMService is blocked by removed installer APIs.
Key Changes:
- Converted all
.csprojfiles to SDK-style format with .NET 10 targeting - Resolved type ambiguities by fully qualifying WinForms types (MethodInvoker, OpenFileDialog)
- Updated namespace imports for ExcelDataReader (Excel → ExcelDataReader)
- Removed obsolete LibOptimization method overrides (Gradient/Hessian)
- Fixed resource file path casing issues
Reviewed changes
Copilot reviewed 29 out of 32 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| GDMInterfaces/GDMInterfaces.csproj | Converted to SDK-style, targeting net10.0-windows, added nullable and documentation generation |
| GDMCore/GDMCore.csproj | Converted to SDK-style with Windows Forms support and nullable enabled |
| GDMTool/GDMTool.csproj | Converted to SDK-style WinExe with WPF/WinForms support, simplified dependencies |
| GDMPlugins/GDMPlugins.csproj | Converted to SDK-style, updated 13 package references including ExcelDataReader 3.8.0 and DocumentFormat.OpenXml 3.2.0 |
| GDMService/GDMService.csproj | Converted to SDK-style, added ServiceController and ConfigurationManager packages |
| Multiple AssemblyInfo.cs | Deleted legacy assembly info files (auto-generated by SDK) |
| Multiple packages.config | Removed in favor of PackageReference in .csproj |
| GDMPlugins/Icons.resx | Fixed resource file path casing for database-active-icon.png and team2.png |
| GDMPlugins/Statistics/MaximumLikelihoodEstimation.cs | Removed obsolete Gradient/Hessian method overrides |
| GDMPlugins/Statistics/DistributionEvaluator.cs | Updated interface qualification for IDistribution; CDF calls use hardcoded zero parameters |
| GDMInterfaces/IDistribution.cs | Fixed XML documentation typo (paramet→parameter) |
| GDMTool/TableViewer.cs, DataTableView.cs, ConfigViewer.cs, Main.cs | Fully qualified System.Windows.Forms types to resolve WPF namespace conflicts |
| .gitignore | Added *.csproj.old to ignore legacy project files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <PackageReference Include="ExcelDataReader" Version="3.8.0" /> | ||
| <PackageReference Include="LibOptimization" Version="1.14.0" /> | ||
| <PackageReference Include="MathNet.Numerics.Signed" Version="4.7.0" /> | ||
| <PackageReference Include="Meta.Numerics" Version="4.2.0" /> |
Copilot
AI
Dec 4, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Meta.Numerics version 4.2.0 is being used, but according to the PR description, version 5.1.0 does not exist. However, Meta.Numerics 5.1.0 was released in December 2022 and does exist on NuGet.org. Consider updating to version 5.1.0 or the latest stable version for better compatibility with .NET 10.
| <PackageReference Include="Meta.Numerics" Version="4.2.0" /> | |
| <PackageReference Include="Meta.Numerics" Version="5.1.0" /> |
| <PackageReference Include="Accord" Version="3.8.0" /> | ||
| <PackageReference Include="Accord.Math" Version="3.8.0" /> | ||
| <PackageReference Include="Accord.Statistics" Version="3.8.0" /> | ||
| <PackageReference Include="DocumentFormat.OpenXml" Version="3.2.0" /> |
Copilot
AI
Dec 4, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DocumentFormat.OpenXml has been updated to version 3.2.0, which introduced breaking changes. The PR description mentions that Close() was replaced with Dispose(). Ensure all usages of DocumentFormat.OpenXml objects in the codebase use Dispose() instead of Close(), and wrap them in using statements or explicit disposal patterns.
| <PackageReference Include="Accord.Math" Version="3.8.0" /> | ||
| <PackageReference Include="Accord.Statistics" Version="3.8.0" /> | ||
| <PackageReference Include="DocumentFormat.OpenXml" Version="3.2.0" /> | ||
| <PackageReference Include="ExcelDataReader" Version="3.8.0" /> |
Copilot
AI
Dec 4, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ExcelDataReader 3.8.0 introduces API breaking changes that require a configuration object. The namespace change from Excel to ExcelDataReader has been applied, but the API usage needs updating. Review all ExcelDataReader initialization code to use the new configuration pattern, typically: ExcelReaderFactory.CreateReader(stream, new ExcelReaderConfiguration { ... }).
| <PackageReference Include="SharpZipLib" Version="1.4.2" /> | ||
| <PackageReference Include="System.Data.OleDb" Version="9.0.0" /> | ||
| <PackageReference Include="System.Data.SqlClient" Version="4.9.0" /> | ||
| <PackageReference Include="ZedGraph" Version="5.2.1" /> |
Copilot
AI
Dec 4, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ZedGraph version 5.2.1 is specified, but this version may not be compatible with .NET 10. ZedGraph development has been largely stagnant, and version 5.1.7 is the most commonly used stable version. Verify that version 5.2.1 exists and is compatible with .NET 10, or consider reverting to 5.1.7.
| <PackageReference Include="ZedGraph" Version="5.2.1" /> | |
| <PackageReference Include="ZedGraph" Version="5.1.7" /> |
| double t1 = (double) j/n - dist.CDF(x, 0, 0, 0); | ||
| double t2 = dist.CDF(x, 0, 0, 0) - ((double) (j - 1)/n); |
Copilot
AI
Dec 4, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The CDF method is being called with hardcoded parameters (x, 0, 0, 0). This suggests that all distribution parameters are being passed as 0, which is likely incorrect. The CDF method should receive the actual distribution parameters (location, scale, shape) rather than zeros. This could lead to incorrect statistical calculations.
Migrates all 5 projects from legacy .NET Framework 4.7.2 to .NET 10 using SDK-style project files. 3 of 5 projects now build successfully (GDMInterfaces, GDMCore, GDMTool). GDMPlugins has 10 remaining errors from API breaking changes. GDMService is blocked by unavailable installer APIs in .NET 10+.
Project File Modernization
.csprojfiles from legacy format to SDK-styleProperties/AssemblyInfo.csfiles (auto-generated by SDK)packages.configto<PackageReference><EnableWindowsTargeting>true</EnableWindowsTargeting>for Linux build supportCompatibility Fixes
Type Ambiguities: Fully qualified WinForms types to resolve conflicts with WPF namespaces:
NuGet Package Updates:
Excel→ExcelDataReader)System.Data.SqlClient,System.Data.OleDb,DocumentFormat.OpenXml,WindowsBaseLibOptimization API: Removed obsolete
Gradient()andHessian()overrides no longer required by base classResource Files: Fixed case-sensitivity issues (
Database-Active-icon.png→database-active-icon.png)Outstanding Issues
GDMPlugins (10 errors):
DataConnectionDialognot available as NuGet packageClose()→Dispose()GDMService (blocked):
System.Configuration.Installnamespace removed in .NET Core+Build Results
Warnings are primarily nullability annotations (expected with nullable reference types enabled).
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
crl.certum.pl/usr/bin/dotnet dotnet build(dns block)cscasha2.ocsp-certum.com/usr/bin/dotnet dotnet build(dns block)subca.ocsp-certum.com/usr/bin/dotnet dotnet build(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Issue created by Visual Studio Copilot
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.