Skip to content
This repository has been archived by the owner on Jan 1, 2024. It is now read-only.

[TODO] Begin testing against .NET 8 Release Candidate #3125

Closed
Ryochan7 opened this issue Oct 13, 2023 · 13 comments
Closed

[TODO] Begin testing against .NET 8 Release Candidate #3125

Ryochan7 opened this issue Oct 13, 2023 · 13 comments

Comments

@Ryochan7
Copy link
Owner

.NET 8 will be released around November 14 at .NET Conf 2023. One of the last major planned updates to DS4Windows is to target .NET 8 since that will be the next LTS release of .NET. Downloaded JetBrains Rider as it would be easier to play around with the current .NET 8 RC there. DS4Windows is able to build and run under .NET 8. Going to have to check performance differences if there are any.

@Ryochan7
Copy link
Owner Author

So far, the app seems to use more system memory while running on .NET 8. Need to make sure garbage collection works as expected. App performance is more snappy and controller emulation is snappier.

@Ryochan7
Copy link
Owner Author

Garbage collection seems to be working fine. The GarbageTask method is being called as expected and small portions of memory are being freed; the routine runs a generation 0 garbage collection.

Also, need to build the Nefarius.ViGEm.Client library and FakerInputWrapper library against .NET 8. Not sure about the SharpOSC library.

@Ryochan7
Copy link
Owner Author

All 3 libraries have been converted. Also, here is a test branch.

https://github.com/Ryochan7/DS4Windows/tree/net8_testing

@Ryochan7 Ryochan7 pinned this issue Oct 15, 2023
@Ryochan7
Copy link
Owner Author

For the most part, this seems all ready to go. There does not seem to be any big complications when building against .NET 8 RC 2. The only slight issue right now is that it looks like .NET 8 adds an extra hash to the build number of DS4Windows because .NET 8 is still in the beta stages. I am going to assume that will be gone for the first stable release of .NET 8.

I will have to keep track of future developments of .NET 8. If there is another release candidate then I will have to test DS4Windows against that build.

@Ryochan7
Copy link
Owner Author

Ryochan7 commented Nov 3, 2023

I am having a harder time porting DS4Updater than I did porting DS4Windows. The main issue is getting rid of the use of WebClient and using HttpClient instead. Almost have something done but it could use cleaning up.

@Ryochan7
Copy link
Owner Author

Ryochan7 commented Nov 4, 2023

Got the updater and some other tools ported over to .NET 8 (XInputChecker, Hid Report Inspector). Luckily when it came to the other tools, it was just a matter of changing the targeted .NET version in the project file.

@Ryochan7
Copy link
Owner Author

Ryochan7 commented Nov 16, 2023

.NET 8 is now officially released. Downloading the SDK installer now and will try out the 8.0.100 release.

https://dotnet.microsoft.com/en-us/download

@Ryochan7
Copy link
Owner Author

The ProductVersion property of FileVersionInfo still contains the hash. Looks like the FileVersion property returns the string without the hash included. Will need to use FileVersion from a FileVersionInfo instance going forward.

@Ryochan7
Copy link
Owner Author

Starting some migration for my various C# projects. As for DS4Windows, I will wait at least two releases before making the switch and forcing .NET 8 on people. There will likely be one feature update (if not two) followed by a dedicated nag update telling people that the next version of DS4Windows will require the use of .NET 8 and directing people to install the runtime package early.

Going to have to put some form of window up to nag people about it along with an app setting to acknowledge that the notice has been read. Looks like the DS4Windows version number should be bumped up to 3.3.0 for the .NET 8 targeted release.

@Ryochan7
Copy link
Owner Author

Example snapshot showing what alert pops up when .NET 8 is not installed when an app requires it. Definitely a better one than the notice Microsoft bundled for apps targeting .NET 6.

net8_not_found_snap

@Ryochan7
Copy link
Owner Author

Ryochan7 commented Dec 3, 2023

One step closer. The SteamControllerTest and DS4MapperTest projects have been updated to target .NET 8. Most of the extra work needed to get those two projects ready was from work being done with DS4Windows. Also, some of that time was just testing everything while playing (and actually finishing) The Elder Scrolls 2: Daggerfall (Unity); tried playing Daggerfall twice before but I would always get stuck.

https://github.com/Ryochan7/SteamControllerTest/releases/tag/v0.0.21
https://github.com/Ryochan7/DS4MapperTest/releases/tag/v0.0.16

@Ryochan7
Copy link
Owner Author

Ryochan7 commented Dec 4, 2023

Getting a bit late in my original timeline. I think I will have to put out that nag update for DS4Windows in the next day or two if I want to stay along my initial timeline. I initially wanted to wait about 2 weeks after putting out the nag update before officially making the switch and releasing DS4Windows 3.3. Then around 2 weeks were planned for fixing any possible regressions and bugs that might have popped up.

I do not want to keep support going past 2023/12/31 if it can be helped. There are other things I can be doing with my time that would benefit me more. There is no path going forward here.

@Ryochan7
Copy link
Owner Author

Ryochan7 commented Dec 5, 2023

Made the move and the .NET 8 project code has been merged into the master branch. The code for DS4Windows 3.2.21 has been placed in the branch net6_final.

@Ryochan7 Ryochan7 unpinned this issue Dec 21, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant