Skip to content

Upgrade to net10#416

Open
aaron-mcpherson wants to merge 68 commits into
mainfrom
upgrade-to-NET10
Open

Upgrade to net10#416
aaron-mcpherson wants to merge 68 commits into
mainfrom
upgrade-to-NET10

Conversation

@aaron-mcpherson
Copy link
Copy Markdown
Collaborator

No description provided.

Convert H.Infrastructure project from legacy .NET Framework format to modern SDK-style project format. This migration includes:

- Updated project file to use Microsoft.NET.Sdk
- Changed target framework from .NET Framework 4.8 to net10.0-windows
- Removed legacy MSBuild properties and configuration sections
- Consolidated package references into cleaner format
- Removed manual file inclusions (now handled automatically by SDK)
- Deleted AssemblyInfo.cs file (properties now in project file)
- Added WPF-specific properties for Windows desktop support
- Streamlined project structure while maintaining all functionality
Removed obsolete system references and packages, added modern ConfigurationManager package. This change modernizes the project dependencies by removing legacy .NET Framework references that are no longer needed and adding the appropriate .NET Standard/Core equivalent for configuration management.

The changes include:
- Removed legacy system references: System.ComponentModel.DataAnnotations, System.Configuration, System.Data.DataSetExtensions, and Microsoft.CSharp
- Removed outdated NETStandard.Library package reference
- Added System.Configuration.ConfigurationManager package for modern configuration access
Modernized the project file from legacy .NET Framework format to
SDK-style format targeting .NET 10.0. Key changes include:

- Replaced verbose MSBuild imports with simple `<Project Sdk=Microsoft.NET.Sdk>`
- Updated target framework from .NET Framework 4.8 to net10.0
- Simplified property groups by removing redundant MSBuild properties
- Reorganized PackageReferences into cleaner ItemGroup structure
- Removed obsolete app.config and assembly info dependencies
- Cleaned up file inclusions, converting many explicit `<None Include>`
  entries to implicit content files
- Updated project references to use simplified syntax
- Removed Resource1.Designer.cs file (1,315 lines of auto-generated code)
- Streamlined EmbeddedResource handling with Update syntax

The conversion maintains all essential functionality while significantly
reducing project file complexity and leveraging modern .NET SDK conventions.
Remove obsolete and redundant package references from the project file, including System.Data.DataSetExtensions, Microsoft.CSharp, and NETStandard.Library which are no longer needed for modern .NET projects.
Remove NitrogenInputCalculator.cs and CarbonInputCalculator.cs from the carbon/nitrogen calculators. Convert H.Core.csproj from legacy .NET Framework format to modern SDK-style project format targeting .NET 10.0 with simplified structure and updated package references. Delete AssemblyInfo.cs and remove IFarmHelper.cs interface.
Remove legacy reference assemblies and update NuGet packages to latest versions. Cleaned up project file by removing manual references to .NET Framework assemblies like Microsoft.VisualBasic, System.ComponentModel.DataAnnotations, and others that are now included by default. Updated several NuGet packages including Newtonsoft.Json (13.0.3 → 13.0.4), System.Configuration.ConfigurationManager (8.0.0 → 10.0.1), System.Runtime.Caching (9.0.4 → 10.0.1), and System.Runtime.CompilerServices.Unsafe (6.0.0 → 6.1.2). Also removed the NETStandard.Library package reference as it's no longer needed.
Converted H.CLI.csproj from legacy .NET Framework format to modern SDK-style project format. Updated target framework from .NET Framework 4.8 to .NET 10.0. Consolidated project structure by:

- Replacing verbose XML project definition with concise SDK format
- Removing explicit file inclusions (now handled automatically)
- Consolidating package references into a single ItemGroup
- Simplifying project references to use modern format
- Removing redundant property groups and build configurations
- Eliminating manual assembly and resource file declarations
- Adding Windows Forms support with UseWindowsForms property

