Here's my notes on getting a Linux Rider dev env for VRCX.
Setup your prefix like this:
- Ensure you run at least Wine 9.0
- Ensure binfmt works (run a Windows binary per ./yourbinary.exe)
- Install corefonts (
winetricks corefonts) into your prefix (else CEF dies) - Install .NET 8 Desktop Runtime into your prefix
For the actual meat and potatos:
In your Rider settings, under the "Build, Execution, Deployment > Hot Reload", disable all the options related to Hot Reloading under General settings:
If you don't do this, starting the app will exception due to it not liking the Startup Hook assembly name:
0504:err:eventlog:ReportEventW L"Description: The process was terminated due to an unhandled exception.\n"
0504:err:eventlog:ReportEventW L"Exception Info: System.ArgumentException: The startup hook simple assembly name '/home/USER/.local/share/JetBrains/Toolbox/apps/rider/lib/ReSharperHost/JetBrains.Microsoft.Extensions.DotNetDeltaApplier.dll' is invalid. It must be a valid assembly name and it may not contain directory separ"...
In the Run settings, set the following environment variables:
- Set
DOTNET_ROOTandDOTNET_ROOT_X64to"C:\Program Files\dotnet"
For your convenience, the entire string for this is:
DOTNET_ROOT="C:\Program Files\dotnet";DOTNET_ROOT_X64="C:\Program Files\dotnet""
If you don't set the roots, it'll try to find the runtime in /usr/share/dotnet/, which will not include hostfxr.dll required for framework dependent apps. This miraculously somehow even sticks when you ask Rider to unset all system variables, which evedently isn't broken in functionality since Wine fails to find DISPLAY.
At this point, you're on par with the Windows side:
- Build the project, create the
bin/x64/Debug/htmldirectory - Build the HTML side of VRCX by running
npm run prodinhtml/ - Copy the resulting contents of
html/dist/directory intobin/x64/Debug/html
Assuming no higher being hates you today, you should be able to run VRCX within Rider since Rider generates a script that runs the built binary directly and binfmt passes it to Wine.
A side effect of VRCX not being a native dotnet application is that you won't be able to debug the app across Wine boundaries, I'm not sure if that's fixable. VRCX will never be native due to using WinForms, so you'll have to make due.


