Solution structure¶
Generated solution: <Name>.slnx (from sourceName ConnectSoft.Blazor.ComponentLibraryTemplate).
<Name>.slnx
├── src/
│ ├── <Name>/ # main Razor Class Library (RCL, net10.0, Sdk.Razor)
│ ├── <Name>.Tokens/ # Tokens theme adapter
│ ├── <Name>.Flowbite/ # Flowbite theme adapter
│ ├── <Name>.DaisyUI/ # DaisyUI theme adapter
│ ├── <Name>.Security/ # CSP middleware / nonce service
│ └── <Name>.SecurityAnalyzers/ # Roslyn analyzers (referenced as analyzer)
├── samples/ # if --include-gallery
│ └── <Name>.Gallery/ # Blazor WASM component gallery
└── tests/ # if --include-tests
├── <Name>.UnitTests/ # MSTest + bUnit
└── <Name>.LinkerTest/ # WASM trim/tree-shaking verification
Main RCL internals¶
src/<Name>/
├── Components/ # Button, TextField, Modal, DatePicker, DataGrid, LazyRender, ...
├── Services/ # IThemeProvider, adapters, RtlDirectionService, LazyRenderPreloadService
├── Options/ # LibraryTemplateOptions, ValidateLibraryTemplateOptions
├── Diagnostics/ # LibraryTemplateMetrics, LibraryTemplateDiagnostics
├── Resources/ # Strings.resx
├── Styles/ # app.css (Tailwind source)
├── wwwroot/ # tokens.*.css, rtl.css, modal.js, datepicker.js, datagrid.js, lazy-render.js
└── package.json # npm Tailwind build to wwwroot/css/app.css
Authoring-only projects (not in dotnet new output)¶
These exist in the template repository under AuthoringMode and are excluded from generated solutions: samples/<Name>.Stories, samples/<Name>.Gallery.Server, tests/<Name>.E2ETests (Playwright + Axe), tests/<Name>.ScaffoldTests, tests/<Name>.SecurityAnalyzers.Tests.
Build configuration¶
- CPM via
Directory.Packages.props(ASP.NET Components 10.0.9,ConnectSoft.Extensions1.0.17). - Analyzers applied via
Directory.Build.props: AsyncFixer, Asyncify, StyleCop, Meziantou, SonarAnalyzer, VS Threading, plus the localSecurityAnalyzersproject. - MkDocs site at
mkdocs.yml(solution root).