VEBuild.Core 1.0.3

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

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 src folder, 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:

  1. Scanning: Uses /scanDependencies to discover module imports/exports.
  2. Ordering: Compiles module interfaces (.ixx) before their consumers.
  3. Propagation: Passes generated .ifc files 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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