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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Phosphor.Plugin.Abstractions" Version="0.17.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Phosphor.Plugin.Abstractions" Version="0.17.0" />
                    
Directory.Packages.props
<PackageReference Include="Phosphor.Plugin.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Phosphor.Plugin.Abstractions --version 0.17.0
                    
#r "nuget: Phosphor.Plugin.Abstractions, 0.17.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Phosphor.Plugin.Abstractions@0.17.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Phosphor.Plugin.Abstractions&version=0.17.0
                    
Install as a Cake Addin
#tool nuget:?package=Phosphor.Plugin.Abstractions&version=0.17.0
                    
Install as a Cake Tool

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

  1. Implement IPhosphorSourceProvider (the plug-in type + factory). Report the ApiVersion you built against and whether you support multiple instances.
  2. Have CreateInstance(...) return an IPhosphorSource (a configured instance).
  3. Implement the capability interfaces your source supports — only what it can do:
    • ITextSearchCapable — free-text search
    • IBrowsable — hierarchical browse (libraries → artists → albums → tracks, …)
    • IPlayableResolver — resolve an item to a playable ResolvedStream
    • IDownloadable — download raw streams for the host's cache
    • IConfigurable — interactive setup actions (e.g. "browse libraries")
    • IConnectionTestable — a "test connection" button
    • IRefreshable — rescan content / rebuild your catalog
    • IFavoritable — 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
0.17.0 118 9/1/2026
0.16.0 130 8/12/2026
0.15.0 135 8/11/2026
0.14.0 193 7/31/2026