VEBuild.ProjectGenerator 1.0.3

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

ve.build.projectgenerator

🚀 STATUS: v1.0.0 RC. Project Generation Abstraction Layer for VEBuild.

ve.build.projectgenerator defines the interfaces and base logic for generating IDE (Integrated Development Environment) project files.

It acts as a factory and dispatcher: it allows you to register a specific generator (e.g., for Visual Studio) and automatically creates a standard generate task that iterates through all defined projects to create configuration files for them.

⚠️ Important

This package does not contain implementations for specific IDEs. To generate .vcxproj or .sln files, you must install a corresponding implementation package alongside this one:


📦 Installation

dotnet add package ve.build.projectgenerator

⚙️ Architecture

This package introduces the IProjectGenerator concept. This is the contract that must be implemented by any system wishing to export the ve.build configuration to an external format.

Interface

public interface IProjectGenerator
{
    // Unique name of the generator (used in CLI: --generator=Name)
    string Name { get; }

    // Determines the output path for the project file based on project settings
    string projectFile(IProjectBuilder projectBuilder);

    // Main generation logic: writes content to the file
    Task<ActionResult> generateProjectFiles(
        IBuildContext ctx, 
        IProjectBuilder projectBuilder, 
        File[] files, 
        IEnumerable<IProjectBuilder> dependencies
    );

    // Hooks for additional setup (e.g., Solution generation)
    void setupProject(string file);
    void finalStep(ITaskBuilder taskBuilder);
}

💻 Usage

Typically, you do not use this package directly but rather reference a specific implementation (e.g., useVcxprojGenerator()).

However, if you are writing your own generator (e.g., for CLion or Makefile), you can use this package as a base.

Example: Registering a Custom Generator

using ve.build.core;
using ve.build.core.projects;
using ve.build.core.tasks;
using ve.build.projectgenerator;
using File = ve.build.core.files.File;

// 1. Implement the interface
class MyCustomGenerator : IProjectGenerator
{
    public string Name => "MyGen";

    public string projectFile(IProjectBuilder projectBuilder)
    {
        // Define where the project file will be created
        return Path.Combine(projectBuilder.IntermediateDir, $"{projectBuilder.Name}.myproj");
    }

    public async Task<ActionResult> generateProjectFiles(IBuildContext ctx, IProjectBuilder projectBuilder, File[] files, IEnumerable<IProjectBuilder> dependencies)
    {
        // Write your generation logic here
        // ...
        return ActionResult.SUCCESS;
    }

    public void setupProject(string file) { /* Optional hook */ }
    
    public void finalStep(ITaskBuilder taskBuilder) 
    { 
        // Optional hook to add solution generation tasks or post-processing
    }
}

// 2. Register in HostBuilder
return await new HostBuilder()
    .project("my_app", ...)
    
    // Register your generator instance
    .setupProjectGenerator(new MyCustomGenerator()) 
    
    .build()
    .run(args);

🛠️ CLI Command

Once this package (and an implementation) is registered, a new command becomes available in your CLI:

# Runs the generation process for all projects
dotnet run -- generateProjectFiles

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 (1)

Showing the top 1 NuGet packages that depend on VEBuild.ProjectGenerator:

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.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.4 113 5/29/2026
1.0.3.2 140 5/22/2026
1.0.3.1 109 5/22/2026
1.0.3 115 5/22/2026
1.0.2.2 119 3/6/2026
1.0.2.1 111 3/6/2026
1.0.2 124 3/3/2026
1.0.1.3-rc 118 3/2/2026
1.0.1.2-rc 147 2/25/2026
1.0.1.1-rc 135 2/17/2026
1.0.1-rc 127 12/27/2025
1.0.0.3-rc 106 12/27/2025
1.0.0.2-rc 103 12/27/2025
1.0.0.1-rc 202 12/25/2025
1.0.0-rc 208 11/27/2025