77e30685bb
- Implements Phases 3–6: session isolation, cache coordination, primary election, and file system monitor coordination for Jellyfin with PostgreSQL. - Adds new database entities (Instance, DistributedLock, FileSystemChange) and EF model configurations. - Includes SQL migration scripts and EF migration for all required tables, columns, and helper functions. - Updates Device entity and JellyfinDbContext for multi-instance tracking. - Integrates new DI services for instance registry, distributed locks, cache coordinator, and primary election. - Adds publishing profiles (Win/Linux/FrameworkDependent) and automation script for deployment. - Extensive documentation for architecture, setup, and publishing. - All changes are backward compatible and build successfully.
127 lines
5.4 KiB
XML
127 lines
5.4 KiB
XML
<Project Sdk="Microsoft.NET.Sdk.Web">
|
|
|
|
<!-- ProjectGuid is only included as a requirement for SonarQube analysis -->
|
|
<PropertyGroup>
|
|
<ProjectGuid>{07E39F42-A2C6-4B32-AF8C-725F957A73FF}</ProjectGuid>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<AssemblyName>jellyfin</AssemblyName>
|
|
<OutputType>Exe</OutputType>
|
|
<TargetFramework>net11.0</TargetFramework>
|
|
<ServerGarbageCollection>false</ServerGarbageCollection>
|
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
<ApplicationIcon>Jellyfin.Server.ico</ApplicationIcon>
|
|
<IsPackable>true</IsPackable>
|
|
<!-- Suppress trimming warnings for existing migration and serialization code -->
|
|
<NoWarn>$(NoWarn);IL2026;IL2072;IL2075</NoWarn>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<Compile Include="..\SharedVersion.cs" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<Content Include="Jellyfin.Server.ico" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<EmbeddedResource Include="Resources/Configuration/*" />
|
|
</ItemGroup>
|
|
|
|
<!-- Code Analyzers -->
|
|
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
|
|
<PackageReference Include="IDisposableAnalyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="Jellyfin.Sdk" />
|
|
<PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="SerilogAnalyzer" PrivateAssets="All" />
|
|
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
|
|
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer" PrivateAssets="All" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Content Remove="startup.json.example" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<None Include="startup.json.linux">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
|
</None>
|
|
<None Include="startup.json.windows">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
|
</None>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="CommandLineParser" />
|
|
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" />
|
|
<PackageReference Include="Morestachio" />
|
|
<PackageReference Include="prometheus-net" />
|
|
<PackageReference Include="prometheus-net.AspNetCore" />
|
|
<PackageReference Include="Serilog.AspNetCore" />
|
|
<PackageReference Include="Serilog.Enrichers.Thread" />
|
|
<PackageReference Include="Serilog.Expressions" />
|
|
<PackageReference Include="Serilog.Settings.Configuration" />
|
|
<PackageReference Include="Serilog.Sinks.Async" />
|
|
<PackageReference Include="Serilog.Sinks.Console" />
|
|
<PackageReference Include="Serilog.Sinks.File" />
|
|
<PackageReference Include="Serilog.Sinks.Graylog" />
|
|
<!-- SQLite package for migration routines only (SQLite -> PostgreSQL) -->
|
|
<PackageReference Include="Microsoft.Data.Sqlite" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\src\Jellyfin.Drawing\Jellyfin.Drawing.csproj" />
|
|
<ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj" />
|
|
<ProjectReference Include="..\src\Jellyfin.Drawing.Skia\Jellyfin.Drawing.Skia.csproj" />
|
|
<ProjectReference Include="..\src\Jellyfin.LiveTv\Jellyfin.LiveTv.csproj" />
|
|
<ProjectReference Include="..\Jellyfin.Server.Implementations\Jellyfin.Server.Implementations.csproj" />
|
|
<ProjectReference Include="..\src\Jellyfin.MediaEncoding.Hls\Jellyfin.MediaEncoding.Hls.csproj" />
|
|
<ProjectReference Include="..\src\Jellyfin.Database\Jellyfin.Database.Implementations\Jellyfin.Database.Implementations.csproj" />
|
|
<ProjectReference Include="..\src\Jellyfin.Database\Jellyfin.Database.Providers.Postgres\Jellyfin.Database.Providers.Postgres.csproj" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<None Update="wwwroot\api-docs\redoc\custom.css">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<None Update="wwwroot\api-docs\swagger\custom.css">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<None Update="wwwroot\api-docs\jellyfin.svg">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<None Update="ServerSetupApp/index.mstemplate.html">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- SQL initialization scripts for PostgreSQL -->
|
|
<None Include="..\sql\**\*.sql">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
|
<Pack>false</Pack>
|
|
<Link>sql\%(RecursiveDir)%(Filename)%(Extension)</Link>
|
|
</None>
|
|
</ItemGroup>
|
|
|
|
<!-- Post-build event to ensure SQL files are copied -->
|
|
<Target Name="CopySQLFiles" AfterTargets="Build">
|
|
<ItemGroup>
|
|
<SQLFiles Include="$(ProjectDir)..\sql\**\*.sql" />
|
|
</ItemGroup>
|
|
<Copy SourceFiles="@(SQLFiles)" DestinationFolder="$(OutDir)sql\%(RecursiveDir)" SkipUnchangedFiles="true" />
|
|
<Message Importance="high" Text="Copied SQL files to output directory" />
|
|
</Target>
|
|
|
|
</Project>
|