Jellyfin.Plugin.Referenceable 1.0.6-alpha.5

This is a prerelease version of Jellyfin.Plugin.Referenceable.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Jellyfin.Plugin.Referenceable --version 1.0.6-alpha.5                
NuGet\Install-Package Jellyfin.Plugin.Referenceable -Version 1.0.6-alpha.5                
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="Jellyfin.Plugin.Referenceable" Version="1.0.6-alpha.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Jellyfin.Plugin.Referenceable --version 1.0.6-alpha.5                
#r "nuget: Jellyfin.Plugin.Referenceable, 1.0.6-alpha.5"                
#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.
// Install Jellyfin.Plugin.Referenceable as a Cake Addin
#addin nuget:?package=Jellyfin.Plugin.Referenceable&version=1.0.6-alpha.5&prerelease

// Install Jellyfin.Plugin.Referenceable as a Cake Tool
#tool nuget:?package=Jellyfin.Plugin.Referenceable&version=1.0.6-alpha.5&prerelease                

<h1 align="center">Jellyfin Referenceable</h1> <h2 align="center">A Jellyfin Plugin Library</h2> <p align="center"> <img alt="Logo" width="256" height="256" src="https://camo.githubusercontent.com/ab4b1ec289bed0a0ac8dd2828c41b695dbfeaad8c82596339f09ce23b30d3eb3/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f73656c666873742f69636f6e732f776562702f6a656c6c7966696e2e77656270" /> <br /> <sub>Custom Logo Coming Soon</sub> <br /> <br /> <a href="https://github.com/IAmParadox27/jellyfin-plugin-home-sections"> <img alt="GPL 3.0 License" src="https://img.shields.io/github/license/IAmParadox27/jellyfin-plugin-referenceable.svg" /> </a> <a href="https://github.com/IAmParadox27/jellyfin-plugin-home-sections/releases"> <img alt="Current Release" src="https://img.shields.io/github/release/IAmParadox27/jellyfin-plugin-referenceable.svg" /> </a> <a href="https://www.nuget.org/packages/Jellyfin.Plugin.Referenceable"> <img alt="NuGet Release" src="https://img.shields.io/nuget/v/Jellyfin.Plugin.Referenceable" /> </a> </p>

Introduction

Jellyfin Referenceable is a NuGet library that can be included in any Jellyfin plugin to make that plugin referenceable by other plugins. The intent is to allow plugins to be extensible in themselves, like Jellyfin itself is extensible.

The use cases for this can be seen in my other plugins file-transformation, plugin-pages and home-sections.

Installation

Prerequisites

  • This plugin is based on Jellyfin Version 10.10.3. Updates will follow to bring support to 10.10.4 and 10.10.5 which were both released during early development of the library.
  • The library must be referenced by NuGet not DLL directly. This is due to source generators and targets files being present which only work through NuGet references.

Referencing this library

Add Jellyfin.Plugin.Referenceable from NuGet from at least version 1.0.6. All versions previous to this do not work correctly and have issues which were only discovered after making the release. OutputItemType and GeneratePathProperty must both be set on the reference. You can use the <PackageReference> line below to ensure you are referencing in the correct way.

<PackageReference Include="Jellyfin.Plugin.Referenceable" Version="1.0.6" OutputItemType="Analyzer" GeneratePathProperty="true" />

Changes from normal plugin development

  • Usually when you want to add your own services you would create a class that inherits from IPluginServiceRegistrator. With this plugin you should reference {Your.Plugin.Namespace}.Services.PluginServiceRegistrator. This class is added as part of a source generator and handles the assembly conversion to ensure you are adding services in a referenceable way.

Important Notes

  • Extra care must be taken when using this library to ensure that all your code is safe. Since it has to reload your plugin's assembly in a way that allows your exposed types to be passed between different assemblies it loses the ability to be unloaded and will crash the server it runs on if an exception is thrown.
  • All plugins that reference this library must use the same version.
  • It is advisable when releasing a plugin that uses this library that you make your users aware of the version of this library it uses so they can make an educated decision about whether any of their other plugins would be incompatible.
  • This library brings a library called 0Harmony into the Jellyfin instance. This is a patching library which allows developers to patch existing functionality using reflection. Care has been taken to ensure that patches can only be performed from this assembly and nothing else.
  • This library will be an embedded resource inside all plugins that reference it and will be self injected. Plugin's that use this will see their dll size increase by approximately 2MB.

Requests

If any functionality is desired to be overridden from Jellyfin's server please open a feature-request issue on GitHub.

FAQ

Frequent questions will be added here as they are asked.

Ensure that you check the closed issues on GitHub before asking any questions as they may have already been answered.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Jellyfin.Plugin.Referenceable:

Package Downloads
Jellyfin.Plugin.FileTransformation

Jellyfin plugin to allow other plugin developers to intercept and change the delivered web content of jellyfin-web without requiring custom jellyfin-web builds or injected javascript. This plugin is based on a Pull Request (https://github.com/jellyfin/jellyfin/pull/9095) by https://github.com/JPVenson. Most of the code here was written by him, though adapted to function in a plugin context rather than a native change.

Jellyfin.Plugin.HomeScreenSections

Package Description

Jellyfin.Plugin.PluginPages

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1-alpha.1 1 1/30/2025
1.1.0 2 1/30/2025
1.0.6 32 1/28/2025
1.0.6-alpha.7 1 1/30/2025
1.0.6-alpha.6 1 1/29/2025
1.0.6-alpha.5 24 1/29/2025
1.0.6-alpha.4 25 1/29/2025
1.0.6-alpha.2 31 1/28/2025
1.0.6-alpha.1 30 1/28/2025
1.0.5 34 1/28/2025
1.0.5-alpha.3 26 1/28/2025
1.0.5-alpha.1 32 1/28/2025
1.0.4 31 1/28/2025
1.0.4-alpha.1 25 1/28/2025
1.0.0 43 1/25/2025