Migration to .NET 10#2872
Conversation
0f754f8 to
8b9c9ad
Compare
|
Build for this pull request: |
c015d4c to
d3b5db9
Compare
|
Build for this pull request: |
|
Build for this pull request: |
6a3a31d to
fc090e1
Compare
|
Build for this pull request: |
|
Build for this pull request: |
|
Build for this pull request: |
00ab523 to
8e59830
Compare
|
Build for this pull request: |
|
Build for this pull request: |
|
Build for this pull request: |
|
Build for this pull request: |
|
Build for this pull request: |
7fcd06d to
b8f7dc5
Compare
|
Build for this pull request: |
|
Build for this pull request: |
|
Converted to a draft again as there are some issues with the installer workflow and the fact the installer needs to be able to self-update |
|
Build for this pull request: |
Description
Migrating from .NET Framework to .NET 10 is naturally a massive change, even if not at the surface. There are many changes in the SDK and runtime which improve security, deprecate APIs and some that affect the lower level memory-pinning to yield better performance. The SDK is also less forgiving which raises issues that may not have been observed prior to this migration.
Notable changes
MobiFlight Installer
The installer code is quite tricky to follow and I'm wondering whether it needs to be a standalone application. While .NET Framework produced a single binary, .NET Core compiles the application as a DLL file and also produces an executable that is a wrapper around the
dotnet runcommand which runs the app confined within the DLL. This means the installer is no longer compatible with some of the core logic.I've applied the following changes
/betaby MobiFlight argument instead (Opinion: one app shouldn't be reading the config of another app)MobiFlight Bundler project
This is a utility project where the sole-purpose is to reference MobiFlightConnector and MobiFlightInstaller so that
dotnet publishproduces a directory with all of the relevant runtime and reference artifacts.Dependency Injection
Dependency injection has been added at the entry point via
IHostBuilder.MainFormis currently the only service that's registered in the container. This paves the way for improving the testability of the application.DataSet and DataTable
These types are no longer part of the Windows Forms toolbox in later versions of .NET. These were originally configured incorrectly in that the type of the settings column was specified as
typeof(object)while the actual type would be one ofOutputConfigItemorInputConfigItem. .NET is more stringent than .NET Framework and the lower level implementation of theDataSetclass, particularly with how types are resolved.Short of redesigning the data loading process,
FsuipcConfigPanelhas been updated to useXmlSerializerto continue to support the existing functionality for the Presets.aip fileUI Resource duplication
The resource files had a lot of duplicate keys. These have all been removed
TODO