AssGen 3.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package AssGen --version 3.0.0
                    
NuGet\Install-Package AssGen -Version 3.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AssGen" Version="3.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AssGen" Version="3.0.0" />
                    
Directory.Packages.props
<PackageReference Include="AssGen" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AssGen --version 3.0.0
                    
#r "nuget: AssGen, 3.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AssGen@3.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AssGen&version=3.0.0
                    
Install as a Cake Addin
#tool nuget:?package=AssGen&version=3.0.0
                    
Install as a Cake Tool

Installation and usage

Add a package refference

To get started with AssGen, you will first need to add a package refference to the .csproj file for your mod. This file will be located in the root folder of your mod and very likely have the same name as it. For example, if your mod is "MyEpicMod", you're looking for "MyEpicMod.cs".

Once open, you'll want to add the following line to the <ItemGroup> containing refferences

<PackageReference Include="AssGen" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />

This will tell compilers and IDEs to refference the AssGen NuGet package for your mod! You'll have to add this manually to mark it as an Analyzer, which is important because AssGen is a Source Generator.

Create a configuration file

The next step is to create a file named AssGenConfig.txt in your mod folder. This file tells AssGen where your assets actually are!

Next we need to populate the file, currently it takes a single option AssetRoot. In most cases, this will just be the name of your mod folder, but if you have a seperate assets folder within your mod, you can use that instead. As an example, the config file for Starlight River looks like this:

AssetRoot:StarlightRiver\Assets

Your mod's may look more like

AssetRoot:MyModName

Use the autogenerated assets

Now that you've installed and configured AssGen, you should be able to start using it after a rebuild of your project. Whenever you add a new .png file to your asset path, AssGen will automatically update.

In order to access an asset, lets say for example MyMod/Stuff/CoolImage.png, you can get a ReLogic.Content.Asset<Texture2D> via the code:

Assets.Stuff.CoolImage

Since AssGen generates a Global Using, you dont need to do anything to import the generated namespace in your mod. This makes AssGen virtually plug-and-play after setup.

A more contextual example follows below:

using System;
using Terraria;
using Terraria.ModLoader;
using Microsoft.Xna.Framework;
// No need to import AssGen!

namespace MyMod.Stuff
{
  // Lets create a simple ModItem to act as an example
  public class MyThing : ModItem
  {
    // Common hooks like SetDefaults have been omitted here for the sake of relevance and brevity

    // We'll override a drawing method for the purpose of demonstration
    public override bool PreDrawInWorld(SpriteBatch spriteBatch, Color lightColor, Color alphaColor, ref float rotation, ref float scale, int whoAmI)
    {
      // Lets get our texture located at MyMod/Stuff/CoolImage.png
      var tex = Assets.Stuff.CoolImage.Value; // Use AssGen to get our asset, then load it via .Value;
      spriteBatch.Draw(tex, Item.Center - Main.screenPosition, Color.White); // Now we draw our image in the world
    }
  }
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on AssGen:

Repository Stars
ProjectStarlight/StarlightRiver
Starlight River mod
Version Downloads Last Updated
3.0.1 271 10/1/2025
3.0.0 404 2/12/2025
2.0.0 183 10/5/2024
1.0.1 527 5/2/2024
1.0.0.3 161 5/2/2024
1.0.0.2 156 5/2/2024
1.0.0.1 149 5/2/2024
1.0.0 350 5/2/2024

Now utilizes Lazy/<T /> to lazy load your asset handles! Should result in faster startups and less frontloaded memory consumption.