Getting Started with Eco Modding in Visual Studio

From Eco - English Wiki
Revision as of 11:11, 9 April 2026 by WugWugg (talk | contribs) (Updated project setup to mention .net10 now that it's LTS and ECO uses it)

Introduction

This guide covers how you could use Visual Studio 2022 as the development environment for your Eco mods — from creating your project to building, testing, and releasing a mod.

This guide won’t teach you how to code or write a mod, but it will help you get everything set up so you’re ready to start learning. There will be helpful resources for learning listed at the bottom of this guide.

Have Ready

  • A copy of the Eco game installed
  • A file explorer and the file-path to Eco folder
    • At the time of writing, within this folder there's folders like D3D12 and Eco_Data. Also, you'll find the Eco.exe file here. There are other files and folder here too, but this list is just to help you know what the folder looks like.

Note: Find Folder with Steam

Steam users can find the install folder by right-clicking on the game in your Steam Library:

Shows a Steam Library with a menu open over the Eco game. Highlighted in that menu is a "Manage" option, opening a sub-menu. The sub-menu has "Browse local files" highlighted.

Installing Visual Studio 2022

Visual Studio 2022 (VS2022) has a completely free to use version called the Community Edition. This guide is written assuming that's the version used.

Go to https://visualstudio.microsoft.com/downloads/#visual-studio-community-2022 and look for the "Visual Studio Community 2022" download. At the time of writing, the download button looked like:

A picture of a website showing a row. The first column has the name "Visual Studio Community 2022" and there's a "Download" button two columns to the right, past it's description text.

Start the download by clicking on the Download button.

Then, run the installer till this the installer gets to the Workloads page. On this page, select these workloads:

  • .NET desktop development -- Required for any mod development
  • ASP.NET and web development -- Optional. If you want to interact with external websites or Eco's own web server (e.g. Discord's web-hooks or extending the API)

Note: Using the Workflow installation page is easy, but will install a few extra things (e.g. GitHub Copilot). If you want to keep the tooling minimal you can just install .NET from dotnet.microsoft.com/en-us/download. At the time of writing, Eco supports .NET version 8.0. See the later section .NET Version of this guide to learn how to check if that has changed.

At the time of writing, this is what the Workloads page looks like with those options selected:

Workloads screen during VS2022 installation. Options selected are "ASP.NET and web development" and ".NET desktop development".

Click the Install button. It will take a few minutes to complete installation. By default, it should launch VS2022 after it installs.

It will ask you to sign in. You do not need to and can completely avoid this by clicking the Skip and add accounts later option in tiny text below the buttons.

If you plan to upload your mod to Github, VS2022 does have integrated support for GitHub. So consider signing in with GitHub to make that process easier.

This guide is continuing as if the Skip and add accounts later option was selected. Finally, it might ask what color theme you'd like. Select your preference and continue.

Installation Complete!

The Mod

With Eco and VS2022 are installed all of the tools needed to code, build, and run a mod are ready!

Creating a New Project

When VS2022 first opens it will show you a dashboard where you can quickly select what you want to do. On the left, are any recent projects opened. There won't be any if this is the first time installing it.

On the right there will be a few options, from here select the Create a new project option.

VS2022's launch dashboard showing recent projects on the left and quick action buttons on the right. Highlighted is a button titled "Create a new project".

Now, it's time to go through the new project wizard. First, the wizard asks what kind of project is being made.

To mod Eco we need to make a C# Class Library.

To find the template, search C# library in the search bar. Select the C# option titled Class Library.

It's important to pay attention to the icon and chips below the title and description. Make sure you select the C# option as there are other options similarly named Class Library.

location=center

The next page will ask you what the Project Name should be. Type the name of the mod being created.

The other options like the Location and the Solution Name do not need edited.

Leave the box Place solution and project in the same directory unchecked.

Click the Next button and continue along in the next section of this guide.

.NET Version

As of April of 2026, Eco targets .NET 10.0 and the mod should too.

It's suggested to confirm the version of .NET that Eco uses by looking at the .NET version the reference assemblies use.

