Skip to content
Maddie edited this page Jun 16, 2025 · 5 revisions

Each time Everest upgrades its .NET runtime 🔗 it will cause mods to have to update their source code accordingly to build with the newer runtime. Luckily such changes are often simple.

There are two main kinds of mods: Legacy Mods and Core Mods, each requiring a different set of changes. Both explained in detail down below.

Checking if a mod is a Legacy Mod or a Core Mod

Legacy mods target .NET Framework, while Core mods target .NET Core, if you know how to identify that, you can jump below to the appropriate section.

You can determine whether a mod is Legacy or Core by opening it's .csproj file (if you have multiple of those, you probably know what you're doing already). Seek the TargetFramework tag (or TargetFrameworks) and check the value in there:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netXXX</TargetFramework>
        <AssemblyName>CelesteMod</AssemblyName>
...
  • The value is net452: It is a Legacy Mod.
  • The value is netX.0 where X is greater or equal than 7: It is a Core Mod.
  • TargetFramework does not appear: The mod likely does not use a sdk-style project 🔗, but rather an older version of project files. Chances are the mod is a Legacy mod, but to be sure: look for TargetFrameworkVersion instead, if v4.5.2 appears then it is a Legacy Mod.

Legacy Mods

Legacy Mods (also known as "non-Core Mods") are mods that do not target a Core Everest version, consequently those use .NET Framework with Legacy Everest versions. Legacy Everest was discontinued and the last stable version was Everest 4449 🔗.

Upgrading a Legacy Mod

Go to the Code Mod Core Migration Guide for a guide on how to upgrade.

Core Mods

Core Mods are mods which target some Core Everest version. However, this may still not be enough to build with the latest .NET Core Everest versions. A version mismatch is signified by a build error similar to the following: Error CS1705 : Assembly 'Celeste' with identity 'Celeste, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime' with identity 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

Upgrading a Core Mod

Warning

Changing the target framework version without adjusting the Everest dependency in the everest.yaml will cause crashes on older Everest versions.

  1. Make sure you have the current stable version of Everest installed. Using a newer .NET version will make your mod incompatible with Everest versions using an older .NET version, so if you accidentally build against a development version that uses a newer .NET version, your mod will not work on stable Everest.
  2. Change the Everest dependency in your everest.yaml file to the current stable version. Otherwise, your mod will crash older Everest versions instead of telling players to update.
  3. Change the TargetFramework value in the .csproj file to the one currently used by Everest. The latest Everest version uses .NET 8, which corresponds to net8.0. Using any other version will fail to build the mod.
Clone this wiki locally