Raylib-cs 8.1.0-rc.1

This is a prerelease version of Raylib-cs.
dotnet add package Raylib-cs --version 8.1.0-rc.1
                    
NuGet\Install-Package Raylib-cs -Version 8.1.0-rc.1
                    
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="Raylib-cs" Version="8.1.0-rc.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Raylib-cs" Version="8.1.0-rc.1" />
                    
Directory.Packages.props
<PackageReference Include="Raylib-cs" />
                    
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 Raylib-cs --version 8.1.0-rc.1
                    
#r "nuget: Raylib-cs, 8.1.0-rc.1"
                    
#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 Raylib-cs@8.1.0-rc.1
                    
#: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=Raylib-cs&version=8.1.0-rc.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Raylib-cs&version=8.1.0-rc.1&prerelease
                    
Install as a Cake Tool

Raylib-cs Logo

Raylib-cs

C# bindings for raylib, a simple and easy-to-use library to learn video games programming (www.raylib.com)

GitHub contributors License Chat on Discord GitHub stars Build

Raylib-cs targets net8.0, net10.0 and uses the official 6.0 release to build the native libraries.

Version 8.1.0-rc.1 of Raylib-cs supports the following runtimes:

  • browser-wasm (raylib-6.0_webassembly) 🆕
  • linux-x64 (raylib-6.0_linux_amd64)
  • osx-arm64 (raylib-6.0_macos)
  • osx-x64 (raylib-6.0_macos)
  • win-x64 (raylib-6.0_win64_msvc16)
  • win-x86 (raylib-6.0_win32_msvc16)

The following frameworks are deprecated (fall back to Version 7.x if required):

  • net6.0 (end of life)

Status

Raylib-cs is passively maintained. Occasional updates may be released from time to time. Pull requests may be accepted if they don't have a large maintenance burden.

Installation - NuGet

This is the preferred method to get started.

  1. Pick a folder in which you would like to start a raylib project. For example, "HelloRaylibCS."

  2. Then from a terminal (for example, a VSCode terminal), whilst in the directory you just created run the following commands. (Please keep in mind .NET should already be installed on your system)

dotnet new console
dotnet add package Raylib-cs

NuGet

If you are new to using NuGet (or you've forgotten) and are trying to run the above command in the command prompt, remember that you need to be inside the intended project directory (not just inside the solution directory); otherwise the command won't work.

Installation - Source

  1. Pick a folder in which you would like to start a raylib project. For example, "HelloRaylibCS."

  2. Download or clone the repo.

  3. Add Raylib-cs/Raylib-cs.csproj to your project as an existing project.

  4. Choose one of the following options to include the native libraries.

Automatic:

  1. Import Raylib-cs/Raylib-cs.targets into your project to add native libraries automatically.

Manual:

  1. Download or build the native libraries for the platforms you want using the official 6.0 release. NOTE: the MSVC version is required for Windows platforms.

  2. Set up the native libraries, so they are in the same directory as the executable/can be found in the search path.

Hello, World!

using Raylib_cs;

namespace HelloWorld;

internal static class Program
{
    // STAThread is required if you deploy using NativeAOT on Windows
    // See https://github.com/raylib-cs/raylib-cs/issues/301
    [System.STAThread]
    public static void Main()
    {
        Raylib.InitWindow(800, 480, "Hello, World");

        while (!Raylib.WindowShouldClose())
        {
            Raylib.BeginDrawing();
            Raylib.ClearBackground(Color.White);

            Raylib.DrawText("Hello, world!", 12, 12, 20, Color.Black);

            Raylib.EndDrawing();
        }

        Raylib.CloseWindow();
    }
}

Development

The Examples and Raylib-cs.Tests projects reference the sibling Raylib-cs project by default, so local changes to the bindings are picked up directly:

dotnet run --project Examples
dotnet test

Both projects can also consume the binding as a NuGet package but the in-repo version may not be published on nuget.org yet. Pack it once into the local feed before the first build. Then to run against the Raylib-cs NuGet package (the version set by RaylibCsVersion in Directory.Build.props), set RaylibCsForceLocalNuget:

dotnet pack Raylib-cs -c Release -o Raylib-cs/nuget
dotnet run --project Examples -p:RaylibCsForceLocalNuget=true
dotnet test -p:RaylibCsForceLocalNuget=true

Note that NuGet.config points restore at the local ./Raylib-cs/nuget feed, so both projects pick up the freshly packed package. If you skip the pack step on a fresh clone, restore fails with NU1102 (Raylib-cs not found) - running the pack command fixes this.

When iterating on the binding itself, note that NuGet caches the extracted package by version and ignores repacks of the same version. After repacking, delete the old package from ./Raylib-cs/nuget and clear the cached copy (dotnet nuget locals global-packages --clear, or delete ~/.nuget/packages/raylib-cs/<version>) before restoring again.

Contributing

Feel free to open an issue. If you'd like to contribute, please fork the repository and make changes as you'd like. Pull requests are welcome.

If you want to request features or report bugs related to raylib directly (in contrast to this binding), please refer to the author's project repo.

License

See LICENSE for details.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (61)

Showing the top 5 NuGet packages that depend on Raylib-cs:

Package Downloads
SharpEngine

Little 2D game engine built on RayLib

SharpEngine.Core

Core Package of SharpEngine - 2D Game Engine

Gum.raylib

Package Description

rlImgui-cs

Bindings to use ImGui.net with raylib-cs

Vigilance

2D Game Engine

GitHub repositories (14)

Showing the top 14 popular GitHub repositories that depend on Raylib-cs:

Repository Stars
SebLague/Chess-Challenge
Create your own tiny chess bot!
MyraUI/Myra
UI Library for MonoGame, FNA and Stride
DaveGreen-Games/ShapeEngine
My custom made engine based on the great Raylib Framework. Main focus is being performant and only using draw functions instead of textures.
vchelaru/Gum
Flexible layout tool for creating UI on any platform
6over3/hako
An embeddable, lightweight, secure, high-performance JavaScript engine.
notgiven688/jitterphysics2
Fast, simple, and dependency-free physics engine written in C# with a clear and user-friendly API.
amerkoleci/JoltPhysicsSharp
JoltPhysics C# bindings
BotRandomness/NET-NES
NET-NES, a NES emulator, written in C#.
BotRandomness/CODE-DMG
CODE-DMG, a Gameboy emulator, written in C#.
sinshu/meltysynth
A SoundFont MIDI synthesizer for .NET
sbarisic/NuklearDotNet
.NET binding for the Nuklear immediate mode GUI
andreakarasho/TinyEcs
A tiny bevy-like archetype-style ECS library for dotnet
0x78654C/xTerminal
A linux like terminal for windows in C#
raylib-extras/rlImGui-cs
A Raylib-cs integration with DearImGui
Version Downloads Last Updated
8.1.0-rc.1 83 8/23/2026
8.0.0 26,184 5/25/2026
7.0.2 41,782 10/20/2025
7.0.1 43,895 1/31/2025
7.0.0 7,541 12/30/2024
6.1.1 21,488 6/23/2024
6.1.0 1,300 6/20/2024
6.0.0 16,146 1/20/2024
5.0.0 8,620 11/5/2023
4.5.0.4 6,297 8/13/2023
4.5.0.3 2,130 7/29/2023
4.5.0.2 23,074 7/10/2023
4.5.0.1 3,259 6/4/2023
4.5.0 3,493 4/15/2023
4.2.0.2 2,713 3/5/2023
4.2.0.1 5,594 10/1/2022
4.2.0 1,767 10/1/2022
Loading failed