KiteKey.Core
0.2.0
dotnet add package KiteKey.Core --version 0.2.0
NuGet\Install-Package KiteKey.Core -Version 0.2.0
<PackageReference Include="KiteKey.Core" Version="0.2.0" />
<PackageVersion Include="KiteKey.Core" Version="0.2.0" />
<PackageReference Include="KiteKey.Core" />
paket add KiteKey.Core --version 0.2.0
#r "nuget: KiteKey.Core, 0.2.0"
#:package KiteKey.Core@0.2.0
#addin nuget:?package=KiteKey.Core&version=0.2.0
#tool nuget:?package=KiteKey.Core&version=0.2.0
Kite & Key .NET foundation
Portable components extracted and adapted from Delphinium Common. Requires .NET 10.
All packages are MIT licensed; the repository's LICENSE and this README are included
in each package. The source packages include portable PDBs and GitHub Source Link.
| Package | Dependency | Contents |
|---|---|---|
KiteKey.Core |
.NET 10 only | Keyed caches, collections, async/concurrency, text/date/enum/reflection helpers, file rotation and file abstractions |
KiteKey.Hosting |
Microsoft.Extensions configuration/DI/hosting/options 10.0.0 | Required configuration, development defaults, validated options, scoped values, service discovery |
KiteKey.Mail |
KiteKey.Core, Microsoft.Extensions.Logging.Abstractions 10.0.0 |
SMTP sender, recipient allowlist, plain text mail builder |
The expanded packages are version 0.2.0; 0.1.0 is already published.
KiteKey.Core caches are not thread-safe:
coordinate access externally when sharing instances across threads. .NET 10 supplies
most async LINQ operations: Core deliberately omits duplicate extension signatures
to avoid ambiguous method calls. File rotation manages paths supplied by the caller;
the physical directory abstraction rejects paths escaping its root. Obfuscate is
cosmetic, not a way to anonymize sensitive data. SMTP settings
must be supplied by the consuming app; this repository contains no credentials.
Omit the allowlist only when arbitrary recipients are intended (such as production).
Mail messages are owned and disposed by the caller. MailSender owns its SMTP
clients and releases them after each send.
using KiteKey.Hosting;
using KiteKey.Mail;
using Microsoft.Extensions.DependencyInjection;
services.AddScopeValue<RequestContext>();
services.AddOptionsValidated<MyOptions>("MyOptions");
using IServiceScope scope = provider.CreateScope();
scope.SetScopeValue(new RequestContext());
using MailSender sender = new(
new MailSettings { SmtpServer = "smtp.example.com", FromAddress = "sender@example.com" },
allowedDestinations: ["recipient@example.com"]);
using var message = sender.CreateMailMessage("recipient@example.com", "Hello", "Plain text");
// await sender.SendAsync(message);
Build locally from the repository root with dotnet test KiteKey.sln and
dotnet pack KiteKey.sln -c Release -o artifacts.
CI packs on pull requests and main pushes. NuGet.org has a trusted-publishing
policy owned by the KiteKey NuGet organization for GitHub owner Kite-Key,
repository foundation, workflow release.yml, environment nuget, and the
exact package IDs KiteKey.Core, KiteKey.Hosting, and KiteKey.Mail.
The NUGET_USER repository variable is taylorchasewhite, the NuGet.org
policy creator (not the organization owner or an email address), as
required by NuGet/login. Protect the nuget environment and release tags.
After verifying tests, contents, and versions, push a v0.2.0-style tag on
main. The workflow uses OIDC and a short-lived token, not a saved API key.
| Product | Versions 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. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on KiteKey.Core:
| Package | Downloads |
|---|---|
|
KiteKey.Mail
SMTP mail sending and plain text email composition. |
GitHub repositories
This package is not used by any popular GitHub repositories.