VEBuild.Core
1.0.3
dotnet add package VEBuild.Core --version 1.0.3
NuGet\Install-Package VEBuild.Core -Version 1.0.3
<PackageReference Include="VEBuild.Core" Version="1.0.3" />
<PackageVersion Include="VEBuild.Core" Version="1.0.3" />
<PackageReference Include="VEBuild.Core" />
paket add VEBuild.Core --version 1.0.3
#r "nuget: VEBuild.Core, 1.0.3"
#:package VEBuild.Core@1.0.3
#addin nuget:?package=VEBuild.Core&version=1.0.3
#tool nuget:?package=VEBuild.Core&version=1.0.3
VEBuild (v1.0.0 RC)
π STATUS: Release Candidate 1. Core architecture, C++20 Modules support, incremental builds, and IDE integration are feature-complete.
VEBuild is a next-generation, modular build system for Modern C++ (C++20) written in .NET. It prioritizes Developer Experience (DX), performance, and seamless integration with Visual Studio.
It eliminates the pain of CMake by treating the filesystem as the source of truth and providing a fluent, type-safe C# DSL for configuration.
β¨ Key Features
- C++20 Modules First: Automatic dependency scanning, DAG construction, and BMI (
.ifc) management out of the box. - Incremental Builds: Smart change detection (timestamp & content hashing) for compilation and linking.
- Project-to-Project Dependencies: Automatic propagation of include paths, module interfaces, and defines between libraries and executables.
- IDE Integration: Generates Visual Studio 2022 solutions (
.sln) and projects (.vcxproj) with working IntelliSense for modules and cross-project navigation (Go To Definition). - No "Reload Project": Add files to your
srcfolder, hit Build, and it just works. - Modular Architecture: Functionality is composed via NuGet packages.
π¦ Modular Ecosystem
VEBuild is designed as a set of decoupled extensions. You only pull what you need.
| Package | Role | Extensions Provided |
|---|---|---|
ve.build.core |
The engine, Task Graph, HostBuilder | Base project(), task() |
ve.build.cpp |
C++ compilation rules | .Sources(), .Include() |
ve.build.link |
Linker abstractions | .Type(ProjectType...), .dependsOf() |
ve.build.msvc |
MSVC Toolchain implementation | .useMsvcToolchain() |
π Quick Start
This example demonstrates a multi-project setup: a Shared Library (sample.lib) and an Executable (sample) that links against it.
1. Project Setup
Create a new Console Application and reference the required NuGet packages.
2. Configuration (Program.cs)
using ve.build.core;
using ve.build.cpp.cpp; // Extends ProjectBuilder with C++ features
using ve.build.link.link; // Extends ProjectBuilder with Linking features (Type, dependsOf)
using ve.build.msvc; // Provides MSVC Toolchain
return await new HostBuilder()
// Define a Dynamic Library (DLL)
// Source files are automatically scanned from the "lib" folder
.project("sample.lib", pbuilder => pbuilder
.Type(ProjectType.DLL)
.Sources("lib")
)
// Define an Executable
// Depends on "sample.lib": automatically inherits includes and modules
.project("sample", pbuilder => pbuilder
.Type(ProjectType.EXE)
.Sources() // Scans "src" by default
.dependsOf("sample.lib")
)
// Register the MSVC Toolchain (cl.exe, link.exe)
.useMsvcToolchain()
.build()
.run(args);
π οΈ CLI Commands
Run your build script to execute tasks:
# Build the project (default config: DEBUG, platform: windows-x64)
dotnet run -- build
# Rebuild (Clean + Build)
dotnet run -- rebuild
# Clean artifacts
dotnet run -- clean
# Generate Visual Studio Solution (.sln) and Projects (.vcxproj)
dotnet run -- generate
ποΈ Architecture Highlights
The "Unified DAG"
VEBuild constructs a Directed Acyclic Graph (DAG) that represents the entire build process. Tasks like build or clean generate their own sub-graphs, which are merged and synchronized via barrier nodes. This ensures maximum parallelism (e.g., compiling independent .cpp files on all cores) while respecting dependencies (linking happens only after compilation).
C++20 Module Support
The system natively handles the complexity of C++ modules:
- Scanning: Uses
/scanDependenciesto discover module imports/exports. - Ordering: Compiles module interfaces (
.ixx) before their consumers. - Propagation: Passes generated
.ifcfiles to dependent projects automatically.
πΊοΈ Roadmap
- v1.0.0 RC (Current): Windows (MSVC), C++20 Modules, VS Generator.
- v1.1.0: Clang support (Windows/Linux) and C++26 Reflection integration.
- v1.2.0: MacOS support and Xcode generation.
- Future: WASM, Android, and Console support.
License
Β© 2025 VassalStudio. All rights reserved.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- No dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on VEBuild.Core:
| Package | Downloads |
|---|---|
|
VEBuild.Cpp
VEBuild is a modular .NET build system that composes projects via declarative tasks, extensions, and platforms. This repo contains the core abstractions and a sandbox used to validate the architecture. |
|
|
VEBuild.Link
VEBuild is a modular .NET build system that composes projects via declarative tasks, extensions, and platforms. This repo contains the core abstractions and a sandbox used to validate the architecture. |
|
|
VEBuild.ProjectGenerator
VEBuild is a modular .NET build system that composes projects via declarative tasks, extensions, and platforms. This repo contains the core abstractions and a sandbox used to validate the architecture. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.3 | 165 | 5/29/2026 |
| 1.0.2.2 | 236 | 5/22/2026 |
| 1.0.2.1 | 165 | 5/22/2026 |
| 1.0.2 | 172 | 5/22/2026 |
| 1.0.1.2 | 156 | 3/6/2026 |
| 1.0.1.1 | 153 | 3/6/2026 |
| 1.0.1 | 158 | 3/3/2026 |
| 1.0.0.8-rc | 149 | 3/1/2026 |
| 1.0.0.7-rc | 243 | 2/25/2026 |
| 1.0.0.6-rc | 195 | 2/17/2026 |
| 1.0.0.5-rc | 250 | 12/26/2025 |
| 1.0.0.4-rc | 190 | 12/25/2025 |
| 1.0.0.2-rc | 194 | 12/25/2025 |
| 1.0.0.1-rc | 235 | 12/25/2025 |
| 1.0.0-rc | 244 | 11/27/2025 |
| 0.0.1.1-alpha | 155 | 9/5/2025 |
| 0.0.1-alpha | 203 | 9/4/2025 |