The reference assemblies can be found on the NuGet Gallery by searching for Eco.ReferenceAssemblies. See: www.nuget.org/packages?q=Eco.ReferenceAssemblies

Find the package with the name Eco.ReferenceAssemblies made by StrangeLoopGames.

There will be a chip underneath of it with the .NET version it targets. At the time of writing, this is what that page looked like:

Shows the search result of Eco.ReferenceAssemblies. In a blue chip the text ".NET 8.0" can be seen.

By clicking on that search result (shown above), a more detailed page opens is show. Again, there's chips showing what version of .NET to use:

Show the package page for "Eco.ReferenceAssemblies" on NuGet Gallery. Circled in red are two chips with some version of the text ".NET 8.0" inside them.


Back to VS2022

On the Additional Information page, there's the Framework drop-down. Select the same version of .NET Eco uses (as described above).

Click the Create button to finish creating the mod!

Linking to Eco Assemblies

Look for the Solution Explorer on the right-hand side of VS2022. It should look something like this:

Note: If the solution explorer isn't there, open it from the top menu. Click the View button and select Solution Explorer from the menu.

A picture of a basic layout in Visual Studio 2022 with the Solution Explorer open on the right-hand side. The solution explorer is circled in red.

From the Solution Explorer, find the References line and right-click on it. On that menu select Manage NuGet packages...

Shows VS2022's Solution Explorer with project expanded. The References line is highlighted and a menu is open. On that menu the "Manage NuGet Packages" line is highlighted.

This will open a new tab. Above the search bar there's sub-tabs. Select the Browse sub-tab.

Type Eco.ReferenceAssemblies into the search bar.

Check the Include prerelease check-box.

Find the option with the name Eco.ReferenceAssemblies made by StrangeLoopGames. Click on it.

A details panel will show up to the right. It will show the version of the reference assemblies being targeted. By default it chooses the latest and can be left at it's default.

Click the Install button.

VS2022 is open to the NuGet tab and is searching with the text Eco.ReferenceAssemblies. The checkbox to the right of the search is checked -- include prerelease. The only search result is selected. There is yellow highlights over part of the photo.

Click the Apply button on the popup to finish adding the references.

The reference assemblies have now been added! When coding VS2022 will provide IntelliSense popups. Try it out by going back to the Class1.cs file and typing Eco. and you will see suggestion pop up. It’s an essential tool for a lot of modders.

Shows a text editor with a basic class file. Inside there's the text "Eco." and a menu that show the suggested namespaces within.

Building The Dynamic Linked Library (DLL)

Building for Development

To build the mod makes the .dllthat can be used to test with.

To build, open the Build menu from the top of VS2022.

Select Build Solution. This will produce non-optimized DLL used for testing and development.

VS2022 top menu "Build" is open with "build solution" highlighted (ctrl + shift + b).

To find the file VS2022 just built, right click on the project in the Solution Explorer.

Select Open Folder in File Explorer.

VS2022's solution explorer is shown with the projects right-click menu open. Highlighted is "Open folder in File Explorer"

From here, the mod's DLL will be in the bin/Debug/net8.0/folder. The file will be named with mod's name, like TheMod.dll.

Copy the mod's DLL file.

Paste it into the folder Eco/Eco_Data/Server/Mods/.

To run a game with that mod create a local world.

The mod should be running. Check the logs at Eco/Eco_Data/Server/Logs/ to verify. Open the most recent log file here.

If the mod was loaded it there will be a line mentioning the file-name of the DLL. If the DLL was named TheMod.dll this is what to look for in the log file:

[13:55:54.815] [4] [ Info] [Eco] Starting ModKitPlugin                             ...  
[13:56:27.399] [4] [ Info] [Eco] Starting ModKitPlugin                             ... Finished in 32.584 sec
 
[13:56:27.439] [4] [ Info] [Eco] Loading mods                                      ...  
[13:56:27.439] [9] [ Info] [Eco] Loading TheMod...
Tip: Setup File Explorer to Sort By Date

It's suggested to setup the file view to Details in this folder because it will show the Date Modified for each file.

Show Window's File Explorer's view setting menu with the "details" option highlighted.

