Skip to content

Repository files navigation

AtomUI.Foundation

License: LGPL-3.0

Documentation Language: English | 简体中文

Overview

AtomUI.Foundation is the foundational infrastructure repository for the AtomUI ecosystem. It provides shared runtime primitives and source-generation support that other AtomUI packages can build on without depending on a specific control library.

The first release focuses on modularity:

  • AtomUI.Foundation contains module identifiers, module descriptors, dependency graph resolution, lifecycle hosting and module service registration primitives.
  • AtomUI.Foundation.Generator contains Roslyn source generators and diagnostics for module catalog generation.

Packages

Package Description
AtomUI.Foundation Runtime infrastructure package for shared AtomUI foundation APIs.
AtomUI.Foundation.Generator Analyzer/source-generator package for generated AtomUI infrastructure.

Current prerelease version:

dotnet add package AtomUI.Foundation --version 1.0.0-alpha.1

If your project needs generated module catalogs, reference the generator as an analyzer:

<PackageReference Include="AtomUI.Foundation.Generator" Version="1.0.0-alpha.1" PrivateAssets="all" />

Modularity

Mark module classes with ModuleAttribute and derive from ModuleBase:

using AtomUI.Modularity;

[Module(DisplayName = "Core")]
public sealed partial class CoreModule : ModuleBase
{
}

[Module(DisplayName = "Selection", Dependencies = [typeof(CoreModule)])]
public sealed partial class SelectionModule : ModuleBase
{
}

The module catalog generator emits an internal ModuleGeneratedCatalog type with a CreateRegistrations() method:

using AtomUI.Modularity;

var registrations = ModuleGeneratedCatalog.CreateRegistrations();
var host = new ModuleHost(registrations);
var result = await host.InitializeAsync();

Generated catalog naming can be customized with MSBuild properties:

<PropertyGroup>
    <AtomUIModularityCatalogNamespace>MyApp.Generated</AtomUIModularityCatalogNamespace>
    <AtomUIModularityCatalogTypeName>MyModuleCatalog</AtomUIModularityCatalogTypeName>
</PropertyGroup>

Local Development

Build the full solution:

dotnet build AtomUI.Foundation.slnx

Run runtime tests:

dotnet test tests/AtomUI.Foundation.Tests/AtomUI.Foundation.Tests.csproj --framework net10.0

Run generator tests:

dotnet test tests/AtomUI.Foundation.Generator.Tests/AtomUI.Foundation.Generator.Tests.csproj --framework net10.0

Publish packages to a local NuGet source:

pwsh -File scripts/PublishToLocalSources.ps1
pwsh -File scripts/PublishToLocalSources.ps1 -localSourcesDir /path/to/nuget.local -buildType Release

Repository Layout

Path Purpose
src/AtomUI.Foundation Runtime package source.
src/AtomUI.Foundation.Generator Roslyn generator package source.
tests/AtomUI.Foundation.Tests Runtime tests.
tests/AtomUI.Foundation.Generator.Tests Generator tests.
build/ Centralized MSBuild versioning, package metadata and output configuration.
docs/ Architecture and engineering documentation.
scripts/ Local development and publishing scripts.

License

AtomUI.Foundation uses the same license as AtomUI: GNU Lesser General Public License v3.0. See LICENSE.

About

the shared base library for the AtomUI ecosystem. It provides common types, utility functions, and low-level primitives that other AtomUI components and tools are built upon.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages