Compare commits
292 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d04213147e | |||
| 4310f72872 | |||
| fefaedb54f | |||
| 9e25ff7460 | |||
| 3e870daeaf | |||
| 8f16d3aa66 | |||
| 9374231e9f | |||
| 2c0bf8b2d6 | |||
| 048fb345ed | |||
| 5726f27445 | |||
| 2c3aba6709 | |||
| 137ff46ed9 | |||
| c16ffa08e0 | |||
| 86122510b4 | |||
| 67f047735f | |||
| 8ee7e09ecf | |||
| e464f285e2 | |||
| 68d1435ade | |||
| d42f6ba07a | |||
| 662a5aca6f | |||
| f422c76805 | |||
| cd85ff7f17 | |||
| bd30f0dcc2 | |||
| 5c4564931c | |||
| 923c553da8 | |||
| de36e33c5b | |||
| d95c797afa | |||
| f217902424 | |||
| d6e6bd6cc3 | |||
| 8b521ff7c2 | |||
| ed061db526 | |||
| 880d88749f | |||
| 01dee6f61a | |||
| 3267624951 | |||
| 5bb8b2bde8 | |||
| 736e9c405b | |||
| 36619868e5 | |||
| 13ad0c7142 | |||
| 2155c6a91e | |||
| 40893ce6b1 | |||
| 023d5a98b6 | |||
| e501f46aa7 | |||
| c96c30fa40 | |||
| b76f77c017 | |||
| 74b2c3b3e7 | |||
| be6b58f7f0 | |||
| 651a229a24 | |||
| 6db92b60ce | |||
| b25c682e55 | |||
| c457037a09 | |||
| c222ae2a57 | |||
| e2a5e7ef11 | |||
| 32d3fa92ca | |||
| db30652b22 | |||
| cb00861532 | |||
| 64f60440a3 | |||
| 0465f6f578 | |||
| a8701adbb4 | |||
| d954e99f12 | |||
| ab1dcbdcaf | |||
| 7e4319695f | |||
| 6a78e9aa71 | |||
| ece1768b2a | |||
| c749fad3be | |||
| 25afcb2b3f | |||
| 45683c78a8 | |||
| a477cd87cf | |||
| a2cf95f0c1 | |||
| 88ddc7a320 | |||
| e5463f44d2 | |||
| 816d1c9b0c | |||
| 69296f9587 | |||
| 6577ed9fa0 | |||
| a54e988441 | |||
| db508a04f0 | |||
| eb065d7c7e | |||
| 1b639291e4 | |||
| c8810f7926 | |||
| 073b5885c6 | |||
| ed6df52998 | |||
| 88b4aac622 | |||
| 9504413ff7 | |||
| 0f28de1e94 | |||
| ad11654cb4 | |||
| f43aa16c6a | |||
| c0e757dc12 | |||
| fcecb2c14c | |||
| 408911de4a | |||
| 23932298fc | |||
| 7c554190af | |||
| 2f2065e453 | |||
| 1480b5d4df | |||
| 9ae326ce9f | |||
| 3dd83886b8 | |||
| 3a1a256198 | |||
| 84f9ae5227 | |||
| ce85b39328 | |||
| 6c23ac30a3 | |||
| bbe9596d8d | |||
| 5c42a2336d | |||
| afa4ad9e91 | |||
| 50a3c7624e | |||
| b40dac00b9 | |||
| 35be6db96e | |||
| 35641d5c79 | |||
| 07f1a9f43b | |||
| 002e550149 | |||
| cc8dbeb3f0 | |||
| e96fcd5f1b | |||
| d5c87efea9 | |||
| 8044cee366 | |||
| 2bbbf14ea6 | |||
| 2737f9ae01 | |||
| 078d4623f9 | |||
| 593c170ee5 | |||
| a0279bf8f1 | |||
| dcda15a33c | |||
| 39ef48dbec | |||
| c3d9c4525f | |||
| 039eb60c4b | |||
| 0a6aae5c97 | |||
| 08ffcfc50d | |||
| c93db63297 | |||
| 36339154dc | |||
| 1648d65c47 | |||
| 815e426ecc | |||
| f37454fe9b | |||
| b79debc968 | |||
| c2bb1ea80a | |||
| 1e9d647de8 | |||
| 774e75848a | |||
| ebbb2d90ba | |||
| 77b43918f1 | |||
| e505e91931 | |||
| c9118b5abe | |||
| 9843c01904 | |||
| 4986266268 | |||
| e629bffde8 | |||
| 6cf351bac5 | |||
| e32c0bbf97 | |||
| e5abea1474 | |||
| 3ae002db91 | |||
| 063ca17403 | |||
| b84fd825b3 | |||
| 1732c84606 | |||
| 4573a9b494 | |||
| 8f29d7b8ea | |||
| 7156d90967 | |||
| ec726e8c48 | |||
| 488403a86b | |||
| 59474d68cd | |||
| 5ab308bb9b | |||
| bf3d6ad778 | |||
| 59356f210e | |||
| 42df02f718 | |||
| 8728126421 | |||
| e0c36a9545 | |||
| 9a2bd1a6cc | |||
| 499edb402c | |||
| 14216ab98f | |||
| 95c10dacd4 | |||
| 2883405ace | |||
| 75e5b6e897 | |||
| 66f3aa22d6 | |||
| 7930120e0b | |||
| aa44b137c4 | |||
| 103918060a | |||
| 0644bbf924 | |||
| 3853181d8a | |||
| de694024bb | |||
| 6ceaeb0710 | |||
| 71f104b947 | |||
| a9e913434a | |||
| f1ffae11aa | |||
| 7f7fde20bd | |||
| 2e97c2edc2 | |||
| 69b8590881 | |||
| 7b9ba5e8a0 | |||
| d6ab3c7f03 | |||
| 12d062d4de | |||
| f27d3c9111 | |||
| 6ab74d449e | |||
| ceed57c0f2 | |||
| 8ca203f34b | |||
| d4de20aa96 | |||
| c94dec40a1 | |||
| b829114c4f | |||
| a3a32bf5fa | |||
| faa7cc5b13 | |||
| 1e506f9930 | |||
| 217449ba54 | |||
| 55b79c4d4e | |||
| a6c5fed203 | |||
| b7e31d1c9c | |||
| 1d0b16895f | |||
| 65d73c2e50 | |||
| 83c390e446 | |||
| 31f5fa5ea6 | |||
| f42c7cbd30 | |||
| 3cb592ce7e | |||
| d5fa02e9a4 | |||
| cbb2fac6ea | |||
| 35747253b8 | |||
| 17c45fdd65 | |||
| 88f02e3faf | |||
| 35a0c4d05f | |||
| ca7fa0bc97 | |||
| 6a3c8f6187 | |||
| 24bb4bd625 | |||
| a3811a97a0 | |||
| dc6723f2e5 | |||
| e14f169cb0 | |||
| 235a1abf34 | |||
| c5edf0a8b5 | |||
| c0b6d9d8e2 | |||
| eefd2fa705 | |||
| 1a4a5887f2 | |||
| 5a163ae124 | |||
| 95c5a9e143 | |||
| 94f47b0165 | |||
| 08beb69865 | |||
| 0e9def7e6a | |||
| 6a307d97ab | |||
| 252eaa74c2 | |||
| 4115216a41 | |||
| a99e410196 | |||
| 4154b68c79 | |||
| fa20e3a945 | |||
| a15a166b5c | |||
| 0fcd736259 | |||
| 925c735557 | |||
| 0505158281 | |||
| 19651ddeb1 | |||
| 1fe7986e08 | |||
| a469e29438 | |||
| ec028a4a5c | |||
| 6ebbeb000f | |||
| e3cf3195a8 | |||
| 1734a03d41 | |||
| 7c47f01a77 | |||
| dd622fb5e9 | |||
| 59636940c5 | |||
| c7922c915b | |||
| b2031998d8 | |||
| 7d3a74daf2 | |||
| dccce87293 | |||
| 442ad2dac7 | |||
| ae9a6350a7 | |||
| d49e38f314 | |||
| 5244009b02 | |||
| eef7478585 | |||
| 3eae8a8c84 | |||
| c8509e94cf | |||
| 7140fc79c9 | |||
| 7d25393d6e | |||
| 149c5bbfd3 | |||
| 38485f1e24 | |||
| 008ab5fd4f | |||
| 178c074eb6 | |||
| c3279e78c2 | |||
| 7c8f8448af | |||
| 8affd6a3f5 | |||
| 66fdfb728e | |||
| 9261344a3c | |||
| 923f2eaf94 | |||
| 95190efa5c | |||
| dd71972adc | |||
| 3a48c00ec6 | |||
| e3f40a3e40 | |||
| 6c1e6d40e9 | |||
| 187c7f3b58 | |||
| 4e3c86d009 | |||
| ed5cc929d3 | |||
| 213b2c2644 | |||
| e1adf07789 | |||
| 83f0634863 | |||
| f08122769f | |||
| 49fdeadfd2 | |||
| bca80245bb | |||
| 0f6c127ad3 | |||
| c087a02303 | |||
| 6c84a876ff | |||
| df27068329 | |||
| f10df31edd | |||
| 902919cf98 | |||
| a6aec5ad62 | |||
| 2fd651fd25 | |||
| 67615028e1 | |||
| 1eca159e23 | |||
| d1d9ca82df | |||
| 88bd2dbfe9 | |||
| ae2b2970db |
@@ -68,19 +68,19 @@ jobs:
|
||||
run: dotnet --info
|
||||
|
||||
- name: Build BD.WTTS.Client.AppHost
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.AppHost\BD.WTTS.Client.AppHost.csproj --nologo -v q --property:WarningLevel=1;DebugType=pdbonly
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.AppHost\BD.WTTS.Client.AppHost.csproj --nologo -v q --property:WarningLevel=1 --property:DebugType=pdbonly
|
||||
|
||||
- name: Build BD.WTTS.Client.Plugins.Accelerator.ReverseProxy
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.Plugins.Accelerator.ReverseProxy\BD.WTTS.Client.Plugins.Accelerator.ReverseProxy.csproj --nologo -v q --property:WarningLevel=1;DebugType=pdbonly
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.Plugins.Accelerator.ReverseProxy\BD.WTTS.Client.Plugins.Accelerator.ReverseProxy.csproj --nologo -v q --property:WarningLevel=1 --property:DebugType=pdbonly
|
||||
|
||||
- name: Build BD.WTTS.Client.Avalonia.App
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.Avalonia.App\BD.WTTS.Client.Avalonia.App.csproj --nologo -v q --property:WarningLevel=1;DebugType=pdbonly
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.Avalonia.App\BD.WTTS.Client.Avalonia.App.csproj --nologo -v q --property:WarningLevel=1 --property:DebugType=pdbonly
|
||||
|
||||
- name: Build BD.WTTS.Client.Avalonia.Designer.HostApp
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.Avalonia.Designer.HostApp\BD.WTTS.Client.Avalonia.Designer.HostApp.csproj --nologo -v q --property:WarningLevel=1;DebugType=pdbonly
|
||||
run: dotnet build -c Release src\BD.WTTS.Client.Avalonia.Designer.HostApp\BD.WTTS.Client.Avalonia.Designer.HostApp.csproj --nologo -v q --property:WarningLevel=1 --property:DebugType=pdbonly
|
||||
|
||||
- name: Test
|
||||
run: dotnet test src/BD.WTTS.UnitTest/BD.WTTS.UnitTest.csproj -c Release -p:GeneratePackageOnBuild=false --nologo -v q --property:WarningLevel=1;DebugType=pdbonly
|
||||
run: dotnet test src/BD.WTTS.UnitTest/BD.WTTS.UnitTest.csproj -c Release -p:GeneratePackageOnBuild=false --nologo -v q --property:WarningLevel=1 --property:DebugType=pdbonly
|
||||
|
||||
# release:
|
||||
# name: Release
|
||||
@@ -34,6 +34,7 @@ bld/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
.vscode/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
|
||||
@@ -37,3 +37,15 @@
|
||||
[submodule "ref/Facepunch.Steamworks"]
|
||||
path = ref/Facepunch.Steamworks
|
||||
url = https://github.com/BeyondDimension/Facepunch.Steamworks.git
|
||||
[submodule "ref/appcenter-sdk-dotnet"]
|
||||
path = ref/appcenter-sdk-dotnet
|
||||
url = https://github.com/BeyondDimension/appcenter-sdk-dotnet.git
|
||||
[submodule "ref/Fusillade"]
|
||||
path = ref/Fusillade
|
||||
url = https://github.com/reactiveui/Fusillade
|
||||
[submodule "ref/Avalonia8"]
|
||||
path = ref/Avalonia8
|
||||
url = https://github.com/BeyondDimension/Avalonia8
|
||||
[submodule "ref/dotnetCampus.Ipc"]
|
||||
path = ref/dotnetCampus.Ipc
|
||||
url = https://github.com/BeyondDimension/dotnetCampus.Ipc
|
||||
|
||||
@@ -71,13 +71,12 @@ See details [./doc/download-guide.en.md](./doc/download-guide.en.md)
|
||||
Read what we [milestones](https://github.com/BeyondDimension/SteamTools/milestones), and feel free to ask questions.
|
||||
|
||||
## ⌨️ Development Environment
|
||||
[Visual Studio 2022](https://visualstudio.microsoft.com/vs)
|
||||
[Visual Studio 2022 for Mac](https://visualstudio.microsoft.com/vs/mac)
|
||||
[Visual Studio 2026](https://visualstudio.microsoft.com/vs)
|
||||
[JetBrains Rider](https://www.jetbrains.com/rider)
|
||||
[Visual Studio Code](https://code.visualstudio.com)
|
||||
[OpenJDK 17](https://learn.microsoft.com/en-us/java/openjdk/download#openjdk-17)
|
||||
[Android Studio Electric Eel Or Higher](https://developer.android.com/studio)
|
||||
[Xcode 14 Or Higher](https://developer.apple.com/xcode)
|
||||
[Xcode 26 Or Higher](https://developer.apple.com/xcode)
|
||||
|
||||
## 🏗️ Project Structure
|
||||
See details [./src/README.md](./src/README.md)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
[](https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-7)
|
||||
[](https://learn.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-11)
|
||||
|
||||
[](https://afdian.net/@rmbgame)
|
||||
[](https://afdian.com/@rmbgame)
|
||||
[](https://ko-fi.com/rmbgame)
|
||||
[](https://www.patreon.com/rmbgame)
|
||||
|
||||
@@ -93,28 +93,12 @@
|
||||
查看这个 [milestones](https://github.com/BeyondDimension/SteamTools/milestones) 来了解我们下一步的开发计划,并随时提出问题。
|
||||
|
||||
## ⌨️ 开发环境
|
||||
[Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/vs) 或 [Visual Studio 2022 for Mac](https://visualstudio.microsoft.com/zh-hans/vs/mac)
|
||||
- 系统要求
|
||||
- [Windows 11 版本 21H2 或更高版本:家庭版、专业版、专业教育版、专业工作站版、企业版和教育版](https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/system-requirements)
|
||||
- [macOS Big Sur 11.0 或更高版本](https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/mac-system-requirements)
|
||||
- 工作负荷
|
||||
- Web 和云
|
||||
- ASP.NET 和 Web 开发
|
||||
- 桌面应用和移动应用
|
||||
- 使用 .NET 的移动开发 / .NET Multi-platform App UI 开发
|
||||
- .NET 桌面开发
|
||||
- 通用 Windows 平台开发
|
||||
- 单个组件
|
||||
- GitHub Extension for Visual Studio(可选)
|
||||
- [Visual Studio Marketplace](https://marketplace.visualstudio.com)
|
||||
- [Avalonia for Visual Studio(可选)](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS)
|
||||
- [NUnit VS Templates(可选)](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
|
||||
|
||||
[Visual Studio 2026](https://visualstudio.microsoft.com/zh-hans/vs)
|
||||
[JetBrains Rider](https://www.jetbrains.com/rider)
|
||||
[Visual Studio Code](https://code.visualstudio.com)
|
||||
[OpenJDK 17](https://learn.microsoft.com/zh-cn/java/openjdk/download#openjdk-17)
|
||||
[Android Studio Electric Eel 或更高版本](https://developer.android.google.cn/studio)
|
||||
[Xcode 14 或更高版本](https://developer.apple.com/xcode)
|
||||
[Xcode 26 或更高版本](https://developer.apple.com/xcode)
|
||||
|
||||
## 🏗️ [项目结构](./src/README.md)
|
||||
详见 [./src/README.md](./src/README.md)
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
<Solution>
|
||||
<Configurations>
|
||||
<Platform Name="Any CPU" />
|
||||
<Platform Name="ARM" />
|
||||
<Platform Name="ARM64" />
|
||||
<Platform Name="x64" />
|
||||
<Platform Name="x86" />
|
||||
</Configurations>
|
||||
<Folder Name="/0.Root/">
|
||||
<File Path=".github/workflows/CI.yml" />
|
||||
<File Path=".gitignore" />
|
||||
<File Path=".gitmodules" />
|
||||
<File Path="nuget.config" />
|
||||
<File Path="README.en.md" />
|
||||
<File Path="README.md" />
|
||||
<File Path="ref/DirectoryPackages/Directory.Packages.props" />
|
||||
<File Path="src/.editorconfig" />
|
||||
<File Path="src/Directory.Build.props" />
|
||||
</Folder>
|
||||
<Folder Name="/0.Root/Build/">
|
||||
<File Path="build/publish_apphost_linux_x64.sh" />
|
||||
<File Path="build/settings_v4_app.json" />
|
||||
</Folder>
|
||||
<Folder Name="/0.Root/Document/">
|
||||
<File Path="doc/file-system.md" />
|
||||
<File Path="doc/open-source-library.md" />
|
||||
<File Path="doc/openwrt.md" />
|
||||
<File Path="doc/publish.md" />
|
||||
<File Path="doc/release-keylol.md" />
|
||||
</Folder>
|
||||
<Folder Name="/0.Root/Document/Program File Structure/">
|
||||
<File Path="doc/program-file-structure/Linux.md" />
|
||||
<File Path="doc/program-file-structure/macOS.md" />
|
||||
<File Path="doc/program-file-structure/Windows.md" />
|
||||
</Folder>
|
||||
<Folder Name="/0.Root/Source/">
|
||||
<File Path="src/AssemblyInfo.Constants.cs" />
|
||||
<File Path="src/AssemblyInfo.cs" />
|
||||
<File Path="src/AssemblyInfo.Version.Max.cs" />
|
||||
<File Path="src/README.md" />
|
||||
<File Path="src/Utils.cs" />
|
||||
</Folder>
|
||||
<Folder Name="/0.Root/Source/ImplicitUsings/">
|
||||
<File Path="src/ImplicitUsings.ArchiSteamFarm.cs" />
|
||||
<File Path="src/ImplicitUsings.AspNetCore.cs" />
|
||||
<File Path="src/ImplicitUsings.AutoMapper.cs" />
|
||||
<File Path="src/ImplicitUsings.Avalonia.cs" />
|
||||
<File Path="src/ImplicitUsings.BCL.cs" />
|
||||
<File Path="src/ImplicitUsings.Common.cs" />
|
||||
<File Path="src/ImplicitUsings.Controllers.cs" />
|
||||
<File Path="src/ImplicitUsings.Data.cs" />
|
||||
<File Path="src/ImplicitUsings.EntityFrameworkCore.cs" />
|
||||
<File Path="src/ImplicitUsings.Identity.cs" />
|
||||
<File Path="src/ImplicitUsings.Jobs.cs" />
|
||||
<File Path="src/ImplicitUsings.JsonProperty.cs" />
|
||||
<File Path="src/ImplicitUsings.JWT.cs" />
|
||||
<File Path="src/ImplicitUsings.MessagePack.cs" />
|
||||
<File Path="src/ImplicitUsings.Models.cs" />
|
||||
<File Path="src/ImplicitUsings.MSEX.cs" />
|
||||
<File Path="src/ImplicitUsings.Nito.cs" />
|
||||
<File Path="src/ImplicitUsings.NLog.cs" />
|
||||
<File Path="src/ImplicitUsings.Plugins.cs" />
|
||||
<File Path="src/ImplicitUsings.Quartz.cs" />
|
||||
<File Path="src/ImplicitUsings.ReactiveUI.cs" />
|
||||
<File Path="src/ImplicitUsings.Repositories.cs" />
|
||||
<File Path="src/ImplicitUsings.Services.cs" />
|
||||
<File Path="src/ImplicitUsings.Settings.cs" />
|
||||
<File Path="src/ImplicitUsings.SQLite.cs" />
|
||||
<File Path="src/ImplicitUsings.Steam.cs" />
|
||||
<File Path="src/ImplicitUsings.UI.cs" />
|
||||
<File Path="src/ImplicitUsings.UI.ViewModels.cs" />
|
||||
<File Path="src/ImplicitUsings.UI.Views.cs" />
|
||||
<File Path="src/ImplicitUsings.UnitTest.cs" />
|
||||
<File Path="src/ImplicitUsings.WTTS.cs" />
|
||||
</Folder>
|
||||
<Folder Name="/0.Root/TFM/">
|
||||
<File Path="src/TFM_NETX.props" />
|
||||
<File Path="src/TFM_NETX_SINGLE.props" />
|
||||
<File Path="src/TFM_NETX_WINDOWS.props" />
|
||||
<File Path="src/TFM_NETX_WITH_ALL.props" />
|
||||
<File Path="src/TFM_NETX_WITH_DESKTOP.props" />
|
||||
<File Path="src/TFM_NETX_WITH_WINDOWS.props" />
|
||||
</Folder>
|
||||
<Folder Name="/1.AppHost/">
|
||||
<Project Path="src/BD.WTTS.Client.AppHost.Bridge/Steam++.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.AppHost/BD.WTTS.Client.AppHost.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/2.Reference/" />
|
||||
<Folder Name="/2.Reference/AppCenter/">
|
||||
<Project Path="ref/appcenter-sdk-dotnet/SDK/AppCenter/BD.AppCenter.Any/BD.AppCenter.Any.csproj" />
|
||||
<Project Path="ref/appcenter-sdk-dotnet/SDK/AppCenterAnalytics/BD.AppCenter.Analytics.Any/BD.AppCenter.Analytics.Any.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/2.Reference/Avalonia/">
|
||||
<Project Path="ref/Avalonia.Image2/Avalonia.Gif/Avalonia.Gif.csproj" />
|
||||
<Project Path="ref/Avalonia.Image2/LibAPNG/LibAPNG.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/2.Reference/Common/">
|
||||
<Project Path="ref/Common/src/BD.Common.Area/BD.Common.Area.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Essentials.Maui.Runtime/BD.Common.Essentials.Maui.Runtime.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Essentials.Preferences.SQLite/BD.Common.Essentials.Preferences.SQLite.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Essentials.Primitives/BD.Common.Essentials.Primitives.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Essentials.Utils/BD.Common.Essentials.Utils.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Essentials/BD.Common.Essentials.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Mvvm.ReactiveUI/BD.Common.Mvvm.ReactiveUI.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Mvvm/BD.Common.Mvvm.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Pinyin.TinyPinyin/BD.Common.Pinyin.TinyPinyin.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Pinyin/BD.Common.Pinyin.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Primitives/BD.Common.Primitives.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Repositories.SQLitePCL/BD.Common.Repositories.SQLitePCL.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Security/BD.Common.Security.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common.Settings/BD.Common.Settings.csproj" />
|
||||
<Project Path="ref/Common/src/BD.Common/BD.Common.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/2.Reference/Ipc/">
|
||||
<Project Path="ref/dotnetCampus.Ipc/src/dotnetCampus.Ipc.Analyzers/dotnetCampus.Ipc.Analyzers.csproj" />
|
||||
<Project Path="ref/dotnetCampus.Ipc/src/dotnetCampus.Ipc/dotnetCampus.Ipc.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/2.Reference/Steam/">
|
||||
<Project Path="ref/Facepunch.Steamworks/Facepunch.Steamworks/Facepunch.Steamworks.Posix.csproj" />
|
||||
<Project Path="ref/Facepunch.Steamworks/Facepunch.Steamworks/Facepunch.Steamworks.Win64.csproj" />
|
||||
<Project Path="ref/Gameloop.Vdf/Gameloop.Vdf/Gameloop.Vdf.csproj" />
|
||||
<Project Path="ref/Steam4NET/Steam4NET/Steam4NET.csproj" />
|
||||
<Project Path="ref/SteamClient/ref/ValveKeyValue/ValveKeyValue/ValveKeyValue/ValveKeyValue.csproj" />
|
||||
<Project Path="ref/SteamClient/src/BD.SteamClient.Models.Protobuf/BD.SteamClient.Models.Protobuf.csproj" />
|
||||
<Project Path="ref/SteamClient/src/BD.SteamClient/BD.SteamClient.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/2.Reference/WinAuth/">
|
||||
<Project Path="ref/WinAuth/src/WinAuth/WinAuth.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/3.Test/">
|
||||
<Project Path="src/BD.WTTS.UnitTest/BD.WTTS.UnitTest.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/4.Shared/">
|
||||
<Project Path="src/BD.Avalonia8.Image2.Compat/BD.Avalonia8.Image2.Compat.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Avalonia/BD.WTTS.Client.Avalonia.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.IPC/BD.WTTS.Client.IPC.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client/BD.WTTS.Client.csproj" />
|
||||
<Project Path="src/OSShuttingDownHelper/OSShuttingDownHelper.shproj" />
|
||||
</Folder>
|
||||
<Folder Name="/4.Shared/Avalonia.Ref/">
|
||||
<Project Path="src/Avalonia.Base.Internals/Avalonia.Base.Internals.csproj" />
|
||||
<Project Path="src/Avalonia.Base/Avalonia.Base.csproj" />
|
||||
<Project Path="src/Avalonia.Controls.Internals/Avalonia.Controls.Internals.csproj" />
|
||||
<Project Path="src/Avalonia.Desktop/Avalonia.Desktop.csproj" />
|
||||
<Project Path="src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj" />
|
||||
<Project Path="src/Avalonia.Native/Avalonia.Native.csproj" />
|
||||
<Project Path="src/Avalonia.Skia.Internals/Avalonia.Skia.Internals.csproj" />
|
||||
<Project Path="src/Avalonia.WebView2/Avalonia.WebView2.csproj" />
|
||||
<Project Path="src/Avalonia.Win32/Avalonia.Win32.csproj" />
|
||||
<Project Path="src/Avalonia.X11/Avalonia.X11.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/4.Shared/ClientSDK/">
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/ref/WTTS.Public/src/BD.WTTS.MicroServices.Primitives.Resources/BD.WTTS.MicroServices.Primitives.Resources.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/ref/WTTS.Public/src/BD.WTTS.Primitives.Resources/BD.WTTS.Primitives.Resources.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.MicroServices.ClientSDK/BD.WTTS.MicroServices.ClientSDK.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.MicroServices.Primitives.Models/BD.WTTS.MicroServices.Primitives.Models.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.MicroServices.Primitives.ViewModels/BD.WTTS.MicroServices.Primitives.ViewModels.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.MicroServices.Primitives/BD.WTTS.MicroServices.Primitives.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.Primitives.Models/BD.WTTS.Primitives.Models.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.Primitives.ViewModels/BD.WTTS.Primitives.ViewModels.csproj" />
|
||||
<Project Path="ref/WTTS.MicroServices.ClientSDK/src/BD.WTTS.Primitives/BD.WTTS.Primitives.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/5.Plugins/">
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.Accelerator/BD.WTTS.Client.Plugins.Accelerator.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.Authenticator/BD.WTTS.Client.Plugins.Authenticator.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.GameAccount/BD.WTTS.Client.Plugins.GameAccount.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.GameList/BD.WTTS.Client.Plugins.GameList.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.GameTools/BD.WTTS.Client.Plugins.GameTools.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Plugins.SteamIdleCard/BD.WTTS.Client.Plugins.SteamIdleCard.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/6.Tools/">
|
||||
<Project Path="ref/Common/src/BD.Common.Settings.V4.SourceGenerator.Tools/BD.Common.Settings.V4.SourceGenerator.Tools.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Avalonia.Designer.HostApp/BD.WTTS.Client.Avalonia.Designer.HostApp.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Tools.HostsTest/BD.WTTS.Client.Tools.HostsTest.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Tools.OpenSourceLibraryList/BD.WTTS.Client.Tools.OpenSourceLibraryList.csproj" />
|
||||
<Project Path="src/BD.WTTS.Client.Tools.Publish/BD.WTTS.Client.Tools.Publish.csproj" />
|
||||
</Folder>
|
||||
<Project Path="src/BD.WTTS.Client.Avalonia.App/BD.WTTS.Client.Avalonia.App.csproj" />
|
||||
</Solution>
|
||||
@@ -163,7 +163,7 @@ Install_zenity
|
||||
Install_jq
|
||||
certutil_Init
|
||||
Kill_Process
|
||||
|
||||
dotnet_path="$base_path/dotnet"
|
||||
dotnet_exec="$dotnet_path/dotnet/dotnet"
|
||||
if [ -x "$dotnet_exec" ]; then
|
||||
echo "文件具有执行权限。"
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
default_base_path="$HOME/WattToolkit"
|
||||
base_path="$default_base_path"
|
||||
|
||||
# 检查是否以root身份执行
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
echo "此脚本不能以root身份执行。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 循环直到用户输入有效路径或直接回车
|
||||
while true; do
|
||||
# 使用 zenity 提示用户选择安装路径或使用默认路径
|
||||
@@ -41,7 +47,45 @@ base_url="https://api.steampp.net"
|
||||
architecture=1
|
||||
app_name="Watt Toolkit"
|
||||
PROCESS_NAMES=("$exec_name" "$app_name")
|
||||
export LC_ALL=en_US.UTF-8
|
||||
Check_LC_Code() {
|
||||
# 检查当前 LANG 环境变量
|
||||
current_lang="${LC_ALL:-$LANG}"
|
||||
echo "当前语言环境: $current_lang"
|
||||
|
||||
# 检查是否为 C 或 C.UTF-8
|
||||
if [ "$current_lang" = "C" ] || [ "$current_lang" = "C.UTF-8" ]; then
|
||||
echo "当前语言环境是 C 或 C.UTF-8,需要修改。"
|
||||
|
||||
# 列出系统支持的语言环境
|
||||
supported_locales=$(locale -a)
|
||||
if [ -z "$supported_locales" ]; then
|
||||
echo "未能获取到支持的语言环境列表。请检查系统配置。"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 遍历支持的语言环境列表,找到第一个不是 C 或 C.UTF-8 的项
|
||||
first_non_c_locale=""
|
||||
for locale in $supported_locales; do
|
||||
if [ "$locale" != "C" ] && [ "$locale" != "C.UTF-8" ]; then
|
||||
first_non_c_locale="$locale"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# 检查是否找到了非 C/C.UTF-8 的语言环境
|
||||
if [ -n "$first_non_c_locale" ]; then
|
||||
echo "修改语言环境为支持列表中的第一个非 C/C.UTF-8 项:$first_non_c_locale"
|
||||
export LC_ALL="$first_non_c_locale"
|
||||
echo "语言环境已修改为 $first_non_c_locale。"
|
||||
else
|
||||
echo "未能找到非 C/C.UTF-8 的语言环境。请检查系统配置。"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo "当前语言环境不是 C 或 C.UTF-8,无需修改。"
|
||||
fi
|
||||
}
|
||||
Check_LC_Code
|
||||
Install_certutil() {
|
||||
# 判断发行版类型
|
||||
if command -v certutil &>/dev/null; then
|
||||
@@ -360,34 +404,44 @@ Kill_Process
|
||||
Decompression
|
||||
# xdg-icon-resource install "$base_path/Icons/Watt-Toolkit.png" --size 128 Watt-Toolkit
|
||||
InitDesktop() {
|
||||
# 检查XDG_DESKTOP_DIR环境变量,如果未设置则使用默认值
|
||||
XDG_DESKTOP_DIR="${XDG_DESKTOP_DIR:-$HOME/Desktop}"
|
||||
|
||||
while true; do
|
||||
# 使用 zenity 提示用户选择安装路径或使用默认路径
|
||||
choice=$(zenity --list --radiolist --title="请选择要添加到的位置" --column="选择" --column="路径" TRUE "$HOME/.local/share/applications/" FALSE "$HOME/Desktop")
|
||||
choice=$(zenity --list --radiolist --title="请选择要添加到的位置" \
|
||||
--column="选择" --column="路径" \
|
||||
TRUE "$XDG_DESKTOP_DIR" \
|
||||
FALSE "$HOME/.local/share/applications/")
|
||||
|
||||
# 检查用户输入
|
||||
if [ "$choice" == "$HOME/.local/share/applications/" ]; then
|
||||
target_dir="$HOME/.local/share/applications/"
|
||||
break
|
||||
elif [ "$choice" == "$HOME/Desktop" ]; then
|
||||
target_dir="$HOME/Desktop/"
|
||||
elif [ "$choice" == "$XDG_DESKTOP_DIR" ]; then
|
||||
target_dir="$XDG_DESKTOP_DIR"
|
||||
break
|
||||
else
|
||||
echo "无效选项,请输入 1 或 2。"
|
||||
# 无效选项时给出提示,并继续循环
|
||||
zenity --info --text="无效选项,请重新选择。"
|
||||
fi
|
||||
done
|
||||
#添加桌面文件
|
||||
|
||||
# 添加桌面文件
|
||||
rm -rf "$target_dir/Watt Toolkit.desktop" 2>/dev/null
|
||||
echo "#!/usr/bin/env xdg-open
|
||||
cat <<EOT > "$target_dir/Watt Toolkit.desktop"
|
||||
[Desktop Entry]
|
||||
Name=Watt Toolkit
|
||||
Exec=$base_path/$exec_name.sh
|
||||
Icon=$base_path/Icons/Watt-Toolkit.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=false" >"$target_dir/Watt Toolkit.desktop"
|
||||
StartupNotify=false
|
||||
EOT
|
||||
chmod +x "$target_dir/Watt Toolkit.desktop"
|
||||
|
||||
}
|
||||
|
||||
|
||||
InitDesktop
|
||||
# update-desktop-database ~/.local/share/applications
|
||||
#运行程序
|
||||
|
||||
@@ -973,7 +973,7 @@
|
||||
},
|
||||
{
|
||||
"TypeName": "string",
|
||||
"PropertyName": "CustomDohAddres",
|
||||
"PropertyName": "CustomDohAddres2",
|
||||
"DefaultValue": "null",
|
||||
"DefaultValueIsConst": true,
|
||||
"Summary": "自定义 DNS over HTTPS 地址",
|
||||
@@ -988,6 +988,24 @@
|
||||
"Summary": "加速页面 Tab 选项卡选中下标",
|
||||
"IsRegionOrEndregion": null,
|
||||
"IsValueType": null
|
||||
},
|
||||
{
|
||||
"TypeName": "bool",
|
||||
"PropertyName": "AutoShowWattAcceleratorWindow",
|
||||
"DefaultValue": "true",
|
||||
"DefaultValueIsConst": true,
|
||||
"Summary": "加速后自动唤起 Watt 加速器界面",
|
||||
"IsRegionOrEndregion": null,
|
||||
"IsValueType": null
|
||||
},
|
||||
{
|
||||
"TypeName": "bool",
|
||||
"PropertyName": "ProxyBeforeDNSCheck",
|
||||
"DefaultValue": "true",
|
||||
"DefaultValueIsConst": true,
|
||||
"Summary": "加速前进行 DNS 可用性检查",
|
||||
"IsRegionOrEndregion": null,
|
||||
"IsValueType": null
|
||||
}
|
||||
],
|
||||
"Usings": ""
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
# Steam++ v3.X Program File Structure for Windows
|
||||
|
||||
- dotnet 共享运行时,删除后将使用已安装的运行时,此目参考 ```C:\Program Files\dotnet```,可自行升级行库小版本号,二进制兼容
|
||||
- host
|
||||
- fxr
|
||||
- x.y.z
|
||||
- hostfxr.dll
|
||||
- shared
|
||||
- Microsoft.AspNetCore.App
|
||||
- x.y.z
|
||||
- Microsoft.NETCore.App
|
||||
- x.y.z
|
||||
- native
|
||||
- win-x64
|
||||
- 7z.dll
|
||||
- av_libglesv2.dll
|
||||
- e_sqlite3.dll
|
||||
- libHarfBuzzSharp.dll
|
||||
- libSkiaSharp.dll
|
||||
- WebView2Loader.dll
|
||||
- WinDivert.dll
|
||||
- WinDivert64.sys
|
||||
- assemblies 主模块程序集
|
||||
- modules 可选模块
|
||||
- ~~Update 自更新模块,删除该文件夹后禁用更新~~
|
||||
- Steam++.Update.exe 更新程序,CDN 分发更包,下载与解压在主程序中,此进程仅退出主程执行覆盖操作
|
||||
- Accelerator 网络加速
|
||||
- Steam++.Accelerator.exe 控制台子服务进,使用匿名管道与主进程通信,无参数或指定某参数(待定)启动时可读取配置文件启动加速,可全独立运行,ASP.NET Core Web API 项目,支持 Docker
|
||||
- Steam++.Plugins.Accelerator.dll 插件程集
|
||||
- AccountSwitch 账号切换
|
||||
- Steam++.Plugins.AccountSwitch.dll
|
||||
- ~~ArchiSteamFarm~~
|
||||
- Steam++.ArchiSteamFarm.exe
|
||||
- Steam++.Plugins.ArchiSteamFarm.dll
|
||||
- GameList 库存游戏
|
||||
- Steam++.Plugins.GameList.dll
|
||||
- LocalAuth 本地令牌
|
||||
- Steam++.Plugins.LocalAuth.dll
|
||||
- GameTools 游戏工具
|
||||
- Steam++.Plugins.GameTools.dll
|
||||
- Steam++.exe (主启动程序).NET Framework 二进制主程序
|
||||
- Steam++.exe.config 使用该配置文件以允许在 .NET Framework 3.5 ~ 4.8.1 中任意版本中兼容运行(从 Windows 7 ~ 11 中所有系统自带运行时)
|
||||
- ~~Steam++.Uninstall.exe 卸载程序(WinForms?AOT?)~~
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "11.0.0",
|
||||
"rollForward": "latestMajor",
|
||||
"allowPrerelease": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<CheckEolWorkloads>false</CheckEolWorkloads>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,11 @@
|
||||
static void WinDivert()
|
||||
{
|
||||
var dllWinDivert = Path.Combine(ProjectUtils.ProjPath, "ref", "WinDivert.dll");
|
||||
var sysWinDivert64 = Path.Combine(ProjectUtils.ProjPath, "ref", "WinDivert64.sys");
|
||||
|
||||
byte[][] data = [File.ReadAllBytes(dllWinDivert), File.ReadAllBytes(sysWinDivert64)];
|
||||
var bytes = MemoryPackSerializer.Serialize(data);
|
||||
bytes.AsSpan().Reverse();
|
||||
|
||||
File.WriteAllBytes(Path.Combine(ProjectUtils.ProjPath, "ref", "WinDivert.mpo"), bytes);
|
||||
}
|
||||
@@ -5,29 +5,33 @@ namespace BD.WTTS;
|
||||
/// </summary>
|
||||
public static partial class AssemblyInfo
|
||||
{
|
||||
const string Version2 = "3.0";
|
||||
const string Version2 = "3.1";
|
||||
|
||||
/// <summary>
|
||||
/// 语义化应用程序版本
|
||||
/// https://semver.org/lang/zh-CN/
|
||||
/// </summary>
|
||||
public const string Version = $"{Version2}.0";
|
||||
public const string Version = $"{Version2}.{VersionBuild}";
|
||||
|
||||
const string VersionBuild = "1"; // 1~99
|
||||
|
||||
const string VersionBuild2 = $"{VersionBuild}0"; // VersionBuild为1位时,补0,两位
|
||||
|
||||
/// <summary>
|
||||
/// 预览版本号,范围 1~9,只增不减
|
||||
/// </summary>
|
||||
const string ver_for_preview = "8";
|
||||
const string ver_for_preview = "1";
|
||||
|
||||
/// <summary>
|
||||
/// RC 版本号,范围 0~9,只增不减
|
||||
/// </summary>
|
||||
const string ver_for_rc = "8";
|
||||
const string ver_for_rc = "0";
|
||||
|
||||
public const string FileVersion = $"{Version2}.{ver_for_rc}0{ver_for_preview}.0";
|
||||
public const string FileVersion = $"{Version2}.{VersionBuild2}{ver_for_rc}0{ver_for_preview}.0"; // msix 需要保持第四位为0
|
||||
|
||||
//public const string InformationalVersion = Version;
|
||||
public const string InformationalVersion = Version;
|
||||
//public const string InformationalVersion = $"{Version}-preview.{ver_for_preview}";
|
||||
public const string InformationalVersion = $"{Version}-rc.{ver_for_rc}";
|
||||
//public const string InformationalVersion = $"{Version}-rc.{ver_for_rc}";
|
||||
|
||||
#if !APP_HOST
|
||||
/// <summary>
|
||||
@@ -63,6 +67,8 @@ public static partial class AssemblyInfo
|
||||
/// </summary>
|
||||
public const string Product = Trademark;
|
||||
|
||||
public const string Product_APP_REVERSE_PROXY = $"{Product} - Accelerator and script module sub-process";
|
||||
|
||||
/// <summary>
|
||||
/// 与该应用程序关联的公司名称。
|
||||
/// </summary>
|
||||
@@ -146,4 +152,37 @@ false
|
||||
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// 验证程序集是否为合法程序集
|
||||
/// </summary>
|
||||
/// <param name="assemblyPath"></param>
|
||||
/// <returns></returns>
|
||||
public static bool ValidateAssembly(string assemblyPath)
|
||||
{
|
||||
var fvi = FileVersionInfo.GetVersionInfo(assemblyPath);
|
||||
if (fvi.Comments != Description)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (fvi.CompanyName != Company)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (fvi.LegalCopyright != Copyright)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (fvi.LegalTrademarks != Trademark)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (fvi.ProductName != Product && fvi.ProductName != Product_APP_REVERSE_PROXY)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: Digital signature verification
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,7 +27,7 @@ using AssemblyInfo = BD.WTTS.AssemblyInfo;
|
||||
[assembly: AssemblyTrademark(AssemblyInfo.Trademark)]
|
||||
[assembly: AssemblyDescription(AssemblyInfo.Description)]
|
||||
#if APP_REVERSE_PROXY
|
||||
[assembly: AssemblyProduct($"{AssemblyInfo.Product} - Accelerator and script module sub-process")]
|
||||
[assembly: AssemblyProduct(AssemblyInfo.Product_APP_REVERSE_PROXY)]
|
||||
#else
|
||||
[assembly: AssemblyProduct(AssemblyInfo.Product)]
|
||||
#endif
|
||||
|
||||
@@ -23,4 +23,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -18,4 +18,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -21,4 +21,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace Avalonia.Controls;
|
||||
public static class AvaloniaControlsInternalsWindowExtensions
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static void CloseCore_(this Window window, WindowCloseReason reason, bool isProgrammatic) => window.CloseCore(reason, isProgrammatic);
|
||||
public static void CloseCore_(this Window window, WindowCloseReason reason, bool isProgrammatic, bool ignoreCancel) => window.CloseCore(reason, isProgrammatic, ignoreCancel);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static void HandleResized_(this Window window, Size clientSize, WindowResizeReason reason) => window.HandleResized(clientSize, reason);
|
||||
|
||||
@@ -19,4 +19,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -23,4 +23,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -7,6 +7,7 @@
|
||||
<DelaySign>false</DelaySign>
|
||||
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
|
||||
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
|
||||
<AvaloniaAccessUnstablePrivateApis>true</AvaloniaAccessUnstablePrivateApis>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -25,4 +26,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -174,7 +174,7 @@ namespace Avalonia.Controls.ApplicationLifetimes
|
||||
{
|
||||
if (w.Owner is null)
|
||||
{
|
||||
w.CloseCore_(WindowCloseReason.ApplicationShutdown, isProgrammatic);
|
||||
w.CloseCore_(WindowCloseReason.ApplicationShutdown, isProgrammatic, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,4 +23,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -23,4 +23,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -23,4 +23,8 @@
|
||||
|
||||
<Import Project="..\TFM_NETX.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0;net11.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net$(DotNet_Version)</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Description>提供动图控件,支持 Gif/Apng</Description>
|
||||
<AssemblyName>BD.Avalonia8.Image2</AssemblyName>
|
||||
<RootNamespace>BD.Avalonia8.Image2</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<GenerateAssemblyFileVersionAttribute>true</GenerateAssemblyFileVersionAttribute>
|
||||
<GenerateAssemblyInformationalVersionAttribute>true</GenerateAssemblyInformationalVersionAttribute>
|
||||
<GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Avalonia -->
|
||||
<PropertyGroup>
|
||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(MSBuildThisFileDirectory)..\..\ref\Avalonia8\src\Sdk\Links\LibAPNG.props" />
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="..\ImplicitUsings.Common.cs" />
|
||||
<Compile Remove="..\AssemblyInfo.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)..\..\ref\Avalonia8\src\BD.Avalonia8.Image2\**\*.cs">
|
||||
<LinkBase></LinkBase>
|
||||
</Compile>
|
||||
<Compile Remove="$(MSBuildThisFileDirectory)..\..\ref\Avalonia8\src\BD.Avalonia8.Image2\bin\**\*.cs" />
|
||||
<Compile Remove="$(MSBuildThisFileDirectory)..\..\ref\Avalonia8\src\BD.Avalonia8.Image2\obj\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Avalonia" />
|
||||
<PackageReference Include="ReactiveUI" />
|
||||
<PackageReference Include="ReactiveUI.Fody" />
|
||||
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\ref\Common\src\BD.Common.Mvvm\BD.Common.Mvvm.csproj" />
|
||||
<ProjectReference Include="..\..\ref\Common\src\BD.Common\BD.Common.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,41 @@
|
||||
// Common\src\BD.Common8.Bcl\Extensions\StreamExtensions.cs
|
||||
|
||||
namespace System.Extensions;
|
||||
|
||||
/// <summary>
|
||||
/// 提供对 <see cref="Stream"/> 类型的扩展函数
|
||||
/// </summary>
|
||||
internal static partial class StreamExtensions
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static int ReadInt32(this Stream stream)
|
||||
{
|
||||
Span<byte> data = stackalloc byte[sizeof(int)];
|
||||
stream.ReadExactly(data);
|
||||
return BitConverter.ToInt32(data);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static ushort ReadUInt16(this Stream stream)
|
||||
{
|
||||
Span<byte> data = stackalloc byte[sizeof(ushort)];
|
||||
stream.ReadExactly(data);
|
||||
return BitConverter.ToUInt16(data);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static uint ReadUInt32(this Stream stream)
|
||||
{
|
||||
Span<byte> data = stackalloc byte[sizeof(uint)];
|
||||
stream.ReadExactly(data);
|
||||
return BitConverter.ToUInt32(data);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static void WriteUInt32(this Stream stream, uint value)
|
||||
{
|
||||
Span<byte> data = stackalloc byte[sizeof(uint)];
|
||||
BitConverter.TryWriteBytes(data, value);
|
||||
stream.Write(data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<ReactiveUI />
|
||||
</Weavers>
|
||||
@@ -0,0 +1,4 @@
|
||||
// steampp
|
||||
using Avalonia.Metadata;
|
||||
|
||||
[assembly: XmlnsDefinition("https://steampp.net/ui", "BD.Avalonia8.Image2")]
|
||||
@@ -0,0 +1,24 @@
|
||||
// <auto-generated/>
|
||||
global using Avalonia;
|
||||
global using Avalonia.Animation;
|
||||
global using Avalonia.Controls;
|
||||
global using Avalonia.Logging;
|
||||
global using Avalonia.Media;
|
||||
global using Avalonia.Media.Imaging;
|
||||
global using Avalonia.Metadata;
|
||||
global using Avalonia.Platform;
|
||||
global using Avalonia.Rendering.Composition;
|
||||
global using Avalonia.Threading;
|
||||
global using Avalonia.VisualTree;
|
||||
global using BD.Avalonia8.Image2;
|
||||
global using BD.Avalonia8.Image2.Decoding;
|
||||
global using System.Extensions;
|
||||
global using System.Numerics;
|
||||
global using System.Reactive.Linq;
|
||||
global using AvaBitmap = Avalonia.Media.Imaging.Bitmap;
|
||||
global using AvaPixelFormat = Avalonia.Platform.PixelFormat;
|
||||
global using AvaPoint = Avalonia.Point;
|
||||
global using AvaRect = Avalonia.Rect;
|
||||
global using AvaSize = Avalonia.Size;
|
||||
global using AvaVector = Avalonia.Vector;
|
||||
global using CommonImageSource = BD.Common.UI.ViewModels.ImageSource.ClipStream;
|
||||
@@ -0,0 +1,5 @@
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE0005:Using 指令是不需要的。", Justification = "<挂起>")]
|
||||
|
Before Width: | Height: | Size: 190 B |
|
Before Width: | Height: | Size: 218 B |
|
Before Width: | Height: | Size: 231 B |
|
Before Width: | Height: | Size: 279 B |
|
Before Width: | Height: | Size: 444 B |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 666 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 666 B |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 484 B |
|
Before Width: | Height: | Size: 787 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |