Phosphor.Plugin.Abstractions
0.17.0
dotnet add package Phosphor.Plugin.Abstractions --version 0.17.0
NuGet\Install-Package Phosphor.Plugin.Abstractions -Version 0.17.0
<PackageReference Include="Phosphor.Plugin.Abstractions" Version="0.17.0" />
<PackageVersion Include="Phosphor.Plugin.Abstractions" Version="0.17.0" />
<PackageReference Include="Phosphor.Plugin.Abstractions" />
paket add Phosphor.Plugin.Abstractions --version 0.17.0
#r "nuget: Phosphor.Plugin.Abstractions, 0.17.0"
#:package Phosphor.Plugin.Abstractions@0.17.0
#addin nuget:?package=Phosphor.Plugin.Abstractions&version=0.17.0
#tool nuget:?package=Phosphor.Plugin.Abstractions&version=0.17.0
Phosphor.Plugin.Abstractions
The stable contract for authoring Phosphor source plug-ins. Phosphor is a WPF music/video jukebox for virtual pinball cabinets; sources (YouTube, Plex, and third-party providers) implement the interfaces in this package to add searchable / browsable / playable media.
Referencing (important)
Reference this package compile-only. The Phosphor host loads the single shared
copy at runtime — if your plug-in ships its own copy, the host will not recognize
your types (two assembly identities = two different IPhosphorSource types).
<PackageReference Include="Phosphor.Plugin.Abstractions" Version="0.1.0">
<Private>false</Private>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
Authoring a source
- Implement
IPhosphorSourceProvider(the plug-in type + factory). Report theApiVersionyou built against and whether you support multiple instances. - Have
CreateInstance(...)return anIPhosphorSource(a configured instance). - Implement the capability interfaces your source supports — only what it can do:
ITextSearchCapable— free-text searchIBrowsable— hierarchical browse (libraries → artists → albums → tracks, …)IPlayableResolver— resolve an item to a playableResolvedStreamIDownloadable— download raw streams for the host's cacheIConfigurable— interactive setup actions (e.g. "browse libraries")IConnectionTestable— a "test connection" buttonIRefreshable— rescan content / rebuild your catalogIFavoritable— let users star items (shows a per-row star + a "Favorites" view)IHideable— let users hide items (a themed manage dialog; you persist + filter)
For continuous radio-style streams, set IsLiveStream on the SourceItem/ResolvedStream so the
host suppresses seek/duration and shows a live badge.
Your source is a pure data producer: the host calls in and gets plain data back.
Do not touch UI, assume a thread, or call back into the host except through the
IPluginHost services handed to InitializeAsync.
Versioning
PluginApi.Current is the contract version. The package version tracks it. The host
rejects plug-ins built against an incompatible ApiVersion rather than crashing.
See the project repository for the full architecture notes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.