Additionally, clicking on the Date Modified header sorts all files. Sort it so the most recent is on top and every time the server starts the log file is easily found -- it's the one on top!

Show's window's File Explorer with the date modified header highlighted.

Building for Release

To build for release, click on the mod's project in the Solution Explorer to highlight it.

Shows VS2022's solution explorer with the project highlighted.

Then, open the Build menu from the top of VS2022 and select Publish Selection.

Set the target as Folder. Click the Next button.

VS2022's publish wizard showing the target selection screen. The Folder option is highlighted.

Leave the folder location as default. Click the Finish button.

Click the Close button.

Finally, click the Publish button to start the build.

A green alert will pop up when the build is completed:

Show's VS2022 publish screen. There's publish button at the top of this screen.


Either use the blue links on this page to find the file or browse the project's files as shown in "Building for Development".

Inside the project, the file will be in bin/Release/net8.0/publish. The file will be named with the mod project's name. For example, TheMod.dll.

Since the reference assemblies are already included in the game, do not worry about the other files here.

To share this mod, the only file needed is the mod's dll -- TheMod.dll.

Post Build Scripts: Automatic Copy

With a post build script VS2022 will automatically copy the files each build. It's a very nice feature to have when developing and rebuilding every 5 minutes to test something new.

First, add the variables about where EcoServer.exe is located to the project file.

Right-click on the project in the Solution Explorer and select the Edit Project File option.

Add the properties EcoServerExe and EcoServerDir inside of the PropertyGroup tag.

>>> Tip: By holding shift and right-clicking on a file in the file explorer a old-school menu pops up. Midway down this menu is an option to Copy As Path. Neat!

The project file should look something like this:

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

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    
    <EcoServerExe>$(EcoServerDir)\EcoServer.exe</EcoServerExe>
    <EcoServerDir>C:\Program Files (x86)\Steam\steamapps\common\Eco\Eco_Data\Server</EcoServerDir>
    
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Eco.ReferenceAssemblies" Version="0.11.1.13-beta-release-887" />
  </ItemGroup>

</Project>


Next, add the PostBuild property inside the Project tag.

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

  <PropertyGroup>
    ... SNIP ...
  </PropertyGroup>

  <ItemGroup>
    ... SNIP ...
  </ItemGroup>

  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
	<Exec Command='call PostBuild.bat "$(EcoServerDir)" "$(OutDir)" "$(MSBuildProjectName)"'/>
  </Target>
</Project>


Finally create a new file directly inside the project by right-clicking on the project in the Solution Explorer. Select the Add and click on New Item... from the sub-menu.

Use the name PostBuild.bat for this new file.

Open it and put the following in the PostBuild file:

REM reading in arguements to sensible variables
set serverDir=%1
set outDir=%2
set projName=%3

REM removing double-quotes added to variables for concatenation
set serverDir=%serverDir:"=%
set outDir=%outDir:"=%
set projName=%projName:"=%

REM Copy mod dll to Mods dir
set dllFile=%outDir%%projName%.dll
echo Copying mod dll file: %dllFile%
copy "%dllFile%" "%serverDir%\Mods"

REM Copy mod pdb to directory where EcoServer.exe is
set pdbFile=%outDir%%projName%.pdb
echo Copying mod pdb file: %pdbFile%
copy "%pdbFile%" "%serverDir%"

Now try running a rebuild of the project. The output should report copying files and inside the Eco/Eco_Data/Server/Mods folder should be TheMod.dll file

Setting up Debugging

Special thanks to Monzun#0606 on Eco's Discord for helping developing research the following information. To setup debugging, make sure that the project is setup with the post build script described above.

Debugging is a powerful tool to a developer and allows the developer to set breakpoints anywhere in the code to stop execution. When execution is stopped the developer can review every variable's value and incrementally continue the code. This is invaluable when tracking down bugs or trying to understand a complex piece of code.

From the top menu, select Debug and click on the option TheMod Debug Properties at the bottom of the menu.

VS2022's debug menu is open from the top of the application. Highlighted is the last option "Debug Properties".

Find the Create a new profile button in the top-left of this new window. Select Executable from the drop-down menu.

