Installation
Feed configuration, target frameworks, packages and verification
Beep.Skia ships as 24 NuGet packages: the core library and its model assembly, one package per diagram family (16), the five platform hosts and the loader extension. This page covers the prerequisites, the package list and a minimal verification project.
Table of Contents
Prerequisites
Two things must be in place before the first restore:
- A .NET SDK that can build the target framework you choose (see the table below). The repository itself builds with the .NET 10 SDK.
- The private
TheTechIdea.Beep.*feed. The core package depends on BeepDM model packages (DataManagementModels,Vis.Modules) that are not published on nuget.org at the required versions. Add the feed to yournuget.config(or a local folder feed) before restoring.
nuget.config with the private feed
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- Internal feed hosting TheTechIdea.Beep.* packages -->
<add key="beep" value="https://nuget.your-company.com/v3/index.json" />
</packageSources>
</configuration>
Target Frameworks
| Package group | Frameworks | Notes |
|---|---|---|
Beep.Skia (core) | net8.0, net9.0, net10.0 | Multi-targeted; pick what your app already uses. |
Beep.Skia.Model and family packages | net8.0, net9.0 | Library-only targets. |
Beep.Skia.Winform.Controls, Beep.Skia.Wpf.Controls | net10.0-windows10.0.19041.0 | SkiaSharp 4.x view packages ship no net8.0 assets; do not suppress NU1701 to force older Windows TFMs. |
Beep.Skia.Blazor.Controls, Beep.Skia.Avalonia.Controls | net8.0 | Cross-platform hosts. |
Beep.Skia.Maui.Controls | net10.0-android, -ios, -maccatalyst, -windows10.0.19041.0 | Requires the MAUI workload. |
NuGet Installation
Install the core package to begin; add family or host packages as needed:
Install via .NET CLI
dotnet add package Beep.Skia
# A diagram family
dotnet add package Beep.Skia.ETL
# A platform host
dotnet add package Beep.Skia.Winform.Controls
Packages
| Package | Contents |
|---|---|
Beep.Skia | Core: canvas, components, connections, themes, automation, collaboration, extensions, serialization. |
Beep.Skia.Model | Shared models and enums (DTOs, automation models, layout contracts). |
Beep.Skia.FlowChart, .Business, .ERD, .DFD, .ETL, .UML, .Network, .PM, .MindMap, .StateMachine, .ECAD, .Cloud, .Security, .ML, .WellLogs, Beep.Ski.Quantitative | One package per diagram family (16 in total). |
Beep.Skia.Winform.Controls | WinForms host control plus a wrapper control for every Material component. |
Beep.Skia.Wpf.Controls | WPF host surface. |
Beep.Skia.Blazor.Controls | Blazor component. |
Beep.Skia.Avalonia.Controls | Avalonia control. |
Beep.Skia.Maui.Controls | MAUI view. |
Beep.Skia.Loader | Assembly-loader extension for BeepDM hosts. |
Every package ships XML documentation for IntelliSense and a package README.
Project Setup
Reference the namespaces you use. A minimal WinForms or console project needs only three:
Typical Using Directives
using Beep.Skia; // DrawingManager, ConnectionLine, HistoryManager, themes
using Beep.Skia.Components; // Material controls and utility components
using Beep.Skia.Flowchart; // ProcessNode, DecisionNode, ...
using SkiaSharp; // SKCanvas, SKSurface, SKColor
A console or test project that renders offscreen needs no Windows-specific TFM:
Project File Configuration
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
A WinForms app that uses SkiaHostControl targets the Windows TFM the host package provides:
WinForms Project
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0-windows10.0.19041.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Dependencies
The core package resolves these automatically:
| Dependency | Version | Purpose |
|---|---|---|
| SkiaSharp | 4.150.1 | 2D rendering engine (native assets per platform). |
| SkiaSharp.Extended | 3.0.0 | Additional Skia helpers. |
| SkiaSharp.Svg | 1.60.0 | SVG parsing for SvgImage. |
| TheTechIdea.Beep.DataManagementModels | 3.1.1 | BeepDM model contracts (private feed). |
| TheTechIdea.Beep.Vis.Modules | 2.0.44 | Visual module contracts (private feed). |
Serialization uses System.Text.Json from the framework — no extra package is needed.
Solution Structure
The solution holds 27 projects: the core, the shared model, 16 family libraries, five host adapters, the loader extension, the tests and two runnable samples.
| Area | Projects |
|---|---|
| Core | Beep.Skia, Beep.Skia.Model |
| Families | FlowChart, Business, ERD, DFD, ETL, UML, Network, PM, MindMap, StateMachine, ECAD, Cloud, Security, ML, WellLogs, Quantitative |
| Hosts | Beep.Skia.Winform.Controls, Beep.Skia.Wpf.Controls, Beep.Skia.Blazor.Controls, Beep.Skia.Avalonia.Controls, Beep.Skia.Maui.Controls |
| Extras | Beep.Skia.Loader |
| Samples | Beep.Skia.Sample.WinForms, Beep.Skia.Sample.Server — see Sample Applications |
| Tests | Beep.Skia.Tests (501 tests, including whole-surface sweeps) |
Verifying Installation
Confirm that Beep.Skia is correctly installed by running a minimal render test:
Verification Test
using Beep.Skia;
using Beep.Skia.Flowchart;
using SkiaSharp;
using var surface = SKSurface.Create(new SKImageInfo(800, 600));
var canvas = surface.Canvas;
var manager = new DrawingManager();
manager.AddComponent(new ProcessNode
{
Label = "Hello Beep.Skia",
X = 50, Y = 50, Width = 180, Height = 60
});
manager.Draw(canvas);
Console.WriteLine($"Canvas nodes: {manager.GetComponents().Count}");
Console.WriteLine("Beep.Skia installation verified successfully.");
If the code compiles and runs without errors, Beep.Skia is ready for development. For further guidance, proceed to the Quick Start Tutorial, or see Troubleshooting if restore fails.