Runic.Assets.Desktop
0.9.0
See the version list below for details.
dotnet add package Runic.Assets.Desktop --version 0.9.0
NuGet\Install-Package Runic.Assets.Desktop -Version 0.9.0
<PackageReference Include="Runic.Assets.Desktop" Version="0.9.0" />
<PackageVersion Include="Runic.Assets.Desktop" Version="0.9.0" />
<PackageReference Include="Runic.Assets.Desktop" />
paket add Runic.Assets.Desktop --version 0.9.0
#r "nuget: Runic.Assets.Desktop, 0.9.0"
#:package Runic.Assets.Desktop@0.9.0
#addin nuget:?package=Runic.Assets.Desktop&version=0.9.0
#tool nuget:?package=Runic.Assets.Desktop&version=0.9.0
Runic.Assets.Desktop
Optional request-scoped delivery of authoritative Runic Assets snapshots through Runic Desktop. The adapter preserves manifest media types, strong entity tags, cache policy, byte ranges, streaming, and request cancellation while Runic Desktop owns only the HTTP response lifetime.
dotnet add package Runic.Assets.Desktop --prerelease
Attach an IAssetSource, such as an embedded archive, to a Desktop surface:
using System.Reflection;
using Runic.Assets;
using Runic.Assets.Desktop;
using Runic.Desktop;
AssetArchiveSource assets = AssetArchive.ReadEmbedded(Assembly.GetExecutingAssembly());
await using var host = await DesktopHost.StartAsync();
await using var surface = await host.CreateSurfaceAsync(new DesktopSurfaceOptions
{
Content = new DesktopContent.Handler(assets.ToDesktopContentHandler()),
});
Paths resolve with the same AssetManifest.TryResolveRequestPath rules and
defaults as Runic.Assets.AspNetCore: the root serves the entry point, manifest
paths are exact, and missing paths without a file extension fall back to the
entry point. A path with a trailing slash, such as /settings/, is not served.
Pass AssetRoutingOptions to ToDesktopContentHandler to disable the root or
the fallback. Unknown and invalid paths otherwise return 404. Runic Desktop
answers methods other than GET and HEAD with 405, and it decodes %2F in
request paths before the handler resolves them.
Responses carry the manifest's entity tag and cache policy, Accept-Ranges and
X-Content-Type-Options: nosniff. A text/* media type without a charset is
sent with ; charset=utf-8, as Runic.Assets.AspNetCore sends it, so one
archive gets the same Content-Type on both hosts.
An unexpected exception while the adapter prepares a response, after the path
resolved and before the body starts, becomes an empty 500; the adapter does
not log it. A malformed Range header is ignored, and an unsatisfiable one
answers 416. The asset itself is opened
only when Runic Desktop reads the body, through the response's stream factory.
A failure there, such as a source that cannot open the asset or content that no
longer matches the manifest entry's length and entity tag
(InvalidDataException), is thrown from that factory and handled by Runic
Desktop like any other failing content stream.
For a Runic Views application, which ships its frontend in www/ instead, see
Runic.Assets or the Views www/ folder.
| 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
- Microsoft.Web.WebView2 (>= 1.0.4258.31)
- Runic.Assets (= 0.9.0)
- Runic.Desktop (= 0.9.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Runic.Assets.Desktop:
| Package | Downloads |
|---|---|
|
Runic.Application.Views.Desktop
Runic Window and View host adapter for Runic Desktop. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.12.1 | 58 | 10/27/2026 |
| 0.12.0 | 160 | 10/27/2026 |
| 0.11.0 | 1,604 | 10/25/2026 |
| 0.10.0 | 3,069 | 10/22/2026 |
| 0.9.1 | 381 | 10/21/2026 |
| 0.9.0 | 103 | 10/21/2026 |
| 0.8.0-preview.6 | 439 | 10/19/2026 |
| 0.8.0-preview.5 | 138 | 10/17/2026 |
| 0.8.0-preview.4 | 396 | 10/17/2026 |
| 0.8.0-preview.3 | 394 | 10/15/2026 |
| 0.8.0-preview.2 | 78 | 10/15/2026 |
| 0.8.0-preview.1 | 102 | 10/15/2026 |
| 0.7.0-preview.9 | 336 | 10/14/2026 |
| 0.7.0-preview.8 | 79 | 10/12/2026 |
| 0.7.0-preview.7 | 53 | 10/12/2026 |
| 0.7.0-preview.6 | 355 | 10/9/2026 |
| 0.7.0-preview.5 | 125 | 10/9/2026 |
| 0.7.0-preview.4 | 73 | 10/8/2026 |
| 0.7.0-preview.3 | 59 | 10/8/2026 |
| 0.7.0-preview.2 | 62 | 10/7/2026 |