Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2e8d15e
feat(dotnet-windows): add independent .NET 8 + Avalonia implementatio…
ALIve114514awa Aug 17, 2026
745240a
docs(dotnet-windows): add collaboration workflow rules and reference …
ALIve114514awa Aug 17, 2026
07eed62
docs(dotnet-windows): add README for the .NET implementation
ALIve114514awa Aug 17, 2026
c39ced8
fix(dotnet-windows): collision-safe StableKey fallback + review fixes
ALIve114514awa Aug 17, 2026
cb69700
docs(dotnet-windows): record review fixes in submission log
ALIve114514awa Aug 17, 2026
e4786d1
feat(dotnet-windows): chapter 4 local database
ALIve114514awa Aug 17, 2026
45c35ab
docs(dotnet-windows): update submission log
ALIve114514awa Aug 17, 2026
e0595fe
feat(dotnet-windows): 第5章 播放引擎(IPlaybackEngine + VlcPlaybackEngine + …
ALIve114514awa Aug 20, 2026
bc6e82f
docs(dotnet-windows): record chapter 5 completion in submission log
ALIve114514awa Aug 20, 2026
b9e3314
feat(dotnet-windows): 第6章 音效系统(Biquad EQ + StereoBalance + FFT + 单元测试)
ALIve114514awa Aug 20, 2026
77957ca
docs(dotnet-windows): record chapter 6 completion in submission log
ALIve114514awa Aug 20, 2026
60d25e3
fix(dotnet-windows): 第6章 CodeRabbit 审核修复(参数校验 + FFT 采样率映射 + 移除占位测试)
ALIve114514awa Aug 20, 2026
53a8603
docs(dotnet-windows): record chapter 6 CodeRabbit fix
ALIve114514awa Aug 20, 2026
5b27dce
feat(dotnet-windows): 第7章 API 客户端(三平台统一接口 + 网易云/B站/YouTube + 歌词聚合 + 搜…
ALIve114514awa Aug 21, 2026
abfc3cd
docs(dotnet-windows): record chapter 7 completion in submission log
ALIve114514awa Aug 21, 2026
680513a
feat(dotnet-windows): 第8章 下载管理(DownloadTask + DownloadQueue + Metadat…
ALIve114514awa Aug 27, 2026
959626f
docs(dotnet-windows): record chapter 8 completion in submission log
ALIve114514awa Aug 27, 2026
6cffbd5
docs(dotnet-windows): update submission log (chapter 8 docs entry 959…
ALIve114514awa Aug 27, 2026
d7bc246
fix(dotnet-windows): remove erroneous git submodule reference
ALIve114514awa Aug 29, 2026
19e1698
feat(dotnet-windows): 第九章 数据同步(ISyncProvider + GitHub/WebDAV Provider…
ALIve114514awa Aug 29, 2026
83c06be
docs(dotnet-windows): record chapter 9 completion in submission log
ALIve114514awa Aug 29, 2026
16560fd
feat(dotnet-windows): 阶段A 在线播放URL保鲜(UrlRefresher重解析)与清理(Class1残留/PinY…
ALIve114514awa Aug 29, 2026
d1a3817
docs(dotnet-windows): record stage A completion in submission log
ALIve114514awa Aug 29, 2026
a35e0d2
feat(dotnet-windows): 第十章 UI主框架(三栏+播放条+五页面+歌词LrcParser+SourceGen+编译绑定)
ALIve114514awa Aug 29, 2026
bdc759a
docs(dotnet-windows): record chapter 10 completion in submission log
ALIve114514awa Aug 29, 2026
165ba09
fix(dotnet-windows): remove stale App/MainWindow files + update submi…
ALIve114514awa Aug 29, 2026
a055e99
feat(dotnet-windows): 第十一章 后台与系统集成(PlaybackService 后台播放 + SmtcIntegra…
ALIve114514awa Aug 30, 2026
63bc040
docs(dotnet-windows): record chapter 11 completion in submission log
ALIve114514awa Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
488 changes: 488 additions & 0 deletions dotnet-windows/.gitignore

Large diffs are not rendered by default.

837 changes: 837 additions & 0 deletions dotnet-windows/Analysis.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions dotnet-windows/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<Project>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>12.0</LangVersion>
</PropertyGroup>
</Project>
40 changes: 40 additions & 0 deletions dotnet-windows/Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Avalonia" Version="11.0.10" />
<PackageVersion Include="Avalonia.Desktop" Version="11.0.10" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="11.0.10" />
<PackageVersion Include="Avalonia.ReactiveUI" Version="11.0.10" />
<PackageVersion Include="Avalonia.Diagnostics" Version="11.0.10" />
<PackageVersion Include="Avalonia.Headless.XUnit" Version="11.0.10" />
<PackageVersion Include="Avalonia.Fonts.Inter" Version="11.0.10" />
<PackageVersion Include="LibVLCSharp" Version="3.8.0" />
<PackageVersion Include="LibVLCSharp.Avalonia" Version="3.8.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageVersion Include="Serilog" Version="3.1.1" />
<PackageVersion Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="5.0.0" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="System.Reactive" Version="6.0.0" />
<PackageVersion Include="Refit" Version="7.0.0" />
<PackageVersion Include="Refit.HttpClientFactory" Version="7.0.0" />
<PackageVersion Include="NAudio" Version="2.2.1" />
<PackageVersion Include="SkiaSharp" Version="2.88.8" />
<PackageVersion Include="TagLibSharp" Version="2.3.0" />
<PackageVersion Include="Quartz" Version="3.8.1" />
<PackageVersion Include="WebDav.Client" Version="2.9.0" />
<PackageVersion Include="Octokit" Version="9.0.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.3.0" />
<PackageVersion Include="coverlet.collector" Version="6.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageVersion Include="xunit" Version="2.5.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3" />
</ItemGroup>
</Project>
85 changes: 85 additions & 0 deletions dotnet-windows/NeriPlayer.Windows.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.App", "src\NeriPlayer.App\NeriPlayer.App.csproj", "{0A7D4920-CB3D-4C1D-B8EB-90F21EEFCAB7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.Core", "src\NeriPlayer.Core\NeriPlayer.Core.csproj", "{9686393C-5DD2-40F6-AAF4-F082F2CE1E0A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.Data", "src\NeriPlayer.Data\NeriPlayer.Data.csproj", "{EB335D8C-A392-40E2-AAAA-3645BAB3017C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.UI", "src\NeriPlayer.UI\NeriPlayer.UI.csproj", "{9B4E749E-425D-451B-97D2-D0E7A0368A50}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.Background", "src\NeriPlayer.Background\NeriPlayer.Background.csproj", "{129C49AF-CCDE-4AA5-9CD6-C33AF8FF87E2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{577D322E-2E0A-4C56-8C1C-CDF7B4F19F4A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.Core.Tests", "tests\NeriPlayer.Core.Tests\NeriPlayer.Core.Tests.csproj", "{34F1FA07-3E18-4A4C-9E62-909EF7FA5A0B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.Data.Tests", "tests\NeriPlayer.Data.Tests\NeriPlayer.Data.Tests.csproj", "{210C4D77-5926-4FDC-9B43-A531BF7783DF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.Api.Tests", "tests\NeriPlayer.Api.Tests\NeriPlayer.Api.Tests.csproj", "{1A9B19AF-1E7C-4A25-BCB8-12FA49A85B43}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeriPlayer.SourceGen", "src\NeriPlayer.SourceGen\NeriPlayer.SourceGen.csproj", "{7D374586-7202-487E-B818-200EA8F6B667}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0A7D4920-CB3D-4C1D-B8EB-90F21EEFCAB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A7D4920-CB3D-4C1D-B8EB-90F21EEFCAB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A7D4920-CB3D-4C1D-B8EB-90F21EEFCAB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A7D4920-CB3D-4C1D-B8EB-90F21EEFCAB7}.Release|Any CPU.Build.0 = Release|Any CPU
{9686393C-5DD2-40F6-AAF4-F082F2CE1E0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9686393C-5DD2-40F6-AAF4-F082F2CE1E0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9686393C-5DD2-40F6-AAF4-F082F2CE1E0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9686393C-5DD2-40F6-AAF4-F082F2CE1E0A}.Release|Any CPU.Build.0 = Release|Any CPU
{EB335D8C-A392-40E2-AAAA-3645BAB3017C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB335D8C-A392-40E2-AAAA-3645BAB3017C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB335D8C-A392-40E2-AAAA-3645BAB3017C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB335D8C-A392-40E2-AAAA-3645BAB3017C}.Release|Any CPU.Build.0 = Release|Any CPU
{9B4E749E-425D-451B-97D2-D0E7A0368A50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B4E749E-425D-451B-97D2-D0E7A0368A50}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B4E749E-425D-451B-97D2-D0E7A0368A50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B4E749E-425D-451B-97D2-D0E7A0368A50}.Release|Any CPU.Build.0 = Release|Any CPU
{129C49AF-CCDE-4AA5-9CD6-C33AF8FF87E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{129C49AF-CCDE-4AA5-9CD6-C33AF8FF87E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{129C49AF-CCDE-4AA5-9CD6-C33AF8FF87E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{129C49AF-CCDE-4AA5-9CD6-C33AF8FF87E2}.Release|Any CPU.Build.0 = Release|Any CPU
{34F1FA07-3E18-4A4C-9E62-909EF7FA5A0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34F1FA07-3E18-4A4C-9E62-909EF7FA5A0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34F1FA07-3E18-4A4C-9E62-909EF7FA5A0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34F1FA07-3E18-4A4C-9E62-909EF7FA5A0B}.Release|Any CPU.Build.0 = Release|Any CPU
{210C4D77-5926-4FDC-9B43-A531BF7783DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{210C4D77-5926-4FDC-9B43-A531BF7783DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{210C4D77-5926-4FDC-9B43-A531BF7783DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{210C4D77-5926-4FDC-9B43-A531BF7783DF}.Release|Any CPU.Build.0 = Release|Any CPU
{1A9B19AF-1E7C-4A25-BCB8-12FA49A85B43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A9B19AF-1E7C-4A25-BCB8-12FA49A85B43}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A9B19AF-1E7C-4A25-BCB8-12FA49A85B43}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A9B19AF-1E7C-4A25-BCB8-12FA49A85B43}.Release|Any CPU.Build.0 = Release|Any CPU
{7D374586-7202-487E-B818-200EA8F6B667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D374586-7202-487E-B818-200EA8F6B667}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D374586-7202-487E-B818-200EA8F6B667}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D374586-7202-487E-B818-200EA8F6B667}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{0A7D4920-CB3D-4C1D-B8EB-90F21EEFCAB7} = {A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}
{9686393C-5DD2-40F6-AAF4-F082F2CE1E0A} = {A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}
{EB335D8C-A392-40E2-AAAA-3645BAB3017C} = {A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}
{9B4E749E-425D-451B-97D2-D0E7A0368A50} = {A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}
{129C49AF-CCDE-4AA5-9CD6-C33AF8FF87E2} = {A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}
{34F1FA07-3E18-4A4C-9E62-909EF7FA5A0B} = {577D322E-2E0A-4C56-8C1C-CDF7B4F19F4A}
{210C4D77-5926-4FDC-9B43-A531BF7783DF} = {577D322E-2E0A-4C56-8C1C-CDF7B4F19F4A}
{1A9B19AF-1E7C-4A25-BCB8-12FA49A85B43} = {577D322E-2E0A-4C56-8C1C-CDF7B4F19F4A}
{7D374586-7202-487E-B818-200EA8F6B667} = {A35FBA1A-817E-4928-8E3B-14B91BDF0AA9}
EndGlobalSection
EndGlobal
Loading