This modernization improves maintainability and aligns with current .NET project standards while preserving all essential functionality and dependencies.
Cleaned up project references by removing unused System dependencies (System.Configuration, System.Data.DataSetExtensions, Microsoft.CSharp) and System.Threading.Tasks.Extensions package. Updated System.Runtime.CompilerServices.Unsafe from 6.0.0 to 6.1.2 and replaced System.Configuration reference with explicit System.Configuration.ConfigurationManager package version 10.0.1.
Modernized H.Core.Test.csproj from legacy .NET Framework format to SDK-style project format. Updated target framework to .NET 10.0, simplified project structure by removing verbose MSBuild syntax, and consolidated package references and project references into cleaner ItemGroup sections. This change reduces the project file size significantly while maintaining all functionality and dependencies.
Removed System.Configuration reference and updated System.Runtime.CompilerServices.Unsafe to version 6.1.2. Added System.Configuration.ConfigurationManager package version 10.0.1 and removed System.Threading.Tasks.Extensions dependency.
Modernized H.Infrastructure.Test.csproj from legacy .NET Framework format to SDK-style project format. Removed verbose MSBuild configuration and simplified the project structure while maintaining the same dependencies and project references. Updated target framework to net10.0 and streamlined package references and project structure.
Removed unused System.IO.Compression reference from H.Infrastructure.Test project file to clean up dependencies.
Migrated H.CLI.Test.csproj from legacy .NET Framework format to modern SDK-style project format. Updated target framework to .NET 10.0, simplified project structure by removing verbose MSBuild properties, and modernized package and project references. This reduces the project file size from 145 lines to 32 lines while maintaining all dependencies and functionality.
Removed legacy System.Configuration reference and updated NuGet packages. Replaced with System.Configuration.ConfigurationManager 10.0.1 for modern configuration support. Updated System.Runtime.CompilerServices.Unsafe from 6.0.0 to 6.1.2. Removed System.Threading.Tasks.Extensions dependency.
Converted H.Integration.csproj from legacy .NET Framework project format to modern SDK-style format. This migration includes:

- Replaced verbose MSBuild project structure with concise SDK-style format
- Updated target framework to net10.0
- Simplified package references and removed explicit MSBuild imports
- Consolidated project references using simplified syntax
- Removed redundant configuration properties and build settings
- Maintained all existing dependencies and embedded resources
- Removed obsolete files like app.config and AssemblyInfo.cs
Removed legacy assembly references and updated package versions. Replaced direct Microsoft.CSharp and System.Configuration references with modern PackageReference for System.Configuration.ConfigurationManager. Updated System.Runtime.CompilerServices.Unsafe from 6.0.0 to 6.1.2 and removed redundant System.Threading.Tasks.Extensions package.
Downgrade all projects to .NET 8.0-windows for compatibility. Add Microsoft.NET.Test.Sdk to test projects for .NET 8 support. Add System.Drawing.Common to H.Content. Temporarily comment out VBIDE COM reference in H.CLI for .NET 8 compatibility.
Upgraded AutoMapper from v9.0.0 to v16.0.0 and updated all MapperConfiguration usages to include a NullLoggerFactory, as required by the new API. Added necessary using statements for Microsoft.Extensions.Logging.Abstractions. No changes to mapping logic. Also, explicitly ignored additional properties in Farm mapping and fixed _grazingViewItemMapper initialization in FieldResultsService. These changes ensure compatibility with the latest AutoMapper version.
Removed unused and redundant using/import statements from many files.
Reordered and consolidated necessary usings for clarity and consistency.
No functional changes; improves readability and maintainability.
Updated NuGet packages (Prism.Wpf, MSTest, Moq, etc.) to latest versions across all projects. Replaced Assert.ThrowsException<T> with Assert.Throws<T> and removed [ExpectedException] attributes in favor of explicit try-catch with Assert.Fail in test methods. Minor test method name corrections. No changes to application logic.
aaron-mcpherson and others added 30 commits January 9, 2026 09:03
Make FinalSettings method virtual and override in derived classes
Signed-off-by: Aaron McPherson <33136427+aaron-mcpherson@users.noreply.github.com>
Fix soil data check and update CLI project settings
Signed-off-by: Aaron McPherson <33136427+aaron-mcpherson@users.noreply.github.com>
Add support for custom indoor housing temperature
Update perennial stand root input calculation logic
Apply moisture correction to productivity calculation
Signed-off-by: Aaron McPherson <33136427+aaron-mcpherson@users.noreply.github.com>
Add boolean to allow user to override perennial percentage return values
All project files now target .NET 10.0 or .NET 10.0-windows
instead of .NET 8.0. This upgrade enables access to the latest
features and improvements in .NET 10.0 and ensures the codebase
remains up to date with current platform standards.
Changed target framework from net10.0 to net10.0-windows in H.CLI.Test, H.Content, H.Core.Test, H.Infrastructure.Test, and H.Integration projects to ensure compatibility with Windows-specific APIs and dependencies.
…projects