VS2022's launch profile window is open. Underlined and pointed to by a red mark is the "Create a new profile" button, located in the top-left of the window. Highlighted from the menu under it is the option reading "Executable".

Set the Executable field to the full path to the EcoServer.exe file. For example, C:\Program Files (x86)\Steam\steamapps\common\Eco\Eco_Data\Server\EcoServer.exe.

Set the Working Directory field to the full path to the folder containing the EcoServer.exe file. For example, C:\Program Files (x86)\Steam\steamapps\common\Eco\Eco_Data\Server.

A fully configured profile ready to debug Eco on VS2022's launch profile page.

To use this newly configured profile, switch to it by clicking the small arrow to the right of the play icon (see image). Select the newly created profile -- Profile 1.

VS2022's debugger profile selection menu is open with the newly created "Profile 1" highlighted.

To see how breakpoints work, put the following in Class1.cs file:

using Eco.Core.Plugins.Interfaces;
using Eco.Core.Utils;
using Eco.ModKit;

namespace Test
{
    public class Class1 : IModKitPlugin, IInitializablePlugin
    {
        public string GetCategory() => "Tutorial";

        public string GetStatus() => this._status;
        string _status = string.Empty;

        public void Initialize(TimedTask timer)
        {
            this._status = "Ok";
            bool yes = true;
            return;
        }
    }
}

This code creates a basic plugin, called Class1, that Eco will load and initialize on startup. Eco knows to do this because this class inherits the IModKitPlugin interface (causes it to be loaded) and the IInitializablePlugin interface (causes it to be initialized).

Add a breakpoint to the code by right-clicking on the line bool yes = true;.

A boilerplate example of a mod is shown in the VS2022 text editor. A line has a menu open above it with the option "Breakpoint" expanded and the option "Insert Breakpoint" highlighted on the sub-menu.

Now hit the play button. The server will start and VS2022 will flash back on screen once Eco tries to initialize the mod's plugin.

Highlighted is the play button for VS2022's debugger. The "Profile 1" is still selected from before.


After a little bit the server will start-up and hit the breakpoint set. When it does VS2022 will keep startup from continuing and allow detailed inspection to happen.

In the bottom left (circled in red) is a table of all of the variables within scope. Use this to see what is happening (especially useful in loops!).

At the middle-top (circled in red) are some of the debugger controls. Clicking the highlighted Continue button resumes normal operation. Using the buttons to the right that are highlighted will allow the developer to step through the codes execution to see exactly how each line is performing. Debugging is a deep and rich topic that this guide will not explain further, but there's a great video by Microsoft Visual Studio on YouTube called Basics of Debugging. In that 45 minute video (don't worry there's annotations to jump to just what is interesting) a whole gamut of information about how to use debugging is covered.

Shows a simple plugin's code in the editor of VS2022. In the bottom-left is a table of all variables used in the function. It is circled in red. On the top of the image also circled in red is the debugger controls. Highlighted within is the continue button and the "step over" button.

Releasing a Mod

Mod.io

At the time of writing, mod.io is where creators share their mods with players and others.

To share a new mod here all that is necessary is an account.

Head over to mod.io/g/eco and click Login in the top-right corner.

Finish signing-up with whatever account type you prefer.

Click the Add Mod button in the top-right.

Follow the upload wizard as directed.

Once on the File Manager section, a zip file is needed.

Zip the mod's release dll and any other assets necessary (e.g. Unity bundles) by putting all the files into a folder. Then right-click on that folder and select Compress To... and from the sub-menu select ZIP file.

Upload that zip file. Considering naming it with a version number to help stay organized (e.g. v1). Next release, increase that number by 1 (e.g. v2)

Congratulations on releasing the mod!

Discord Ads

Consider posting a entry on the official Eco Discord server. There's a channel for mods called mod-ads. Please read the rules before posting.

Where to Next?

  • Where to learn modding logic (Eco Modding Wiki, Discord, sample mods)
  • Consider learning source control (Git). Completely optional, but can help you keep things organized as development continues.
  • Explore Eco’s open-source mod projects for ideas (search on GitHub "Eco Mods" to find some real-life examples)