VEBuild.Link 1.0.3

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

🚀 STATUS v1.0.0 RC. Linker Abstraction Layer for VEBuild.

ve.build.link provides the linker and librarian abstractions for the VEBuild system.

It acts as the Linker Frontend, defining how projects are linked (executable vs shared library vs static library) and managing the dependency graph for the linking stage. It abstracts away the differences between link.exe (MSVC), ld (GCC), and lld (LLVM).

⚠️ Important

This package does not contain a linker implementation. To actually link binaries, you must install a Toolchain implementation package alongside this one

Windows (MSVC) Install ve.build.link.msvc Cross-Platform (Coming soon)


📦 Installation

dotnet add package ve.build.link

⚡ Usage

This package extends the ProjectBuilder with methods to define the Project Type and Dependencies.

Defining Artifacts

Use the .Type() extension method to specify what this project produces.

using ve.build.core;
using ve.build.link.link;  Import extensions

return await new HostBuilder()
     1. Static Library (.lib  .a)
    .project(my_static_lib, p = p
        .Type(ProjectType.StaticLib)  Uses the Librarian (lib.exe  ar)
        .Sources(src)
    )

     2. Dynamic Library (.dll  .so)
    .project(my_shared_lib, p = p
        .Type(ProjectType.DLL)  Uses the Linker (link.exe  ld)
        .Sources(src)
    )

     3. Executable (.exe  elf)
    .project(my_game, p = p
        .Type(ProjectType.EXE)  Uses the Linker
        .Sources(src)
    )
    .useMsvcToolchain()
    .build()
    .run(args);

Managing Dependencies

Use the .dependsOf() method to link against other projects. This handles the Transitive Propagation of

Link Inputs Automatically passes .lib files to the linker. Build Order Ensures libraries are built before the executable.

!-- end list --

.project(game_client, p = p
    .Type(ProjectType.EXE)
    .Sources(src)
    
     Link against local projects
    .dependsOf(ve.core)
    .dependsOf(ve.render)
    
     Configure Linker flags (Abstract API)
    .Link(config = config
        .subsystem(Subsystem.WINDOWS)
        .incremental(true)
        .libraryPath(libsexternal)
        .library(user32.lib)
    )
)

🔗 Architecture

This package introduces the following core concepts

1. ProjectType Enum

Determines the build pipeline for the project

EXE Compiles sources - Links Object Files - Generates Executable. DLL Compiles sources - Links Object Files - Generates Shared Library (+ Import Library). StaticLib Compiles sources - Archives Object Files - Generates Static Library.

2. ILinkTool Interface

The contract that toolchains must implement. It has two main modes

link() For EXEDLL. Configured via ILinkConfigurator. lib() For StaticLib. Configured via ILibConfigurator.

3. Dependency System

The .dependsOf() extension integrates with the VEBuild DAG (Directed Acyclic Graph) to ensure correct topological sort execution order.

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.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on VEBuild.Link:

Package Downloads
VEBuild.VcxprojGenerator

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.msvc

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 127 5/29/2026
1.0.2.2 152 5/22/2026
1.0.2.1 122 5/22/2026
1.0.2 124 5/22/2026
1.0.1.2 123 3/6/2026
1.0.1.1 125 3/6/2026
1.0.1 129 3/3/2026
1.0.0.7-rc 126 3/2/2026
1.0.0.6-rc 125 2/26/2026
1.0.0.5-rc 153 2/25/2026
1.0.0.4-rc 136 2/17/2026
1.0.0.3-rc 125 2/17/2026
1.0.0.2-rc 157 12/26/2025
1.0.0.1-rc 204 12/25/2025
1.0.0-rc 213 11/27/2025