H.CLI now targets net10.0 (no -windows suffix) so it can run on Linux.
H.Core, H.Infrastructure, and H.Content multi-target net10.0;net10.0-windows
with WPF, Prism.Wpf, and System.Drawing conditional on the Windows TFM.
H.CLI uses Prism.Events instead of Prism.Wpf.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ange polyfill

Guard WPF value converters, TreeHelper, ResponseToVisibilityConverter, and
System.Drawing.Bitmap properties with #if WINDOWS so they compile out on
net10.0. Add AddRange polyfill for ObservableCollection since that extension
only exists in the WindowsDesktop runtime.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
new CultureInfo("en-CA") throws CultureNotFoundException when running
in invariant globalization mode. InfrastructureConstants now uses a
try/catch fallback to CultureInfo.InvariantCulture. CLILanguageConstants
uses string-based culture name matching instead of constructing CultureInfo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…bility

Replace all @"\" string concatenation with Path.Combine() across 8 files
in H.CLI so paths work on both Windows and Linux. Also fix DirectoryHandler
to resolve command-line args with Path.GetFullPath before changing CWD,
allowing the CLI to run from any directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When running in offline or container environments, the NASA climate API
returns no data and farm.ClimateData becomes null, causing a crash.
Now falls back to SLC polygon-based climate data (embedded in resources)
and as a last resort creates empty ClimateData to prevent NullReferenceException.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
In read-only environments like AWS Lambda, writing to the application
directory fails. When a farms path is passed as a command-line argument,
use it directly and return early, bypassing the FarmsPathFile
persistence mechanism that requires write access.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Aaron McPherson <33136427+aaron-mcpherson@users.noreply.github.com>
…rm-resolved

Upgrade to net10 cross platform resolved
FodyWeavers.xsd is now excluded from version control to prevent tracking of generated or unnecessary files.
Updated H.Content.csproj to define WINDOWS constant for net10.0-windows.
Added icons8_settings_50 and Settings_50_px bitmap properties
to Resource.Designer.cs under WINDOWS compilation. Removed
placeholder bitmap resource comment.
Add support for custom indoor housing temperature
…ied-farm)

Signed-off-by: Aaron McPherson <33136427+aaron-mcpherson@users.noreply.github.com>
…copied-farm)

Remove default fields and update .gitignore
Signed-off-by: Aaron McPherson <33136427+aaron-mcpherson@users.noreply.github.com>
…update

Fix carbon bug and update user guide
The vstest.console.exe step was failing with "No test source files
were specified" because the SDK-style upgrade moved test DLLs from
bin/<Config>/ to bin/<Config>/net10.0-windows/, and the glob
./**/H.Core.Test/bin/<Config>/H.Core.Test.dll no longer matches.

Switch to `dotnet test` which resolves test assemblies from the
solution/csproj metadata automatically, and add actions/setup-dotnet
to ensure the .NET 10 SDK is available on the runner. The old
darenm/Setup-VSTest@v1 action is no longer needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant