If you just want to use Dalamud, you don’t need to build it. Download XIVLauncher instead.
Prerequisites
Required Software
Install .NET SDK
Dalamud requires .NET 10.0 SDK or later.Download from https://dot.net or use the build scripts which will automatically download the required version.The project specifies version
10.0.0 in global.json with rollForward: latestMinor and allowPrerelease: true.Install Visual Studio 2022 (Windows)
For Windows builds, you need Visual Studio 2022 with:
- C++ desktop development workload (for native components)
- .NET desktop development workload
- Windows 10 SDK
- Platform Toolset v143
- MASM (x64) for assembly files
Build Process
Windows
Dalamud uses NUKE as its build system. The build process is orchestrated through PowerShell scripts.Run the build script
Execute the build script from the repository root:This will:
- Auto-download the .NET SDK if not found (to
.nuke/temp/dotnet-win) - Build the NUKE build project (
build/build.csproj) - Execute the build targets
Build targets are executed
The default target is
Compile, which depends on:- Restore - Restores NuGet packages for the entire solution
- CompileImGuiNatives - Builds C++ native libraries:
cimgui.dll(Dear ImGui C bindings)cimplot.dll(ImPlot C bindings)cimguizmo.dll(ImGuizmo C bindings)
- CompileDalamud - Builds
Dalamud.dlland dependencies - CompileDalamudBoot - Builds
Dalamud.Boot.dll(C++ injection loader) - CompileDalamudCrashHandler - Builds
DalamudCrashHandler.exe(C++ crash handler) - CompileInjector - Builds
Dalamud.Injector.dll(C# injector)
Linux
Linux builds are supported for documentation generation and managed code only.Run the build script
- Auto-download .NET SDK if needed (to
.nuke/temp/dotnet-unix) - Build with
EnableWindowsTargeting=trueto allow targeting Windows from Linux - Skip native C++ components (ImGui libraries, Dalamud.Boot)
Build Configurations
Debug vs Release
- Defines
DEBUGandTRACEsymbols - Includes debugging symbols (portable PDB)
- No optimization
- Enables optimizations
- Generates version metadata from Git
- Creates commit hash and revision files
CI Build Target
The CI target builds and tests:- Full compilation
- Unit tests via
Dalamud.Testproject (xunit v3) - API compatibility checks (on PRs)
Project Structure
The solution contains multiple projects:| Project | Type | Purpose |
|---|---|---|
| Dalamud | C# Library | Core framework, plugin API, game bindings |
| Dalamud.Boot | C++ DLL | .NET Core loader, process injection |
| Dalamud.Injector | C# Library | DLL injection logic |
| Dalamud.Common | C# Library | Shared utilities |
| Dalamud.CorePlugin | C# Plugin | Internal testbed plugin |
| Dalamud.Test | C# Test | Unit tests (xunit) |
| DalamudCrashHandler | C++ EXE | Crash reporting tool |
| FFXIVClientStructs | C# Library | Game structure definitions (submodule) |
| Dalamud.Bindings.ImGui | C# Library | ImGui C# bindings |
| cimgui | C++ DLL | Dear ImGui native library |
Version Information
Dalamud version is defined inDalamud/Dalamud.csproj:
- Commit count (
GitCommitCount) - Commit hash (
GitHash) - Branch name (
GitBranch) - Git describe output (
SCMVersion) - FFXIVClientStructs version (
GitHashClientStructs)
Common Build Issues
Missing MSBuild or C++ build tools
Missing MSBuild or C++ build tools
Error:
MSBuild.exe not found or C++ compilation failsSolution: Install Visual Studio 2022 with C++ desktop development workload. Ensure MSBuild is in your PATH or run from Developer Command Prompt.Submodule not initialized
Submodule not initialized
Error: Missing files in
lib/FFXIVClientStructs or lib/Lumina.ExcelSolution:.NET SDK version mismatch
.NET SDK version mismatch
Error:
The current .NET SDK does not support targeting .NET 10.0Solution: Let the build script download the correct SDK, or manually install .NET 10.0 SDK with preview support enabled.Platform target mismatch
Platform target mismatch
Error: Platform target ‘AnyCPU’ is not validSolution: Dalamud requires x64 platform. All projects target
net10.0-windows with PlatformTarget=x64.Advanced Build Options
Clean Build
Remove all build artifacts:- All project output directories
- ImGui native libraries
- NuGet restore cache
- Intermediate build files
Restore Only
Just restore NuGet packages:Build Individual Components
Next Steps
Testing
Learn how to run tests and validate your build
Contributing
Guidelines for contributing to Dalamud