- Requirements
- A launcher/client
What to expect:
~ Windows-only deployment (no linux/unix, net10 doesn't support it)
~ 30-40% performance gain out of the box for windows/windows server due to improvements in the language from C#7.3 to C#13
~ access to latest C# lang and .NET/Asp.net
~ single-process restarts/shutdown
~ autonomous hostpolicy.json net 2.0+ standalone-app fix
~ EnableDefaultItems compilation fix for duplicative files
~ Explicit .csproj inclusion compilation for "*.cs" files
you'll need to define new .cs files in the .csproj:
<ItemGroup>
<Compile Include="PATH_HERE\FileName.cs" />
<ItemGroup>
~ Expect a rosilyn-error to creep up, happens everywhere net2.0+, you'll need to reopen the IDE/clean the build until it resolves.
~ Delegate.BeginInvoke/EndInvoke is unsupported on .NET Core+/.NET 10 (it relied on .NET Remoting). Switching to Task.Run.
Delegate.BeginInvoke/EndInvoke (the legacy IAsyncResult pattern on plain Func/Action delegates) is not supported on .NET Core/5+/10 — it threw PlatformNotSupportedException from System.Func1.BeginInvoke` at runtime, even though it compiled fine. Three places used it:
Useful for forking ClassicUO, Centred, UORazor, UOFiddler, or UOArchitect
~ Windows-only deployment (no linux/unix, net10 doesn't support it)
~ 30-40% performance gain out of the box for windows/windows server due to improvements in the language from C#7.3 to C#13
~ access to latest C# lang and .NET/Asp.net
~ single-process restarts/shutdown
~ autonomous hostpolicy.json net 2.0+ standalone-app fix
~ EnableDefaultItems compilation fix for duplicative files
~ Explicit .csproj inclusion compilation for "*.cs" files
you'll need to define new .cs files in the .csproj:
<ItemGroup>
<Compile Include="PATH_HERE\FileName.cs" />
<ItemGroup>
~ Expect a rosilyn-error to creep up, happens everywhere net2.0+, you'll need to reopen the IDE/clean the build until it resolves.
~ Delegate.BeginInvoke/EndInvoke is unsupported on .NET Core+/.NET 10 (it relied on .NET Remoting). Switching to Task.Run.
Delegate.BeginInvoke/EndInvoke (the legacy IAsyncResult pattern on plain Func/Action delegates) is not supported on .NET Core/5+/10 — it threw PlatformNotSupportedException from System.Func1.BeginInvoke` at runtime, even though it compiled fine. Three places used it:
- Scripts/Misc/
ConsoleCommands.cs
— replaced _Listen.BeginInvoke(...) (a Func over Console.ReadLine) with Task.Run(() = ProcessInput(Console.ReadLine())) via a small BeginListen() helper. - Scripts/Misc/ArchivedSaves.cs — the async pack/prune for archived saves used _Pack.BeginInvoke/EndInvoke (Action) and _Prune.BeginInvoke/EndInvoke (Action DateTime). Replaced both with Task.Run(() = _Pack.Invoke(source)) and changed the _Tasks list from ListIAsyncResult to ListTask (still used by PendingTasks and the periodic IsCompleted cleanup, both of which work identically on Task).
- Scripts/Services/Ethics/Core/Ethic.cs:174 — power.BeginInvoke(pl) is a domain method on the abstract Power class (not the delegate API), so it stays as-is.
Useful for forking ClassicUO, Centred, UORazor, UOFiddler, or UOArchitect