Jellyfin.Plugin.Referenceable
1.0.6-alpha.5
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
<PackageReference Include="Jellyfin.Plugin.Referenceable" Version="1.0.6-alpha.5" />
paket add Jellyfin.Plugin.Referenceable --version 1.0.6-alpha.5
#r "nuget: Jellyfin.Plugin.Referenceable, 1.0.6-alpha.5"
// 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 to10.10.4
and10.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 | Versions 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. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- Jellyfin.Model (>= 10.10.3)
- Lib.Harmony.Fork (>= 2.3.3)
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 |