Compare commits

...
430 Commits
Author SHA1 Message Date
RMBGAME 2e136e5a3c fix Notification HasRead 2022-07-23 15:51:56 +08:00
RMBGAME 56bc907ec6 fix #1705 2022-07-23 15:21:12 +08:00
Aigio Liu bcd00d565f fix Android IWindowManager ShowAuth/AuthTrade 2022-07-23 14:24:25 +08:00
RMBGAME 2682b548ae Misc 2022-07-23 14:23:40 +08:00
RMBGAME 4ccad101be fix Install & Remove Certificate 2022-07-23 14:19:39 +08:00
Aigio Liu ac63f3cead fix Log 2022-07-23 12:06:44 +08:00
RMBGAME 709979c597 Misc 2022-07-23 11:03:17 +08:00
RMBGAME 4435efc1f0 Misc 2022-07-23 11:02:22 +08:00
Aigio Liu 79c52389c1 fix LoadRootCertificate 2022-07-23 10:00:43 +08:00
Aigio Liu b8fa4b6e0e fix RemovebinPath & WebView2.UserDataFolder 2022-07-23 09:40:01 +08:00
Aigio Liu 8e28762857 CI 中保留原名(Steam++) 2022-07-22 20:46:02 +08:00
Aigio Liu 9311f2bad8 fix pubtool 2022-07-22 18:47:54 +08:00
Aigio Liu 93667c4686 v2.8.0 rev.0 2022-07-22 17:39:36 +08:00
RMBGAME c9873d660a fix Bugs 2022-07-22 12:56:24 +08:00
dependabot[bot] 7ee9cc6651 Bump DynamicData from 7.9.5 to 7.9.7 (#1697)
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.9.5 to 7.9.7.
- [Release notes](https://github.com/reactiveui/DynamicData/releases)
- [Changelog](https://github.com/reactivemarbles/DynamicData/blob/main/ReleaseNotes.md)
- [Commits](https://github.com/reactiveui/DynamicData/compare/7.9.5...7.9.7)

---
updated-dependencies:
- dependency-name: DynamicData
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-22 12:50:19 +08:00
dependabot[bot] 1a2f495ce9 Bump Microsoft.WindowsAppSDK from 1.1.2 to 1.1.3 (#1700)
Bumps [Microsoft.WindowsAppSDK](https://github.com/microsoft/windowsappsdk) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/microsoft/windowsappsdk/releases)
- [Commits](https://github.com/microsoft/windowsappsdk/compare/v1.1.2...v1.1.3)

---
updated-dependencies:
- dependency-name: Microsoft.WindowsAppSDK
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-22 12:50:10 +08:00
Aigio Liu 45764fff62 translate 2022-07-22 12:39:09 +08:00
Aigio Liu b6bb9c0237 Misc 2022-07-22 11:58:26 +08:00
Aigio Liu 1df8039650 fix pubtool 2022-07-22 08:21:05 +08:00
Aigio Liu ad67ca2350 pub tool workingset 2022-07-21 23:10:41 +08:00
Aigio Liu 5e1dc75485 fix pub tool 2022-07-21 22:17:34 +08:00
Aigio Liu bfc7e8532f fix pub tool 2022-07-21 21:46:03 +08:00
Aigio Liu 55f9917c51 fix 2022-07-21 21:42:04 +08:00
Aigio Liu 05e6750892 fix 2022-07-21 19:16:09 +08:00
Aigio Liu de9ccc5db7 fix SevenZip.SevenZipException: There is not enough memory (RAM). (0x8007000E: E_OUTOFMEMORY) 2022-07-21 19:14:54 +08:00
Aigio Liu 5e5c5d8d75 Add win-x86 2022-07-21 18:24:49 +08:00
Aigio Liu 81b6ab63d9 fix ASF Version 2022-07-21 18:21:25 +08:00
RMBGAME cdee33f44c fix CI 2022-07-21 17:49:57 +08:00
RMBGAME a93c4df1ad Misc 2022-07-21 17:32:41 +08:00
RMBGAME f1e5b630e7 Misc 2022-07-21 17:22:15 +08:00
RMBGAME 57bc58dea2 Fix 2022-07-21 16:40:13 +08:00
RMBGAME 79b66c3b35 Misc 2022-07-21 10:21:39 +08:00
Aigio Liu 3f3c308156 fix CI 2022-07-21 09:02:23 +08:00
RMBGAME 7f7f4c31b1 Bump 2022-07-21 08:49:29 +08:00
Aigio Liu cf981e9d3d fix IsProgramStartupRunProxy 2022-07-20 21:10:40 +08:00
Aigio Liu 778f9072a9 Command 启用代理服务,静默启动(不弹窗口)
-clt proxy -on
2022-07-20 19:37:16 +08:00
ff m 855c8c295a add Referrer 2022-07-20 18:35:44 +08:00
ff m 6148cc1c79 Add SharedAppleEventManager Temp 2022-07-20 18:35:44 +08:00
RMBGAME 83690efd5a Fix 2022-07-20 18:09:26 +08:00
RMBGAME dc487ca09e NotificationService 2022-07-20 18:03:24 +08:00
Aigio Liu 9119b68b6d proxyCommand Impl 2022-07-20 17:51:59 +08:00
Aigio Liu 1b59208adf Impl AvaloniaFilePickerPlatformService IFilePickerFileType 2022-07-20 17:14:35 +08:00
RMBGAME b9653f23d0 Fix 2022-07-20 16:56:52 +08:00
RMBGAME 98b9257726 Fix 2022-07-20 16:36:08 +08:00
RMBGAME a5dc378056 Fix 2022-07-20 16:13:21 +08:00
RMBGAME bf4df45ba0 通知功能完善 2022-07-20 15:45:04 +08:00
RMBGAME 29e1e79816 Misc 2022-07-20 15:44:55 +08:00
dependabot[bot] 7d956f5a86 Bump LiveChartsCore.SkiaSharpView.Avalonia (#1671)
Bumps [LiveChartsCore.SkiaSharpView.Avalonia](https://github.com/beto-rodriguez/LiveCharts2) from 2.0.0-beta.300 to 2.0.0-beta.330.
- [Release notes](https://github.com/beto-rodriguez/LiveCharts2/releases)
- [Commits](https://github.com/beto-rodriguez/LiveCharts2/commits)

---
updated-dependencies:
- dependency-name: LiveChartsCore.SkiaSharpView.Avalonia
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 08:30:56 +08:00
dependabot[bot]andAigio L bd0eeea8dc Bump Swashbuckle.AspNetCore.Newtonsoft from 6.3.2 to 6.4.0 (#1680)
Bumps [Swashbuckle.AspNetCore.Newtonsoft](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 6.3.2 to 6.4.0.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v6.3.2...v6.4.0)

---
updated-dependencies:
- dependency-name: Swashbuckle.AspNetCore.Newtonsoft
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-07-20 08:30:22 +08:00
dependabot[bot]andAigio L 2e18ae5bfb Bump ReactiveUI from 18.2.9 to 18.3.1 (#1679)
Bumps [ReactiveUI](https://github.com/reactiveui/reactiveui) from 18.2.9 to 18.3.1.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.2.9...18.3.1)

---
updated-dependencies:
- dependency-name: ReactiveUI
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-07-20 08:30:09 +08:00
dependabot[bot]andAigio L 92d87bf922 Bump ReactiveUI.XamForms from 18.2.9 to 18.3.1 (#1686)
Bumps [ReactiveUI.XamForms](https://github.com/reactiveui/reactiveui) from 18.2.9 to 18.3.1.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.2.9...18.3.1)

---
updated-dependencies:
- dependency-name: ReactiveUI.XamForms
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-07-20 08:29:14 +08:00
dependabot[bot]andAigio L f9384e6f3b Bump ReactiveUI.Maui from 18.2.9 to 18.3.1 (#1684)
Bumps [ReactiveUI.Maui](https://github.com/reactiveui/reactiveui) from 18.2.9 to 18.3.1.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.2.9...18.3.1)

---
updated-dependencies:
- dependency-name: ReactiveUI.Maui
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-07-20 08:28:25 +08:00
dependabot[bot] 6324ae6b43 Bump ReactiveUI.Fody from 18.2.9 to 18.3.1 (#1681)
Bumps [ReactiveUI.Fody](https://github.com/reactiveui/reactiveui) from 18.2.9 to 18.3.1.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.2.9...18.3.1)

---
updated-dependencies:
- dependency-name: ReactiveUI.Fody
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 08:27:56 +08:00
dependabot[bot] 054bde6a66 Bump ReactiveUI.AndroidX from 18.2.9 to 18.3.1 (#1682)
Bumps [ReactiveUI.AndroidX](https://github.com/reactiveui/reactiveui) from 18.2.9 to 18.3.1.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.2.9...18.3.1)

---
updated-dependencies:
- dependency-name: ReactiveUI.AndroidX
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 08:27:50 +08:00
dependabot[bot] 9ab7a84165 Bump Z.EntityFramework.Plus.EFCore from 6.14.2 to 6.14.3 (#1683)
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.14.2 to 6.14.3.
- [Release notes](https://github.com/zzzprojects/EntityFramework-Plus/releases)
- [Commits](https://github.com/zzzprojects/EntityFramework-Plus/compare/6.14.2...6.14.3)

---
updated-dependencies:
- dependency-name: Z.EntityFramework.Plus.EFCore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 08:27:45 +08:00
dependabot[bot]andAigio L b27818c3be Bump Swashbuckle.AspNetCore from 6.3.2 to 6.4.0 (#1678)
Bumps [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 6.3.2 to 6.4.0.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v6.3.2...v6.4.0)

---
updated-dependencies:
- dependency-name: Swashbuckle.AspNetCore
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-07-20 08:27:20 +08:00
dependabot[bot] eee8da0b3c Bump Swashbuckle.AspNetCore.Annotations from 6.3.2 to 6.4.0 (#1685)
Bumps [Swashbuckle.AspNetCore.Annotations](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 6.3.2 to 6.4.0.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v6.3.2...v6.4.0)

---
updated-dependencies:
- dependency-name: Swashbuckle.AspNetCore.Annotations
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 08:26:54 +08:00
dependabot[bot] d3ea00697b Bump NLog.Web.AspNetCore from 5.0.0 to 5.1.0 (#1675)
Bumps [NLog.Web.AspNetCore](https://github.com/NLog/NLog.Web) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/NLog/NLog.Web/releases)
- [Changelog](https://github.com/NLog/NLog.Web/blob/master/CHANGELOG.MD)
- [Commits](https://github.com/NLog/NLog.Web/compare/v5.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: NLog.Web.AspNetCore
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 08:26:38 +08:00
Aigio Liu 218d3ba532 fix NewVersionInfoTitle 2022-07-19 14:09:03 +08:00
RMBGAME 6d0da3244a Misc 2022-07-19 11:49:33 +08:00
RMBGAME 15a6eef4eb Fix 2022-07-19 09:25:16 +08:00
Aigio Liu 0c5c910df1 fix Publish Tool 2022-07-19 09:12:24 +08:00
RMBGAME 3f021ce1ce Fix Win7 Window 2022-07-19 07:58:56 +08:00
RMBGAME e634eb7080 Image Cache 2022-07-19 07:08:10 +08:00
RMBGAME ea712ab193 Notification 2022-07-19 05:34:25 +08:00
RMBGAME 6571e6398c Update Dependa Package 2022-07-19 05:34:18 +08:00
Aigio Liu 6a53613b49 Advertisement RequiredSecurityKey 2022-07-17 15:16:04 +08:00
Aigio Liu c3a9ecaffc Update ASF v5.2.7.7 & Misc 2022-07-16 19:08:00 +08:00
RMBGAME 19a55445c4 Fix Listen Ip 2022-07-16 15:20:46 +08:00
RMBGAME 1704c4837d Fix System Proxy 404 2022-07-16 14:41:31 +08:00
ff m 75ae9754ca fix 2022-07-16 13:50:31 +08:00
RMBGAME 777cec974a Fix Listen 2022-07-16 13:47:13 +08:00
ff m 8f1f04ddea fix重复安装证书
fix LinuxCer
2022-07-16 13:31:53 +08:00
RMBGAME a870bb69b3 Fix Mac Proxy 2022-07-16 13:02:34 +08:00
RMBGAME 3678a8ff3e Misc 2022-07-16 11:58:00 +08:00
Aigio Liu 96734e5bd1 SteamAuthTradeConfirmationAdapter.SeeDetails 2022-07-16 11:22:06 +08:00
Aigio Liu 158607da27 Android WebViewActivity 2022-07-15 22:56:49 +08:00
dependabot[bot] 64ec928fef Bump Splat from 14.3.4 to 14.4.1 (#1667)
Bumps [Splat](https://github.com/reactiveui/splat) from 14.3.4 to 14.4.1.
- [Release notes](https://github.com/reactiveui/splat/releases)
- [Commits](https://github.com/reactiveui/splat/compare/14.3.4...14.4.1)

---
updated-dependencies:
- dependency-name: Splat
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-15 16:49:34 +08:00
Aigio Liu 22633f2881 Add AD-Placeholder 2022-07-15 14:11:18 +08:00
Aigio Liu 99e924213c fix AuthTradeWindowViewModel.Process 2022-07-15 13:27:27 +08:00
RMBGAME 55abb91108 Fix 2022-07-15 13:25:33 +08:00
RMBGAME bf8c060bbb Misc 2022-07-15 13:09:51 +08:00
RMBGAME f2afcdbd0c screenshot 2022-07-15 03:46:18 +08:00
RMBGAME 175d857d2c Fix 2022-07-15 03:33:25 +08:00
Aigio Liu 53580be5a0 Update screenshot 2022-07-14 22:32:20 +08:00
RMBGAME d2ef06cc92 UserItem 2022-07-14 22:16:39 +08:00
RMBGAME acf8373a4d Misc 2022-07-14 21:04:23 +08:00
RMBGAME 7814832034 Advertise Settings 2022-07-14 21:04:17 +08:00
Aigio Liu 2b228e92b4 fix Essentials IFilePickerPlatformService & update screenshots 2022-07-14 20:50:23 +08:00
Aigio Liu 3d9e392b23 Update ScreenShots 2022-07-14 19:28:06 +08:00
Aigio Liu 37361e1abb Update Packages & remove Xamarin.Legacy.Sdk 2022-07-14 18:24:53 +08:00
RMBGAME f7e5419972 Check In 2022-07-14 18:17:50 +08:00
RMBGAME 25c0daafd1 Misc 2022-07-14 06:05:16 +08:00
RMBGAME 615f5ff438 ThemeSwitcher 2022-07-14 06:03:34 +08:00
RMBGAME 09557235c9 Misc 2022-07-14 01:13:06 +08:00
Aigio Liu 50cd3edf45 Add Android WebViewExtensions 2022-07-13 17:00:58 +08:00
Aigio Liu 108005c9fe Update .NET 6.0.7 2022-07-13 16:18:04 +08:00
ff m a23a538f6c fix js SaveEnable
AddPost Cookie
2022-07-13 13:54:14 +08:00
RMBGAME 0c74aaae3e Misc 2022-07-13 12:17:01 +08:00
RMBGAME 236509cc4f Misc 2022-07-13 09:49:26 +08:00
RMBGAME 88d90c2485 debug console 2022-07-13 09:23:27 +08:00
RMBGAME 5c25b7bd80 Misc 2022-07-13 08:32:33 +08:00
RMBGAME e94fe1969a SplashScreen 2022-07-13 08:01:57 +08:00
RMBGAME afbac81b63 Misc 2022-07-13 07:32:40 +08:00
RMBGAME cdf0260b83 UserItem 2022-07-13 07:28:06 +08:00
RMBGAME 62d51aff97 Misc 2022-07-13 02:05:39 +08:00
RMBGAME b1da66c9c2 Misc 2022-07-13 02:05:10 +08:00
Aigio Liu 5eb4f158d8 fix WebView2 2022-07-13 01:59:06 +08:00
Aigio Liu e127395211 Impl WebView2Installer 2022-07-12 15:16:54 +08:00
Aigio Liu 021957ba3f improvement WebView2 2022-07-12 00:17:22 +08:00
Aigio Liu 6abcd3ddf6 Misc 2022-07-11 14:56:52 +08:00
Aigio Liu a6e6de14e4 fix WebView2 2022-07-11 14:37:33 +08:00
Aigio Liu 1753594796 fix WebView2 2022-07-11 01:01:07 +08:00
Aigio Liu 38af907cbb Add WebView2 2022-07-10 20:12:15 +08:00
dependabot[bot] 11266ab461 Bump Avalonia.Xaml.Behaviors from 0.10.15.1 to 0.10.16 (#1636)
Bumps [Avalonia.Xaml.Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors) from 0.10.15.1 to 0.10.16.
- [Release notes](https://github.com/wieslawsoltes/AvaloniaBehaviors/releases)
- [Commits](https://github.com/wieslawsoltes/AvaloniaBehaviors/compare/0.10.15.1...0.10.16)

---
updated-dependencies:
- dependency-name: Avalonia.Xaml.Behaviors
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-09 01:30:26 +08:00
RMBGAME 4fbd98ef2b 令牌交易查看详情 (待完善) 2022-07-09 01:08:47 +08:00
RMBGAME 591fe9bff4 Sub 2022-07-09 01:07:12 +08:00
RMBGAME 9979241967 Misc 2022-07-09 01:07:12 +08:00
RMBGAME 88bcc121e7 UI 2022-07-09 01:07:04 +08:00
Aigio Liu 1759a04208 Use HexMate Impl ToHexString(this byte[] inArray, bool isLower = false) 2022-07-07 00:43:55 +08:00
Aigio Liu 79c6675479 fix & ToHexString(this byte[] 2022-07-07 00:33:27 +08:00
Aigio Liu a2e1966773 Misc 2022-07-06 11:42:12 +08:00
Aigio Liu 010ab035fb NLog isolate 2022-07-06 11:39:44 +08:00
Aigio Liu ca501006aa fix cert create net6.0-android 2022-07-06 08:57:57 +08:00
Aigio Liu 1e0d6c6de4 fix Auth 2022-07-05 00:29:38 +08:00
Aigio Liu 95647e911c fix 2022-07-05 00:24:16 +08:00
Aigio Liu 05f5e6612f fix IPermissionsPlatformService.CheckAndRequestAsync error
del ITelephonyService add PhoneNumberPlatformHelper
impl android Custom Url Scheme LoginOrRegisterActivity
2022-07-05 00:21:56 +08:00
RMBGAME e3f5178c04 fix 2022-07-03 23:34:59 +08:00
RMBGAME f6b9c26ccc UI 2022-07-03 23:30:20 +08:00
RMBGAME dafa44b627 Misc 2022-07-03 14:34:15 +08:00
Aigio Liu 0f23f3c388 fix 2022-07-03 12:59:55 +08:00
ff m 4f4836a8d8 fix
notice
2022-07-03 12:55:19 +08:00
Aigio Liu 6dd4922ea2 fix 2022-07-03 12:49:30 +08:00
Aigio Liu 415a50871e Improve HttpReverseProxyMiddleware.HandleScriptInject 2022-07-03 12:26:07 +08:00
Aigio Liu 54c0cd25d8 Add https://docs.microsoft.com/zh-cn/dotnet/api/system.web.httpresponse.contentencoding?view=netframework-4.8 2022-07-02 22:35:35 +08:00
Aigio Liu f057d41333 fix Android project 2022-07-02 15:00:01 +08:00
RMBGAME 5d848c92e9 GetEncodingFromContentType 2022-07-02 12:28:59 +08:00
ff m 30ebcce718 fix UpdateScriptError
fix ScriptError
2022-07-01 20:20:41 +08:00
ff m 9d1252485e change 2022-07-01 19:07:51 +08:00
RMBGAME 89f2c7e37c Crash Fix 2022-07-01 06:42:13 +08:00
RMBGAME b91cf81c90 Misc 2022-07-01 06:27:54 +08:00
RMBGAME fbbada6769 Misc 2022-07-01 06:25:30 +08:00
RMBGAME 246a3b6a97 Misc 2022-07-01 06:17:02 +08:00
RMBGAME 43df3f9f4f Fix Call from invalid thread 2022-07-01 05:51:52 +08:00
RMBGAME c95913901f Update UI 2022-07-01 05:42:13 +08:00
RMBGAME 12827e7bef ResponseBody Modify Complete 2022-07-01 05:33:43 +08:00
RMBGAME 9c378dcf2a Yarp.ReverseProxy 脚本注入支持
DomainPattern 匹配性能改进
TODO : ResponseBody Modify
2022-07-01 03:30:16 +08:00
RMBGAME fb6eca3489 Misc 2022-07-01 03:30:08 +08:00
Aigio Liu 2482a5427f fix DTO 2022-06-30 02:49:10 +08:00
Aigio Liu 1755244f75 Add AccelerateProjectDTO Items 2022-06-29 22:03:21 +08:00
RMBGAME bb3376d7c9 MainWindow can be null 2022-06-29 18:20:55 +08:00
ff m d997e85504 fix 2022-06-29 17:45:18 +08:00
RMBGAME b953f65688 PAC ProxyMode 2022-06-29 17:23:36 +08:00
RMBGAME 58d9a3f307 fix 2022-06-29 15:41:52 +08:00
Aigio Liu e15126a2a4 Update https://github.com/dotnetcore/FastGithub/commit/58f79ddc19410c92b18e8d4de1c4b61376e97be7 2022-06-29 15:13:00 +08:00
RMBGAME edddc8b757 Misc 2022-06-29 14:46:43 +08:00
RMBGAME f94f8ed190 ReverseProxy Script 2022-06-29 14:46:42 +08:00
RMBGAME 29fbd52d24 Misc 2022-06-29 14:46:36 +08:00
ff m 69246f21ac 添加平台设备类型参数
Add内嵌广告分类
2022-06-29 13:46:16 +08:00
Aigio Liu eca89d8acc Bump AutoMapper 11
https://docs.automapper.org/en/latest/11.0-Upgrade-Guide.html
2022-06-29 09:11:13 +08:00
ff m 1215c50739 Merge branch 'develop' of https://github.com/BeyondDimension/SteamTools into develop 2022-06-28 20:30:02 +08:00
ff m 0d1cd9be49 fix gm 未下载 2022-06-28 20:29:52 +08:00
Aigio Liu e4c2244ec5 fix SetBootAutoStartByPowerShell 2022-06-28 20:16:13 +08:00
Aigio Liu 6fb255c428 fix 2022-06-28 17:01:21 +08:00
Aigio Liu d66245c689 Misc 2022-06-28 16:58:30 +08:00
Aigio Liu fe7e4abc28 Update Packages 2022-06-28 14:09:15 +08:00
Aigio L 7a3efde07b Merge pull request #1574 from BeyondDimension/dependabot/nuget/source/SteamTools/Newtonsoft.Json-13.0.1
Bump Newtonsoft.Json from 12.0.3 to 13.0.1 in /source/SteamTools
2022-06-28 14:05:08 +08:00
Aigio Liu 21d1d03a3c Misc 2022-06-27 10:55:50 +08:00
Aigio Liu 3c8e2c142c Add ShowCommand & Misc 2022-06-26 19:29:22 +08:00
RMBGAME c696651a42 Misc 2022-06-26 16:30:03 +08:00
RMBGAME 76e1d32bdd 代理模式UI改进 2022-06-26 15:05:53 +08:00
RMBGAME a89ddccd32 Misc 2022-06-26 15:05:45 +08:00
Aigio Liu 18258152e4 fix CI 2022-06-26 14:34:25 +08:00
Aigio Liu f28b4ea7ed Use SetBootAutoStartByPowerShell 2022-06-26 14:26:52 +08:00
Aigio Liu 8d3584cd1f fix WinDivertSharp & Add ST.Client.Windows.ScheduledTasks 2022-06-26 13:12:05 +08:00
Aigio Liu 57da3455b4 Use System.Random.Shared 2022-06-25 16:26:46 +08:00
RMBGAME 8cb7bac0f0 Update bug-report.md 2022-06-24 19:09:15 +08:00
Aigio Liu 6e2e7f4ad5 Update rel 2022-06-24 17:50:11 +08:00
Aigio Liu 9fe1ee7b1f Bump v2.8.0 2022-06-24 17:42:46 +08:00
Aigio Liu ea2d304c95 Update README 2022-06-24 17:08:57 +08:00
Aigio Liu 094a7fe814 fix CI 2022-06-24 17:00:04 +08:00
ff m 3154d9658a fix 2022-06-24 15:04:50 +08:00
ff m a9fdfbe5c9 Merge branch 'develop' of https://github.com/BeyondDimension/SteamTools into develop 2022-06-24 14:55:21 +08:00
ff m 229ce50517 AccountCenter 2022-06-24 14:55:15 +08:00
Aigio Liu 184760fcd7 fix Android Build 2022-06-24 14:04:47 +08:00
Aigio Liu 0c34fdc135 fix CI / Update FluentAvalonia 1.4.1 2022-06-24 13:09:53 +08:00
RMBGAME 02ae040a2e Misc 2022-06-23 19:55:06 +08:00
RMBGAME aa29128742 Misc 2022-06-23 19:54:57 +08:00
Aigio Liu f8bf05688b fix macOS 2022-06-23 19:00:43 +08:00
Aigio Liu 1291e7b13f TcpInterceptor 2022-06-23 18:52:12 +08:00
Aigio Liu e8024fb875 Update README 2022-06-23 18:44:00 +08:00
Aigio Liu 648f6b22ff fix StopProxyCoreAsync 2022-06-23 18:41:38 +08:00
Aigio Liu 66ee4d5002 Misc & PacketIntercept 2022-06-23 18:41:24 +08:00
RMBGAME d52e61954b Fix 2022-06-23 17:56:40 +08:00
RMBGAME f8eea714e8 赞助用户标识 2022-06-23 17:36:53 +08:00
RMBGAME 352aa2ad66 Misc 2022-06-23 16:59:30 +08:00
RMBGAME 849f43e5ec Misc 2022-06-23 15:57:17 +08:00
RMBGAME 1dfd9250b0 Misc 2022-06-23 14:16:39 +08:00
RMBGAME 24fd562475 Fix 2022-06-23 13:56:20 +08:00
RMBGAME c033e853d6 支持在设置中开关托盘菜单
close #970 #1525
2022-06-23 13:30:41 +08:00
dependabot[bot] 4153805a5f Bump Newtonsoft.Json from 12.0.3 to 13.0.1 in /source/SteamTools
Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 12.0.3 to 13.0.1.
- [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases)
- [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/12.0.3...13.0.1)

---
updated-dependencies:
- dependency-name: Newtonsoft.Json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 00:36:32 +00:00
RMBGAME 8b583406a4 Bump AvaloniaGif 2022-06-23 08:02:42 +08:00
RMBGAME 8d28cc1246 Update Dependencies 2022-06-23 07:15:21 +08:00
RMBGAME 125928243d Misc 2022-06-23 06:58:07 +08:00
RMBGAME 44d880b1cc Misc 2022-06-23 06:58:01 +08:00
dependabot[bot] 2929d7b8b8 Bump DnsClient from 1.6.0 to 1.6.1 (#1530)
Bumps [DnsClient](https://github.com/MichaCo/DnsClient.NET) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/MichaCo/DnsClient.NET/releases)
- [Commits](https://github.com/MichaCo/DnsClient.NET/compare/1.6.0...1.6.1)

---
updated-dependencies:
- dependency-name: DnsClient
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-23 06:46:47 +08:00
dependabot[bot] 9fab6a1718 Bump Avalonia.Xaml.Behaviors from 0.10.14 to 0.10.15 (#1561)
Bumps [Avalonia.Xaml.Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors) from 0.10.14 to 0.10.15.
- [Release notes](https://github.com/wieslawsoltes/AvaloniaBehaviors/releases)
- [Commits](https://github.com/wieslawsoltes/AvaloniaBehaviors/compare/0.10.14...0.10.15)

---
updated-dependencies:
- dependency-name: Avalonia.Xaml.Behaviors
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-23 06:46:35 +08:00
Aigio Liu 78feece7bf fix TrustRootCertificate 2022-06-22 21:50:01 +08:00
Aigio Liu 262797b500 split CertificateManager 2022-06-22 21:27:05 +08:00
RMBGAME 6d10b27b31 Misc 2022-06-22 20:26:22 +08:00
Mossimo 95dd788ede Fix 格式 2022-06-22 19:35:34 +08:00
Mossimo 3a95dcc4cb show AccountCenter 2022-06-22 19:35:34 +08:00
RMBGAME f6055f1230 ICertificateManager Impl 2022-06-22 19:19:13 +08:00
Aigio Liu 034cbd083f Misc 2022-06-22 17:43:57 +08:00
RMBGAME 32588e3e36 fix Yarp.ReverseProxy Bugs 2022-06-22 16:40:13 +08:00
Aigio Liu 6179816aaa Add ICertificateManager 2022-06-22 15:36:05 +08:00
Aigio Liu 1e0d63f5ab fix Test 2022-06-21 19:45:04 +08:00
Aigio Liu b7b16ceded Use YarpReverseProxyServiceImpl 2022-06-21 19:14:32 +08:00
Aigio Liu 4a7f419945 fix Constants.Urls 2022-06-21 18:08:09 +08:00
Aigio Liu 3a345f5781 fix Models MessagePack 2022-06-21 16:37:59 +08:00
Aigio Liu 31b16bec97 YarpReverseProxyServiceImpl Misc 2022-06-21 16:31:35 +08:00
RMBGAME eaa2908e88 AD 2022-06-21 16:26:51 +08:00
RMBGAME 9c157c46d8 Update bug-report.md 2022-06-21 16:08:59 +08:00
Aigio Liu 13d6018cf1 Add ReverseProxyEngine 2022-06-21 14:45:25 +08:00
Mossimo 065c1a1fde Add Remark 2022-06-21 14:42:05 +08:00
Aigio Liu 3d12f64ba4 ST.Client.ReverseProxy.Yarp build success 2022-06-21 13:39:25 +08:00
RMBGAME 2352b9e083 Ad 2022-06-21 08:21:31 +08:00
Aigio Liu 5bf26e39b4 YarpReverseProxyServiceImpl
reference resources https://github.com/dotnetcore/FastGithub/tree/2.1.4
2022-06-20 20:44:47 +08:00
Aigio Liu ed0669eaf5 ST.Client.ReverseProxy.Yarp CertificateManager 2022-06-17 16:24:36 +08:00
Aigio Liu 7a1134425a fix 2022-06-17 13:46:23 +08:00
Aigio Liu 650f623588 fix 2022-06-17 09:21:51 +08:00
Aigio Liu 7bcc264c45 fix 2022-06-16 14:34:53 +08:00
Aigio Liu ed074ff8c0 fix 2022-06-16 14:28:04 +08:00
Aigio Liu bcecb4c13d Enums Dir 2022-06-16 14:24:59 +08:00
Aigio Liu f3235510b5 migrate ST.Client.ReverseProxy.Titanium
use IReverseProxyService replace IHttpProxyService
2022-06-16 14:09:32 +08:00
Mossimo 6b3db82538 fix 2022-06-16 12:42:42 +08:00
Mossimo 0355a08020 fix add AdvertisementClient 2022-06-16 12:26:31 +08:00
dependabot[bot] 0e81951016 Bump references/ArchiSteamFarm from 7dc022b to ce980e5 (#1551)
Bumps [references/ArchiSteamFarm](https://github.com/SteamTools-Team/ArchiSteamFarm) from `7dc022b` to `ce980e5`.
- [Release notes](https://github.com/SteamTools-Team/ArchiSteamFarm/releases)
- [Commits](https://github.com/SteamTools-Team/ArchiSteamFarm/compare/7dc022b34f327fe8a5696fa693c19264e8027365...ce980e5b0dfae42bdd95dd04447daa263cabefae)

---
updated-dependencies:
- dependency-name: references/ArchiSteamFarm
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-16 08:04:41 +08:00
RMBGAME 0d85c60555 Fromat 2022-06-16 07:57:19 +08:00
RMBGAME c81e431324 非简中语言默认将隐藏加速和脚本功能 2022-06-16 06:30:48 +08:00
RMBGAME 85144aaf21 Misc 2022-06-16 05:52:07 +08:00
Aigio Liu 10731b173b Update .Net 6.0.6 & IMemoryCache Misc 2022-06-15 13:05:02 +08:00
Mossimo 1370a04e2d AddServerMemoryCache 2022-06-14 20:05:37 +08:00
Aigio Liu b5b8b6fa20 Add ST.Client.ReverseProxy 2022-06-14 20:00:35 +08:00
Aigio Liu 4de7587466 Update Dependencies 2022-06-14 19:02:10 +08:00
Aigio Liu b563718fbf SteamServiceImpl Misc 2022-06-13 06:16:10 +08:00
RMBGAME bf399f6fd3 fix 2022-06-13 03:57:06 +08:00
RMBGAME 3d335d3906 fix 2022-06-13 02:45:43 +08:00
RMBGAME 66832affdd Misc 2022-06-13 02:28:35 +08:00
RMBGAME 680fb876ce fix #1457 2022-06-13 00:56:27 +08:00
RMBGAME 503c5f425b TwoLevelAgent 2022-06-12 23:30:00 +08:00
RMBGAME ba2d6888f8 Safe Shutdown Steam 2022-06-12 20:50:11 +08:00
RMBGAME baba93152c fix https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/2876356738u 2022-06-11 16:54:36 +08:00
RMBGAME 45a30c0bff Complete 2022-06-09 22:38:51 +08:00
RMBGAME ea08c28362 Restore FilePicker2 2022-06-09 20:24:48 +08:00
RMBGAME bbcf171c48 Bug Fix 2022-06-09 13:29:23 +08:00
RMBGAME 6a8cd687a7 新增 Steam 云存档管理功能 2022-06-09 12:59:48 +08:00
RMBGAME 9848fa52e7 Readme 2022-06-08 20:19:40 +08:00
RMBGAME 510cf6d3ca Misc 2022-06-08 20:17:45 +08:00
RMBGAME 087f85d8d2 Misc 2022-06-08 19:23:37 +08:00
Aigio Liu 653525eeed Bump to FluentAvalonia original-master 2022-06-08 18:30:04 +08:00
Aigio Liu 0bbc561fc1 fix 2022-06-08 14:24:01 +08:00
Aigio Liu dcebb03c8a ProjectReference FluentAvalonia 2022-06-08 13:42:52 +08:00
Aigio Liu b952be27c9 Bump to ArchiSteamFarm v5.2.6.3-library 2022-06-08 13:39:15 +08:00
RMBGAME 32ffa2f179 Bump to Avalonia 0.10.15
Bump to FluentAvalonia 1.4.0
2022-06-07 20:02:46 +08:00
Aigio Liu 3eb03d4347 Add Maui Images 2022-06-07 18:14:33 +08:00
Aigio Liu 441a5a5be6 Misc & fix 2022-06-07 13:12:46 +08:00
Aigio Liu 50cd52d5ca Maui Misc 2022-06-07 09:35:32 +08:00
Aigio Liu 12393aa4ec Maui 中使用统一的 IServiceProvider 2022-06-06 23:07:57 +08:00
Aigio Liu 11c1320ce1 Update Maui Project 2022-06-06 19:54:52 +08:00
Aigio L 9ae70b82c7 Merge pull request #1458 from MasterOfStar/patch-1
错别字修正
2022-06-02 00:28:57 +08:00
MasterOfStar 8053629ddd 错别字修正
在→再
顺手调整了一下描述语序
2022-06-02 00:21:06 +08:00
Aigio Liu 97e946a21b fix https://github.com/BeyondDimension/SteamTools/issues/1456 2022-06-01 11:02:33 +08:00
Aigio Liu 56951ce078 Maui Misc 2022-05-31 21:17:45 +08:00
Aigio Liu a927b8f4f4 fix ISaveFileDialogService 2022-05-30 22:34:44 +08:00
Aigio Liu 17c4a077bf Misc 2022-05-30 22:27:39 +08:00
Aigio Liu 97e5748de0 fix 2022-05-30 22:16:00 +08:00
Aigio Liu 38bd825718 拆分 Xamarin.Essentials,在 MAUI 中使用 .NET MAUI Essentials 2022-05-30 22:07:18 +08:00
Mossimo 6d07859245 Steam -> steam 2022-05-30 19:07:06 +08:00
RMBGAME 934131da94 fix 2022-05-30 18:32:55 +08:00
Mossimo 50cf638ee7 try Fix Linux GetSteamDirPath 2022-05-30 18:17:32 +08:00
RMBGAME 76c1866108 Update FluentAvalonia 2022-05-30 18:10:32 +08:00
Aigio L 632bb1105b Merge pull request #1448 from zhanghua000/patch-1
修改 AUR 地址以适配软件名的更改
2022-05-30 00:23:56 +08:00
Aigio Liu f11d651985 rename server resx 2022-05-30 00:19:20 +08:00
Aigio Liu 1f97f1cfe5 remove ubuntu-latest 2022-05-29 18:45:50 +08:00
Aigio Liu 10766a2a92 Remove nuget.config 2022-05-29 18:26:23 +08:00
Aigio L 589b62f8d3 Update dotnet.yml 2022-05-29 18:05:16 +08:00
Aigio L d14b79cf47 Update dotnet.yml 2022-05-29 18:00:24 +08:00
Aigio Liu 7fc28ab5d8 MAUI Add WinUI Unpackaged Launch & rename namespace/appname 2022-05-29 11:07:24 +08:00
Aigio Liu 48238531d8 add launchSettings.json 2022-05-29 11:07:23 +08:00
Aigio Liu 01f1be61bd fix CI/CD 2022-05-28 23:15:34 +08:00
Aigio Liu 54d381d600 improve FluentAvalonia 2022-05-28 23:08:05 +08:00
Noob Zhang d07ae46afc Update README.en.md 2022-05-28 19:53:28 +08:00
Noob Zhang f7abf4e9cd Update README.md 2022-05-28 19:47:44 +08:00
Aigio Liu 15ad1a5c2d Add MAUI 2022-05-28 14:22:47 +08:00
RMBGAME 9a83489531 Misc 2022-05-28 07:05:38 +08:00
RMBGAME 851d385514 UI Misc 2022-05-28 06:41:59 +08:00
RMBGAME 7b8c016e57 Misc 2022-05-28 06:41:50 +08:00
Aigio Liu 4709e2060d fix #1445 #1444 2022-05-27 23:23:15 +08:00
dependabot[bot] bd294f3edf Bump System.Memory from 4.5.4 to 4.5.5 (#1442)
Bumps [System.Memory](https://github.com/dotnet/corefx) from 4.5.4 to 4.5.5.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Memory
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-27 08:59:19 +08:00
Aigio Liu 0c6834cd42 Fix 2022-05-27 00:11:06 +08:00
Aigio Liu dadb7ae01d Misc Common & Test 2022-05-27 00:01:54 +08:00
Aigio Liu e2f240946e Fix 2022-05-26 20:06:20 +08:00
Aigio Liu 8a208b05d9 Fix & Update Packages 2022-05-26 10:39:06 +08:00
Aigio Liu 586f0de609 Improve server 2022-05-24 19:00:47 +08:00
Mossimo 5ec326baa1 Jq版本变更需要 新加 True 参数 2022-05-24 14:04:49 +08:00
RMBGAME 13975d60bf Misc 2022-05-24 09:48:33 +08:00
RMBGAME 6482d0dc47 Update FluentAvalonia 1.3.5
fix #1199
fix #459
fix #983
fix #1339
fix #1365
2022-05-24 09:47:33 +08:00
RMBGAME 54ba10aee8 log 2022-05-24 09:45:49 +08:00
RMBGAME d9030f2223 Misc 2022-05-24 09:45:41 +08:00
dependabot[bot] 061117342c Bump DynamicData from 7.7.14 to 7.8.1 (#1426)
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.7.14 to 7.8.1.
- [Release notes](https://github.com/reactiveui/DynamicData/releases)
- [Changelog](https://github.com/reactivemarbles/DynamicData/blob/main/ReleaseNotes.md)
- [Commits](https://github.com/reactiveui/DynamicData/compare/7.7.14...7.8.1)

---
updated-dependencies:
- dependency-name: DynamicData
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-24 09:11:31 +08:00
Aigio Liu fd3b45cdb4 SkiaSharpHelpers disposeManagedStream false & Add SkiaTest Update SQLitePCLRaw.bundle_green 2.1.0 & code sign FDELauncher 2022-05-24 09:04:13 +08:00
Aigio Liu 17649352aa Update Update OperatingSystem2 2.0.0 & NotifyIcon 1.1.0 & HarfBuzzSharp 2.8.2 & SkiaSharp 2.88.0 & Misc 2022-05-23 21:54:59 +08:00
Aigio Liu 666b145328 fix
|Error|Image2|DecodeImage | System.ArgumentNullException: Value cannot be null. (Parameter 'data')
   at SkiaSharp.SKImage.FromEncodedData(SKData data)
   at Avalonia.Skia.SkiaSharpHelpers.FromEncodedData(Stream stream)
   at Avalonia.Skia.PlatformRenderInterface.Avalonia.Platform.IPlatformRenderInterface.LoadBitmap(Stream stream)
   at Avalonia.Media.Imaging.Bitmap..ctor(Stream stream) in /_/src/Avalonia.Visuals/Media/Imaging/Bitmap.cs:line 72
   at AvaloniaGif.Image2.DecodeImage(Stream stream)
2022-05-21 19:01:46 +08:00
Aigio Liu b4aaec51b2 CI code signing & Misc 2022-05-21 16:31:35 +08:00
Aigio Liu 0a4eace40a fix 2022-05-19 18:26:51 +08:00
Aigio Liu 3841580596 fix 2022-05-19 18:13:29 +08:00
Aigio Liu c102c3c9a4 Misc 2022-05-19 17:34:05 +08:00
Aigio Liu 0869c3610f Update ArchiSteamFarm V5.2.6.1 2022-05-19 11:27:12 +08:00
Aigio Liu 877e9e6dc6 Use BrowserLaunchMode.External on ArchiSteamFarmPlusPageViewModel 2022-05-18 21:49:45 +08:00
Aigio Liu dbdc97805e fix 2022-05-18 21:40:13 +08:00
Aigio Liu 2ec6a033b9 Remove __HAVE_ANDROIDX__ & SDK Version 2022-05-18 21:07:29 +08:00
Aigio Liu 57da5ab908 Update NLog 5.0 & Xamarin.*
Fix System.TypeLoadException: Could not resolve type with token 01000026 from typeref (expected class 'Microsoft.Extensions.Primitives.InplaceStringBuilder' in assembly 'Microsoft.Extensions.Primitives, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60')
2022-05-18 18:05:51 +08:00
Aigio Liu 6fe0e5a1e5 改进 Converters 2022-05-17 21:44:37 +08:00
dependabot[bot] 8110090ace Bump Moq from 4.18.0 to 4.18.1 (#1406)
Bumps [Moq](https://github.com/moq/moq4) from 4.18.0 to 4.18.1.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.18.0...v4.18.1)

---
updated-dependencies:
- dependency-name: Moq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-17 08:53:40 +08:00
RMBGAME 97b8246275 修复库存游戏选择自定义文件图片时的错误 2022-05-17 07:21:08 +08:00
Aigio Liu fe673959a5 Add About_FormerName 2022-05-16 19:54:27 +08:00
dependabot[bot] 7b247ac0d7 Bump Microsoft.NET.Test.Sdk from 17.1.0 to 17.2.0 (#1382)
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.1.0 to 17.2.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](https://github.com/microsoft/vstest/compare/v17.1.0...v17.2.0)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 17:55:55 +08:00
dependabot[bot] 54493f5969 Bump Moq from 4.17.2 to 4.18.0 (#1389)
Bumps [Moq](https://github.com/moq/moq4) from 4.17.2 to 4.18.0.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.17.2...v4.18.0)

---
updated-dependencies:
- dependency-name: Moq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 17:55:43 +08:00
Aigio Liu ae43cd8906 Copy/Move Directory use overwrite 2022-05-15 14:41:14 +08:00
Aigio Liu c66a427e53 Add IOPath.MoveDirectoryAsync 2022-05-15 14:35:07 +08:00
Aigio Liu b37864dd18 v2.7.4 in progress 2022-05-14 17:22:10 +08:00
Aigio Liu 36ac02b4f5 fix 2022-05-14 14:09:22 +08:00
Aigio Liu 39d78529c2 Update CD Publish Tool 2022-05-14 13:53:25 +08:00
Aigio Liu 1499aa4086 Add Steam++.Launcher.exe 2022-05-14 13:38:24 +08:00
Aigio Liu 0344682186 Update SVG 2022-05-14 10:08:39 +08:00
RMBGAME 311c678312 Misc 2022-05-14 05:21:15 +08:00
RMBGAME 5739794136 Bump Avalonia 0.10.14 2022-05-14 05:17:56 +08:00
Aigio Liu d2fb620b90 Misc 2022-05-13 22:41:27 +08:00
Aigio Liu d672b989d5 fix 2022-05-13 22:32:54 +08:00
Aigio Liu 4b443e7178 Misc 2022-05-13 22:25:47 +08:00
Aigio Liu 94e4977341 Add FDELauncher 2022-05-13 21:19:46 +08:00
dependabot[bot] 85bc693e3e Bump Z.EntityFramework.Plus.EFCore from 6.13.18 to 6.13.19 (#1373)
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.13.18 to 6.13.19.
- [Release notes](https://github.com/zzzprojects/EntityFramework-Plus/releases)
- [Commits](https://github.com/zzzprojects/EntityFramework-Plus/commits)

---
updated-dependencies:
- dependency-name: Z.EntityFramework.Plus.EFCore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-11 10:11:42 +08:00
dependabot[bot] 555a812e39 Bump DynamicData from 7.7.1 to 7.7.14 (#1376)
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.7.1 to 7.7.14.
- [Release notes](https://github.com/reactiveui/DynamicData/releases)
- [Changelog](https://github.com/reactivemarbles/DynamicData/blob/main/ReleaseNotes.md)
- [Commits](https://github.com/reactiveui/DynamicData/compare/7.7.1...7.7.14)

---
updated-dependencies:
- dependency-name: DynamicData
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-11 10:11:31 +08:00
Aigio Liu 8f45f3b031 Update .Net SDK 6.0.300 / Runtime 6.0.5[Visual Studio 2022 (v17.2)] 2022-05-11 10:08:11 +08:00
RMBGAME 0db4a6a69e CarouselBanner Impl 2022-05-10 23:51:44 +08:00
Aigio Liu 13a6cf0bb5 修复在 MIUI Android 11 ~ 12 中 绑定或换绑手机号页面闪退 2022-05-10 13:58:43 +08:00
dependabot[bot] c46e3bbb7c Bump Xamarin.Essentials from 1.7.2 to 1.7.3 (#1350)
Bumps [Xamarin.Essentials](https://github.com/xamarin/Essentials) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/xamarin/Essentials/releases)
- [Commits](https://github.com/xamarin/Essentials/compare/1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: Xamarin.Essentials
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:57:43 +08:00
Aigio L b70806c3c7 Merge pull request #1363 from BeyondDimension/imgbot
[ImgBot] Optimize images
2022-05-10 09:57:30 +08:00
ImgBotApp ec7e36dd61 [ImgBot] Optimize images
*Total -- 1,511.66kb -> 1,490.72kb (1.39%)

/src/ST.Client.Desktop.Avalonia.App.Bridge2/Images/Wide310x150Logo.scale-125.png -- 6.13kb -> 4.75kb (22.44%)
/src/ST.Client.Desktop.Avalonia.App.Bridge.Package/Images/Wide310x150Logo.scale-125.png -- 6.13kb -> 4.75kb (22.44%)
/src/ST.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/Icon/ProxyScriptManagePageViewModel.png -- 0.71kb -> 0.64kb (10.32%)
/src/ST.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/Xbox.png -- 4.64kb -> 4.26kb (8.19%)
/src/ST.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/Icon/DebugPageViewModel.png -- 0.66kb -> 0.61kb (7.56%)
/resources/screenshots.jpg -- 659.56kb -> 650.22kb (1.42%)
/resources/screenshots.en.jpg -- 828.61kb -> 820.26kb (1.01%)
/resources/windows-brands.svg -- 0.37kb -> 0.37kb (0.26%)
/resources/android-brands.svg -- 0.54kb -> 0.54kb (0.18%)
/resources/apple-brands.svg -- 0.67kb -> 0.67kb (0.15%)
/resources/linux-brands.svg -- 3.65kb -> 3.65kb (0.03%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-05-09 14:16:19 +00:00
Aigio Liu 60c8395ec9 Misc 2022-05-09 19:03:55 +08:00
Aigio Liu cfef0c1a1a Add Android CACertStateActivity 2022-05-09 16:15:48 +08:00
Aigio Liu 431fe98ee9 Update README.md 2022-05-07 09:14:01 +08:00
Aigio Liu 57f8bda1b8 MsixPackage 9MTCFHS560NG 2022-05-06 18:49:29 +08:00
Aigio Liu 3fb64c6eb9 v2.7.3 2022-05-06 16:51:55 +08:00
Aigio L 085c25e69d Merge branch 'experiment/rename' into develop 2022-05-06 16:01:14 +08:00
Aigio Liu de9d80156d rename Watt Toolkit 2022-05-06 15:55:46 +08:00
Aigio Liu fd50522341 MsixPackage 2022-05-06 12:43:02 +08:00
Aigio Liu 55b95cb9c7 Add 7-Zip.NativeAssets.Win32 2022-05-06 09:15:58 +08:00
Aigio Liu 53f71f8d2b fix XBD020 Invalid item ID image-1.0.0-beta1 2022-05-06 00:01:06 +08:00
Aigio Liu 0c76d4dcdd Misc 2022-05-05 23:42:43 +08:00
Aigio Liu 8c13a1e645 add launchSettings.json 2022-05-05 23:42:42 +08:00
RMBGAME 25ee6130f7 restore mainwindow 2022-05-05 21:18:02 +08:00
Aigio Liu 310d45dab2 Misc 2022-05-05 19:47:21 +08:00
Mossimo d6f14268fb fix show if 2022-05-05 18:19:20 +08:00
Mossimo 6aacfec4b6 Remove IsWindows 2022-05-05 18:15:14 +08:00
Aigio Liu c5400dcd8c KillEntireProcessTree 2022-05-05 18:13:02 +08:00
Aigio Liu 5c2fca9db0 Add KillEntireProcessTree 2022-05-05 18:09:11 +08:00
Mossimo 01eb6e15e1 fix 2022-05-05 18:08:32 +08:00
Aigio Liu 5287ab24d5 Misc 2022-05-05 18:04:10 +08:00
RMBGAME 1a645d7d64 Update README.md 2022-05-05 17:13:48 +08:00
RMBGAME 6df16335bc Update README.md 2022-05-05 17:12:24 +08:00
RMBGAME 88b95350bc Update README.md 2022-05-05 17:06:51 +08:00
RMBGAME a0983dd59f Update README.md 2022-05-05 17:05:00 +08:00
Aigio Liu 1d9180ae88 Steam++ rename StmToolkit 2022-05-05 17:04:28 +08:00
RMBGAME fe19ba505d Update README.md 2022-05-05 17:03:36 +08:00
Aigio Liu 8049043c70 https://docs.microsoft.com/zh-cn/windows/apps/windows-app-sdk/single-project-msix?tabs=csharp 2022-05-05 16:43:43 +08:00
Mossimo 02717fefb0 testMac 2022-05-05 16:06:54 +08:00
Mossimo 057d5c0a41 Test MacOs Sam 2022-05-05 15:41:06 +08:00
Aigio Liu b34c5298d3 #1340 2022-05-05 13:05:24 +08:00
dependabot[bot] 5d34ada716 Bump Xamarin.Google.MLKit.BarcodeScanning from 116.1.2.5 to 116.2.0 (#1324)
Bumps [Xamarin.Google.MLKit.BarcodeScanning](https://github.com/xamarin/GooglePlayServicesComponents) from 116.1.2.5 to 116.2.0.
- [Release notes](https://github.com/xamarin/GooglePlayServicesComponents/releases)
- [Commits](https://github.com/xamarin/GooglePlayServicesComponents/commits)

---
updated-dependencies:
- dependency-name: Xamarin.Google.MLKit.BarcodeScanning
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-05 09:39:14 +08:00
dependabot[bot]andAigio L 50a2933612 Bump Xamarin.AndroidX.Navigation.UI from 2.4.1.1 to 2.4.2 (#1330)
Bumps [Xamarin.AndroidX.Navigation.UI](https://github.com/xamarin/AndroidX) from 2.4.1.1 to 2.4.2.
- [Release notes](https://github.com/xamarin/AndroidX/releases)
- [Commits](https://github.com/xamarin/AndroidX/commits)

---
updated-dependencies:
- dependency-name: Xamarin.AndroidX.Navigation.UI
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-05-05 09:39:06 +08:00
dependabot[bot] 135fde3471 Bump Xamarin.AndroidX.Navigation.Fragment from 2.4.1.2 to 2.4.2 (#1331)
Bumps [Xamarin.AndroidX.Navigation.Fragment](https://github.com/xamarin/AndroidX) from 2.4.1.2 to 2.4.2.
- [Release notes](https://github.com/xamarin/AndroidX/releases)
- [Commits](https://github.com/xamarin/AndroidX/commits)

---
updated-dependencies:
- dependency-name: Xamarin.AndroidX.Navigation.Fragment
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-05 09:38:38 +08:00
dependabot[bot] 9f01e1ffaa Bump StyleCop.Analyzers from 1.2.0-beta.406 to 1.2.0-beta.435 (#1336)
Bumps [StyleCop.Analyzers](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) from 1.2.0-beta.406 to 1.2.0-beta.435.
- [Release notes](https://github.com/DotNetAnalyzers/StyleCopAnalyzers/releases)
- [Commits](https://github.com/DotNetAnalyzers/StyleCopAnalyzers/compare/1.2.0-beta.406...1.2.0-beta.435)

---
updated-dependencies:
- dependency-name: StyleCop.Analyzers
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-05 09:38:22 +08:00
Aigio Liu f90f62d03d Update SAM.API 2022-05-04 21:57:42 +08:00
Aigio Liu b1417cd53a fix 2022-05-04 19:09:19 +08:00
Aigio Liu 06497e92eb Update SAM.API & fix WinAuth Wran 2022-05-04 13:40:05 +08:00
Aigio Liu 7f9ca3690e Update SAM.API 2022-05-03 23:11:04 +08:00
Aigio Liu afb9ff9b17 fix 2022-05-03 22:58:15 +08:00
Aigio Liu d72a4970ea add GetSteamDynamicLinkLibraryPath 2022-05-03 22:55:09 +08:00
Aigio Liu 913a5385b6 fix steamProcess 2022-05-03 21:46:55 +08:00
Aigio Liu 2118ad8be1 Show UnlockAchievement 2022-05-03 21:12:36 +08:00
Aigio Liu ad912ab1e0 Update SAM.API & Misc 2022-05-03 20:57:41 +08:00
Aigio Liu f581accdad Misc 2022-04-30 17:18:59 +08:00
Aigio Liu 59450b720a v2.7.2 rev.0
Update ArchiSteamFarm V5.2.5.5
Update Avalonia.AppCenter.* 4.5.1
2022-04-30 15:51:13 +08:00
dependabot[bot]andAigio L bc07b8de54 Bump Microsoft.AppCenter.Analytics from 4.5.0 to 4.5.1 (#1316)
Bumps Microsoft.AppCenter.Analytics from 4.5.0 to 4.5.1.

---
updated-dependencies:
- dependency-name: Microsoft.AppCenter.Analytics
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-04-29 21:26:03 +08:00
dependabot[bot] b1c4adf64c Bump Microsoft.AppCenter.Crashes from 4.5.0 to 4.5.1 (#1315)
Bumps Microsoft.AppCenter.Crashes from 4.5.0 to 4.5.1.

---
updated-dependencies:
- dependency-name: Microsoft.AppCenter.Crashes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:25:10 +08:00
dependabot[bot] bc20fdb35a Bump Microsoft.AppCenter from 4.5.0 to 4.5.1 (#1317)
Bumps Microsoft.AppCenter from 4.5.0 to 4.5.1.

---
updated-dependencies:
- dependency-name: Microsoft.AppCenter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:24:43 +08:00
Aigio Liu 594dfd28ac fix IsRunningAsRoot 2022-04-29 11:23:48 +08:00
Aigio Liu a021462411 v2.7.1 rev.3 2022-04-28 12:41:39 +08:00
RMBGAME f55f6bf95c fix 2022-04-28 12:10:33 +08:00
Aigio Liu e7a254c377 fix slnf 2022-04-28 12:09:07 +08:00
Aigio Liu 59a35e45e4 v2.7.1 rev.2 2022-04-28 11:59:57 +08:00
Aigio Liu 6adce8e71d v2.7.1 rev.1 2022-04-28 09:36:17 +08:00
dependabot[bot] f620722113 Bump JustArchiNET.Madness from 3.5.1 to 3.5.2 (#1288)
Bumps [JustArchiNET.Madness](https://github.com/JustArchiNET/Madness) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/JustArchiNET/Madness/releases)
- [Commits](https://github.com/JustArchiNET/Madness/compare/3.5.1...3.5.2)

---
updated-dependencies:
- dependency-name: JustArchiNET.Madness
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-28 09:32:53 +08:00
dependabot[bot]andAigio L 6c3f3b33ae Bump ReactiveUI.XamForms from 18.0.7 to 18.0.10 (#1304)
Bumps [ReactiveUI.XamForms](https://github.com/reactiveui/reactiveui) from 18.0.7 to 18.0.10.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.0.7...18.0.10)

---
updated-dependencies:
- dependency-name: ReactiveUI.XamForms
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-04-28 09:31:52 +08:00
dependabot[bot] e23c0a901d Bump ReactiveUI.AndroidX from 18.0.7 to 18.0.10 (#1311)
Bumps [ReactiveUI.AndroidX](https://github.com/reactiveui/reactiveui) from 18.0.7 to 18.0.10.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.0.7...18.0.10)

---
updated-dependencies:
- dependency-name: ReactiveUI.AndroidX
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-28 09:31:17 +08:00
dependabot[bot]andAigio L 832c115e79 Bump ReactiveUI from 18.0.7 to 18.0.10 (#1306)
Bumps [ReactiveUI](https://github.com/reactiveui/reactiveui) from 18.0.7 to 18.0.10.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/18.0.7...18.0.10)

---
updated-dependencies:
- dependency-name: ReactiveUI
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-04-28 09:31:08 +08:00
dependabot[bot] 7b510f1536 Bump SQLitePCLRaw.bundle_green (#1305)
Bumps [SQLitePCLRaw.bundle_green](https://github.com/ericsink/SQLitePCL.raw) from 2.1.0-pre20220318192836 to 2.1.0-pre20220427180151.
- [Release notes](https://github.com/ericsink/SQLitePCL.raw/releases)
- [Commits](https://github.com/ericsink/SQLitePCL.raw/commits)

---
updated-dependencies:
- dependency-name: SQLitePCLRaw.bundle_green
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-28 09:27:19 +08:00
dependabot[bot] de7ed70517 Bump Octokit from 0.50.0 to 0.51.0 (#1310)
Bumps [Octokit](https://github.com/octokit/octokit.net) from 0.50.0 to 0.51.0.
- [Release notes](https://github.com/octokit/octokit.net/releases)
- [Changelog](https://github.com/octokit/octokit.net/blob/main/docs/releases.md)
- [Commits](https://github.com/octokit/octokit.net/compare/v0.50.0...v0.51.0)

---
updated-dependencies:
- dependency-name: Octokit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-28 09:26:55 +08:00
dependabot[bot] b438164b52 Bump DynamicData from 7.6.7 to 7.7.1 (#1312)
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.6.7 to 7.7.1.
- [Release notes](https://github.com/reactiveui/DynamicData/releases)
- [Changelog](https://github.com/reactivemarbles/DynamicData/blob/main/ReleaseNotes.md)
- [Commits](https://github.com/reactiveui/DynamicData/compare/7.6.7...7.7.1)

---
updated-dependencies:
- dependency-name: DynamicData
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-28 09:26:40 +08:00
Aigio Liu f962d36894 优化 Skia ImmutableBitmap 构建 2022-04-28 02:11:06 +08:00
Aigio Liu 162a809840 Custom Skia ImmutableBitmap 2022-04-27 22:58:27 +08:00
Aigio Liu c1016614db fix
// System.ArgumentNullException:“Value cannot be null. Arg_ParamName_Name”
                // 在 SkiaSharp.SKManagedStream.OnReadManagedStream(IntPtr buffer, IntPtr size)
                // 在 SkiaSharp.SKManagedStream.OnRead(IntPtr buffer, IntPtr size)
                // 在 SkiaSharp.SKAbstractManagedStream.ReadInternal(IntPtr s, Void* context, Void* buffer, IntPtr size)
                // 在 SkiaSharp.SkiaApi.sk_codec_new_from_stream(IntPtr stream, SKCodecResult* result)
                // 在 SkiaSharp.SKCodec.Create(SKStream stream, SKCodecResult& result)
                // 在 SkiaSharp.SKCodec.Create(SKStream stream)
2022-04-27 22:03:52 +08:00
RMBGAME cad5ef60a9 Misc 2022-04-27 20:27:17 +08:00
Aigio Liu cb9d4b31e9 fix Android 两个退出登录按钮 & 第三方快速登录使用外部浏览器处理,删除 Microsoft.IdentityModel.Protocols 2022-04-27 19:52:20 +08:00
RMBGAME ff87958dc0 try fix mac crash 2022-04-27 19:20:14 +08:00
Mossimo 0306732eea Revert 2022-04-27 18:37:30 +08:00
Mossimo 727d429ca7 Revert "v2.7.0 rev.2"
This reverts commit 31f6c4c32c.
2022-04-27 18:22:25 +08:00
Aigio Liu 3a41b36bda Android Misc & SkiaSharp & HarfBuzzSharp preview.178 2022-04-27 18:09:45 +08:00
Aigio Liu 7776192c5a v2.7.1 rev.0 2022-04-27 17:13:25 +08:00
RMBGAME 97e3ebfc20 修复steam库存游戏在steam账号切换后自动刷新失败的问题
修复steam库存游戏编辑带有本地化名称的游戏无效的问题
2022-04-27 14:09:16 +08:00
dependabot[bot] 453334ded8 Bump Z.EntityFramework.Plus.EFCore from 6.13.17 to 6.13.18 (#1297)
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.13.17 to 6.13.18.
- [Release notes](https://github.com/zzzprojects/EntityFramework-Plus/releases)
- [Commits](https://github.com/zzzprojects/EntityFramework-Plus/commits)

---
updated-dependencies:
- dependency-name: Z.EntityFramework.Plus.EFCore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 09:25:19 +08:00
dependabot[bot]andAigio L b5d5bd0b53 Bump HarfBuzzSharp.NativeAssets.Linux (#1300)
Bumps [HarfBuzzSharp.NativeAssets.Linux](https://github.com/mono/SkiaSharp) from 2.8.2-preview.254 to 2.8.2-preview.256.
- [Release notes](https://github.com/mono/SkiaSharp/releases)
- [Commits](https://github.com/mono/SkiaSharp/commits)

---
updated-dependencies:
- dependency-name: HarfBuzzSharp.NativeAssets.Linux
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-04-27 09:25:10 +08:00
dependabot[bot] 7b5a06ba24 Bump HarfBuzzSharp from 2.8.2-preview.254 to 2.8.2-preview.256 (#1298)
Bumps [HarfBuzzSharp](https://github.com/mono/SkiaSharp) from 2.8.2-preview.254 to 2.8.2-preview.256.
- [Release notes](https://github.com/mono/SkiaSharp/releases)
- [Commits](https://github.com/mono/SkiaSharp/commits)

---
updated-dependencies:
- dependency-name: HarfBuzzSharp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 09:24:26 +08:00
dependabot[bot]andAigio L a65bd810a5 Bump SkiaSharp.NativeAssets.Linux (#1299)
Bumps [SkiaSharp.NativeAssets.Linux](https://github.com/mono/SkiaSharp) from 2.88.0-preview.254 to 2.88.0-preview.256.
- [Release notes](https://github.com/mono/SkiaSharp/releases)
- [Commits](https://github.com/mono/SkiaSharp/commits)

---
updated-dependencies:
- dependency-name: SkiaSharp.NativeAssets.Linux
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aigio L <24450093+AigioL@users.noreply.github.com>
2022-04-27 09:24:16 +08:00
dependabot[bot] 6b01cffc29 Bump SkiaSharp from 2.88.0-preview.254 to 2.88.0-preview.256 (#1302)
Bumps [SkiaSharp](https://github.com/mono/SkiaSharp) from 2.88.0-preview.254 to 2.88.0-preview.256.
- [Release notes](https://github.com/mono/SkiaSharp/releases)
- [Commits](https://github.com/mono/SkiaSharp/commits)

---
updated-dependencies:
- dependency-name: SkiaSharp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 09:23:37 +08:00
dependabot[bot] d10fc62a00 Bump NPOI from 2.5.5 to 2.5.6 (#1301)
Bumps [NPOI](https://github.com/nissl-lab/npoi) from 2.5.5 to 2.5.6.
- [Release notes](https://github.com/nissl-lab/npoi/releases)
- [Commits](https://github.com/nissl-lab/npoi/commits)

---
updated-dependencies:
- dependency-name: NPOI
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 09:22:45 +08:00
Aigio Liu 858af3f8b6 修复库存游戏中挂时长失效 2022-04-27 09:00:54 +08:00
Aigio Liu 3e8cb72c55 misc 2022-04-26 16:31:51 +08:00
1345 changed files with 77297 additions and 30051 deletions
+36 -9
View File
@@ -204,26 +204,26 @@ dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.类型.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.类型.required_modifiers =
dotnet_naming_symbols.类型.required_modifiers =
dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method
dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.非字段成员.required_modifiers =
dotnet_naming_symbols.非字段成员.required_modifiers =
# 命名样式
dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.required_prefix =
dotnet_naming_style.帕斯卡拼写法.required_suffix =
dotnet_naming_style.帕斯卡拼写法.word_separator =
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case
dotnet_naming_style.以_i_开始.required_prefix = I
dotnet_naming_style.以_i_开始.required_suffix =
dotnet_naming_style.以_i_开始.word_separator =
dotnet_naming_style.以_i_开始.required_suffix =
dotnet_naming_style.以_i_开始.word_separator =
dotnet_naming_style.以_i_开始.capitalization = pascal_case
# IDE0010: 添加缺失的事例
@@ -428,4 +428,31 @@ dotnet_diagnostic.SA1501.severity = silent
dotnet_diagnostic.SA1500.severity = silent
# SA1518: Use line endings correctly at end of file
dotnet_diagnostic.SA1518.severity = silent
dotnet_diagnostic.SA1518.severity = silent
# SA1118: Parameter should not span multiple lines
dotnet_diagnostic.SA1118.severity = silent
# SA1214: Readonly fields should appear before non-readonly fields
dotnet_diagnostic.SA1214.severity = silent
# SA1309: Field names should not begin with underscore
dotnet_diagnostic.SA1309.severity = silent
# SA1027: Use tabs correctly
dotnet_diagnostic.SA1027.severity = silent
# SA1306: Field names should begin with lower-case letter
dotnet_diagnostic.SA1306.severity = silent
# SA1643: Destructor summary documentation should begin with standard text
dotnet_diagnostic.SA1643.severity = silent
# SA1303: Const field names should begin with upper-case letter
dotnet_diagnostic.SA1303.severity = silent
# SA1300: Element should begin with upper-case letter
dotnet_diagnostic.SA1300.severity = silent
# SA1316: Tuple element names should use correct casing
dotnet_diagnostic.SA1316.severity = silent
+3 -1
View File
@@ -10,7 +10,9 @@ assignees: ''
### 🐛 描述(Description)
<!--
详细地描述 bug,让大家都能理解
发布前请先尝试在 Issuse 内搜索一下你的问题是否已经被提出过,
详细地描述 bug,让大家都能理解,请一定确定你所要发布的内容是一个 Bug,如果不确定请发 Question
Before posting, please try searching in Issuse to see if your question has already been asked,
Describe the bug in detail so that everyone can understand it
-->
+24 -3
View File
@@ -49,9 +49,14 @@ jobs:
if: matrix.os == 'windows-latest'
run: dotnet workload install android
# - name: Install Maui(Windows)
# if: matrix.os == 'windows-latest'
# run: dotnet workload install maui
- name: Install Maui(Windows)
if: matrix.os == 'windows-latest'
run: dotnet workload install maui
- name: Install Maui(Unix)
# if: ${{ matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest' }}
if: matrix.os == 'macOS-latest'
run: sudo dotnet workload install maui
- name: Verify dotnet info
run: dotnet --info
@@ -139,6 +144,22 @@ jobs:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_win_x64_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_win_x64_${{ env.GITHUB_SHA_SHORT }}.7z
- name: Upload fd-win-x86 App ${{ matrix.configuration }}
continue-on-error: true
if: ${{ matrix.os == 'windows-latest' && !startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' }}
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_win_x86_fde_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_win_x86_fde_${{ env.GITHUB_SHA_SHORT }}.7z
- name: Upload win-x86 App ${{ matrix.configuration }}
continue-on-error: true
if: ${{ matrix.os == 'windows-latest' && !startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' }}
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_win_x86_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_win_x86_${{ env.GITHUB_SHA_SHORT }}.7z
- name: Upload macos-x64 App ${{ matrix.configuration }}
continue-on-error: true
if: ${{ matrix.os == 'windows-latest' && !startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' }}
+51
View File
@@ -40,10 +40,23 @@ jobs:
if: matrix.os == 'windows-latest'
run: dotnet workload install macos
- name: Install Android SDK(Unix)
if: ${{ matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest' }}
run: sudo dotnet workload install android
- name: Install Android SDK(Windows)
if: matrix.os == 'windows-latest'
run: dotnet workload install android
- name: Install Maui(Windows)
if: matrix.os == 'windows-latest'
run: dotnet workload install maui
- name: Install Maui(Unix)
# if: ${{ matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest' }}
if: matrix.os == 'macOS-latest'
run: sudo dotnet workload install maui
- name: Verify dotnet info
run: dotnet --info
@@ -111,6 +124,7 @@ jobs:
run: .\packaging\build.ps1 -version ${{ steps.tag.outputs.tag }} -configuration ${{ env.Configuration }} -isPublish $true
env:
Token: ${{ secrets.PUBLISH_TOKEN }}
WIN_SIGN_PFX_PWD: ${{ secrets.WIN_SIGN_PFX_PWD }}
- name: Package fd-win-x64 7z
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
@@ -144,6 +158,38 @@ jobs:
Copy-Item ".\src\ST.Client.Desktop.Avalonia.App\bin\${env:Configuration}\Publish\${env:ProjectName}_win_x64_v${{ steps.tag.outputs.tag }}.exe" "${env:PublishFilePath}"
Write-Output "exe_win_x64_SHA256=$(.\packaging\SHA256.ps1 ${env:PublishFilePath}\${env:ProjectName}_win_x64_v${{ steps.tag.outputs.tag }}.exe)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Package fd-win-x86 7z
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
shell: pwsh
run: |
New-Item -ItemType Directory -Path ${env:PublishFilePath} -Force > $null
Copy-Item ".\src\ST.Client.Desktop.Avalonia.App\bin\${env:Configuration}\Publish\${env:ProjectName}_win_x86_fde_v${{ steps.tag.outputs.tag }}.7z" "${env:PublishFilePath}"
Write-Output "fd_win_x86_SHA256=$(.\packaging\SHA256.ps1 ${env:PublishFilePath}\${env:ProjectName}_win_x86_fde_v${{ steps.tag.outputs.tag }}.7z)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Package fd-win-x86 exe
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
shell: pwsh
run: |
New-Item -ItemType Directory -Path ${env:PublishFilePath} -Force > $null
Copy-Item ".\src\ST.Client.Desktop.Avalonia.App\bin\${env:Configuration}\Publish\${env:ProjectName}_win_x86_fde_v${{ steps.tag.outputs.tag }}.exe" "${env:PublishFilePath}"
Write-Output "exe_fd_win_x86_SHA256=$(.\packaging\SHA256.ps1 ${env:PublishFilePath}\${env:ProjectName}_win_x86_fde_v${{ steps.tag.outputs.tag }}.exe)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Package win-x86 7z
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
shell: pwsh
run: |
New-Item -ItemType Directory -Path ${env:PublishFilePath} -Force > $null
Copy-Item ".\src\ST.Client.Desktop.Avalonia.App\bin\${env:Configuration}\Publish\${env:ProjectName}_win_x86_v${{ steps.tag.outputs.tag }}.7z" "${env:PublishFilePath}"
Write-Output "win_x86_SHA256=$(.\packaging\SHA256.ps1 ${env:PublishFilePath}\${env:ProjectName}_win_x86_v${{ steps.tag.outputs.tag }}.7z)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Package win-x86 exe
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
shell: pwsh
run: |
New-Item -ItemType Directory -Path ${env:PublishFilePath} -Force > $null
Copy-Item ".\src\ST.Client.Desktop.Avalonia.App\bin\${env:Configuration}\Publish\${env:ProjectName}_win_x86_v${{ steps.tag.outputs.tag }}.exe" "${env:PublishFilePath}"
Write-Output "exe_win_x86_SHA256=$(.\packaging\SHA256.ps1 ${env:PublishFilePath}\${env:ProjectName}_win_x86_v${{ steps.tag.outputs.tag }}.exe)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Package osx-x64 7z
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
shell: pwsh
@@ -237,6 +283,11 @@ jobs:
| <sub>${{ env.ProjectName }}_win_x64_v${{ steps.tag.outputs.tag }}.exe</sub> | <sub>${{ env.exe_win_x64_SHA256 }}</sub> |
| <sub>${{ env.ProjectName }}_win_x64_fde_v${{ steps.tag.outputs.tag }}.exe</sub> | <sub>${{ env.exe_fd_win_x64_SHA256 }}</sub> |
|||
| <sub>${{ env.ProjectName }}_win_x86_v${{ steps.tag.outputs.tag }}.7z</sub> | <sub>${{ env.win_x86_SHA256 }}</sub> |
| <sub>${{ env.ProjectName }}_win_x86_fde_v${{ steps.tag.outputs.tag }}.7z</sub> | <sub>${{ env.fd_win_x86_SHA256 }}</sub> |
| <sub>${{ env.ProjectName }}_win_x86_v${{ steps.tag.outputs.tag }}.exe</sub> | <sub>${{ env.exe_win_x86_SHA256 }}</sub> |
| <sub>${{ env.ProjectName }}_win_x86_fde_v${{ steps.tag.outputs.tag }}.exe</sub> | <sub>${{ env.exe_fd_win_x86_SHA256 }}</sub> |
|||
| <sub>${{ env.ProjectName }}_linux_x64_v${{ steps.tag.outputs.tag }}.tar.zst</sub> | <sub>${{ env.linux_x64_SHA256 }}</sub> |
| <sub>${{ env.ProjectName }}_linux_arm64_v${{ steps.tag.outputs.tag }}.tar.zst</sub> | <sub>${{ env.linux_arm64_SHA256 }}</sub> |
| <sub>${{ env.ProjectName }}_linux_x64_v${{ steps.tag.outputs.tag }}.deb</sub> | <sub>${{ env.deb_linux_x64_SHA256 }}</sub> |
-49
View File
@@ -1,49 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31729.503
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Native", "src\Avalonia.Native\Avalonia.Native.csproj", "{6D1B84EF-D58A-41B1-A442-249FBA9720CD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Themes.Default", "src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj", "{61A4D91B-1C05-444C-B587-353BAA582DF3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Themes.Fluent", "src\Avalonia.Themes.Fluent\Avalonia.Themes.Fluent.csproj", "{690B15C0-F622-443E-B793-BDD6AF2DCDB2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Win32", "src\Avalonia.Win32\Avalonia.Win32.csproj", "{4A6AD260-611E-4106-8E91-16750DA76A75}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.X11", "src\Avalonia.X11\Avalonia.X11.csproj", "{7B75CDE0-3A5C-4433-A8AF-78431ED8B397}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6D1B84EF-D58A-41B1-A442-249FBA9720CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D1B84EF-D58A-41B1-A442-249FBA9720CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6D1B84EF-D58A-41B1-A442-249FBA9720CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D1B84EF-D58A-41B1-A442-249FBA9720CD}.Release|Any CPU.Build.0 = Release|Any CPU
{61A4D91B-1C05-444C-B587-353BAA582DF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{61A4D91B-1C05-444C-B587-353BAA582DF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{61A4D91B-1C05-444C-B587-353BAA582DF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{61A4D91B-1C05-444C-B587-353BAA582DF3}.Release|Any CPU.Build.0 = Release|Any CPU
{690B15C0-F622-443E-B793-BDD6AF2DCDB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{690B15C0-F622-443E-B793-BDD6AF2DCDB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{690B15C0-F622-443E-B793-BDD6AF2DCDB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{690B15C0-F622-443E-B793-BDD6AF2DCDB2}.Release|Any CPU.Build.0 = Release|Any CPU
{4A6AD260-611E-4106-8E91-16750DA76A75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A6AD260-611E-4106-8E91-16750DA76A75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A6AD260-611E-4106-8E91-16750DA76A75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A6AD260-611E-4106-8E91-16750DA76A75}.Release|Any CPU.Build.0 = Release|Any CPU
{7B75CDE0-3A5C-4433-A8AF-78431ED8B397}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B75CDE0-3A5C-4433-A8AF-78431ED8B397}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B75CDE0-3A5C-4433-A8AF-78431ED8B397}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B75CDE0-3A5C-4433-A8AF-78431ED8B397}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E3C313BF-6EBC-4070-99BC-C86656B6C8CE}
EndGlobalSection
EndGlobal
+2
View File
@@ -1,11 +1,13 @@
<Project>
<PropertyGroup>
<NoWarn>NU1507</NoWarn>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TrimMode>link</TrimMode>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
</PropertyGroup>
<PropertyGroup Condition=" Exists('$(MSBuildProjectDirectory)\..\..\Unicorn.snk') ">
+151 -139
View File
@@ -1,65 +1,48 @@
<Project>
<ItemGroup Condition=" $(TargetFramework.StartsWith('net6.0')) ">
<!-- Microsoft.Extensions.* & AspNetCore & EntityFrameworkCore(NET60) -->
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<!--<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />-->
<PackageVersion Include="Microsoft.Extensions.Http" Version="6.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="6.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="6.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.4" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('net5.0')) ">
<!-- Microsoft.Extensions.* & AspNetCore & EntityFrameworkCore(NET50) -->
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="5.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="5.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="5.0.16" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.16" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.14" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.16" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.16" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.16" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.16" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.16" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="5.0.16" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.16" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.16" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="6.0.7" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="6.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.7" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) Or $(TargetFramework.StartsWith('netcoreapp3.1'))">
<!-- Microsoft.Extensions.* & AspNetCore & EntityFrameworkCore(NETCOREAPP31) -->
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="3.1.24" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="3.1.24" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="3.1.24" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.24" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="3.1.24" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.24" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="3.1.24" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.24" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.24" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.24" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.24" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.24" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.24" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.24" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.24" />
<!--<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="3.1.27" />-->
<PackageVersion Include="Microsoft.Extensions.Http" Version="3.1.27" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="3.1.27" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.27" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="3.1.27" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="3.1.27" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.27" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="3.1.27" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.27" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.27" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.27" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.27" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.27" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.27" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.27" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.27" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('net6.0')) ">
<!-- Entity Framework Plus -->
<!-- A FREE & Open Source library to enhance EF6 and EF Core -->
<PackageVersion Include="Z.EntityFramework.Plus.EFCore" Version="6.13.17" />
<PackageVersion Include="Z.EntityFramework.Plus.EFCore" Version="6.14.3" />
<!-- AspNetCore 6 OpenId/OAuth -->
<PackageVersion Include="Microsoft.IdentityModel.Protocols" Version="6.17.0" />
<PackageVersion Include="AspNet.Security.OpenId.Steam" Version="6.0.0" />
<PackageVersion Include="AspNet.Security.OAuth.QQ" Version="6.0.6" />
<PackageVersion Include="AspNet.Security.OAuth.Apple" Version="6.0.6" />
@@ -85,88 +68,97 @@
<PackageVersion Include="System.Drawing.Common" Version="6.0.0" />
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" />
<PackageVersion Include="System.Buffers" Version="4.5.1" />
<PackageVersion Include="System.Memory" Version="4.5.4" />
<PackageVersion Include="System.Memory" Version="4.5.5" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
<PackageVersion Include="System.Diagnostics.Tracing" Version="4.3.0" />
</ItemGroup>
<ItemGroup>
<!-- Microsoft.* -->
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
<!--<PackageVersion Include="Microsoft.Windows.CsWinRT" Version="1.4.1" />-->
<!--<PackageVersion Include="Microsoft.Windows.SDK.NET.Ref" Version="10.0.19041.22" />-->
<!--<PackageVersion Include="Microsoft.Windows.SDK.Contracts" Version="10.0.19041.1" />-->
<PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22000.197" />
<PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.1" />
<PackageVersion Include="Microsoft.Extensions.Primitives" Version="6.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<!--<PackageVersion Include="CommunityToolkit.Mvvm" Version="7.1.2" />-->
<PackageVersion Include="System.Text.Encoding.CodePages" Version="6.0.0" />
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="6.0.1" />
<!-- AppCenter.* -->
<PackageVersion Include="Microsoft.AppCenter" Version="4.5.0" />
<PackageVersion Include="Microsoft.AppCenter.Analytics" Version="4.5.0" />
<PackageVersion Include="Microsoft.AppCenter.Crashes" Version="4.5.0" />
<PackageVersion Include="Aigio.Avalonia.AppCenter" Version="4.5.0" />
<PackageVersion Include="Aigio.Avalonia.AppCenter.Analytics" Version="4.5.0" />
<PackageVersion Include="Aigio.Avalonia.AppCenter.Crashes" Version="4.5.0" />
<PackageVersion Include="Microsoft.AppCenter" Version="4.5.1" />
<PackageVersion Include="Microsoft.AppCenter.Analytics" Version="4.5.1" />
<PackageVersion Include="Microsoft.AppCenter.Crashes" Version="4.5.1" />
<PackageVersion Include="Aigio.Avalonia.AppCenter" Version="4.5.1" />
<PackageVersion Include="Aigio.Avalonia.AppCenter.Analytics" Version="4.5.1" />
<PackageVersion Include="Aigio.Avalonia.AppCenter.Crashes" Version="4.5.1" />
<!--<PackageVersion Include="nor0x.AppCenter" Version="4.4.0-XMAC" />
<PackageVersion Include="nor0x.AppCenter.Analytics" Version="4.4.0-XMAC" />
<PackageVersion Include="nor0x.AppCenter.Crashes" Version="4.4.0-XMAC" />-->
<!-- .NET Platform Extensions 6 -->
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="6.0.0" />
<PackageVersion Include="System.Management" Version="6.0.0" />
<!-- Xamarin -->
<PackageVersion Include="Xamarin.Essentials" Version="1.7.2" />
<PackageVersion Include="Xamarin.Essentials" Version="1.7.3" />
<!-- Xamarin.Forms -->
<PackageVersion Include="Xamarin.Forms" Version="5.0.0.2401" />
<PackageVersion Include="Xamarin.Forms.Visual.Material" Version="5.0.0.2401" />
<PackageVersion Include="Xamarin.Forms" Version="5.0.0.2478" />
<PackageVersion Include="Xamarin.Forms.Visual.Material" Version="5.0.0.2478" />
<PackageVersion Include="Xam.Plugins.Forms.ImageCircle" Version="3.1.1.1-beta" />
<!-- NUnit & NUnit.Xamarin & Moq -->
<PackageVersion Include="NUnit" Version="3.13.3" />
<PackageVersion Include="NUnit3TestAdapter" Version="4.2.1" />
<PackageVersion Include="nunit.xamarin" Version="3.6.1" />
<PackageVersion Include="PCLStorage" Version="1.0.2" />
<PackageVersion Include="Moq" Version="4.17.2" />
<PackageVersion Include="Moq" Version="4.18.1" />
<!-- NLog -->
<PackageVersion Include="NLog" Version="4.7.15" />
<PackageVersion Include="NLog.Extensions.Logging" Version="1.7.4" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="4.14.0" />
<PackageVersion Include="AspNetCore2.NETStandard.NLog.Web.AspNetCore" Version="4.14.0" />
<PackageVersion Include="NLog" Version="5.0.1" />
<PackageVersion Include="NLog.Extensions.Logging" Version="5.0.1" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="5.1.0" />
<PackageVersion Include="AspNetCore2.NETStandard.NLog.Web.AspNetCore" Version="5.0.0" />
<!-- ReactiveUI -->
<PackageVersion Include="System.Reactive" Version="5.0.0" />
<PackageVersion Include="Splat" Version="14.2.8" />
<PackageVersion Include="DynamicData" Version="7.6.7" />
<PackageVersion Include="ReactiveUI" Version="18.0.7" />
<!--<PackageVersion Include="ReactiveUI.Fody" Version="17.1.50" /> -->
<PackageVersion Include="ReactiveUI.XamForms" Version="18.0.7" />
<PackageVersion Include="ReactiveUI.AndroidX" Version="18.0.7" />
<PackageVersion Include="Splat" Version="14.4.1" />
<PackageVersion Include="DynamicData" Version="7.9.7" />
<PackageVersion Include="ReactiveUI" Version="18.3.1" />
<PackageVersion Include="ReactiveUI.Fody" Version="18.3.1" />
<PackageVersion Include="ReactiveUI.XamForms" Version="18.3.1" />
<PackageVersion Include="ReactiveUI.AndroidX" Version="18.3.1" />
<PackageVersion Include="ReactiveUI.Maui" Version="18.3.1" />
<!-- SkiaSharp & HarfBuzzSharp -->
<PackageVersion Include="HarfBuzzSharp" Version="2.8.2-preview.254" />
<PackageVersion Include="HarfBuzzSharp.NativeAssets.Linux" Version="2.8.2-preview.254" />
<PackageVersion Include="SkiaSharp" Version="2.88.0-preview.254" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.0-preview.254" />
<!-- https://github.com/AvaloniaUI/Avalonia/blob/master/build/HarfBuzzSharp.props -->
<PackageVersion Include="HarfBuzzSharp" Version="2.8.2.1-preview.91" />
<PackageVersion Include="HarfBuzzSharp.NativeAssets.Linux" Version="2.8.2.1-preview.91" />
<!-- https://github.com/AvaloniaUI/Avalonia/blob/master/build/SkiaSharp.props -->
<PackageVersion Include="SkiaSharp" Version="2.88.1-preview.91" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.1-preview.91" />
<!-- AutoMapper -->
<PackageVersion Include="AutoMapper" Version="10.1.1" />
<PackageVersion Include="AutoMapper.Collection" Version="7.0.1" />
<PackageVersion Include="AutoMapper.Collection.EntityFrameworkCore" Version="7.1.3" />
<PackageVersion Include="AutoMapper.Extensions.ExpressionMapping" Version="4.1.5" />
<PackageVersion Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
<PackageVersion Include="AutoMapper" Version="11.0.1" />
<PackageVersion Include="AutoMapper.Collection" Version="8.0.0" />
<PackageVersion Include="AutoMapper.Collection.EntityFrameworkCore" Version="8.0.0" />
<PackageVersion Include="AutoMapper.Extensions.ExpressionMapping" Version="5.1.0" />
<PackageVersion Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
<!-- QRCode -->
<!--<PackageVersion Include="QRCoder" Version="1.4.2" />-->
<PackageVersion Include="Net.Codecrete.QrCodeGenerator" Version="2.0.1" />
<PackageVersion Include="Net.Codecrete.QrCodeGenerator" Version="2.0.3" />
<!-- NotifyIcon -->
<PackageVersion Include="NotifyIcon.Base" Version="1.0.5.1" />
<!--<PackageVersion Include="NotifyIcon.Linux" Version="1.0.5.1" />-->
<!--<PackageVersion Include="NotifyIcon.Mac" Version="1.0.5.1" />-->
<PackageVersion Include="NotifyIcon.Windows" Version="1.0.5.1" />
<!--<PackageVersion Include="GtkSharp" Version="3.24.24.34" />-->
<PackageVersion Include="NotifyIcon.Base" Version="1.1.0" />
<!--<PackageVersion Include="NotifyIcon.Linux" Version="1.1.0" />-->
<!--<PackageVersion Include="NotifyIcon.Mac" Version="1.1.0" />-->
<PackageVersion Include="NotifyIcon.Windows" Version="1.1.0" />
<!--<PackageVersion Include="GtkSharp" Version="3.24.24.38" />-->
<!-- Compression -->
<PackageVersion Include="SharpZipLib" Version="1.3.3" />
<PackageVersion Include="Squid-Box.SevenZipSharp.Lite" Version="1.5.0.366" />
<PackageVersion Include="7-Zip.NativeAssets.Win32" Version="21.7.0-preview.1" />
<PackageVersion Include="ZstdNet" Version="1.4.5" />
<!-- Algorithm -->
@@ -174,8 +166,8 @@
<PackageVersion Include="gfoidl.Base64" Version="1.1.1" />
<!--Command Line Tools-->
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta3.22114.1" />
<PackageVersion Include="System.CommandLine.NamingConventionBinder" Version="2.0.0-beta3.22114.1" />
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
<PackageVersion Include="System.CommandLine.NamingConventionBinder" Version="2.0.0-beta4.22272.1" />
<!-- Pinyin -->
<PackageVersion Include="TinyPinyin.Net" Version="1.0.2" />
@@ -185,39 +177,39 @@
<PackageVersion Include="TaskScheduler" Version="2.10.1" />
<!-- Swagger -->
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.3.1" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.3.1" />
<PackageVersion Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.3.1" />
<PackageVersion Include="AspNetCore2.NETStandard.Swashbuckle.AspNetCore" Version="6.3.0" />
<PackageVersion Include="AspNetCore2.NETStandard.Swashbuckle.AspNetCore.Annotations" Version="6.3.0" />
<PackageVersion Include="AspNetCore2.NETStandard.Swashbuckle.AspNetCore.Newtonsoft" Version="6.3.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.4.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.4.0" />
<PackageVersion Include="AspNetCore2.NETStandard.Swashbuckle.AspNetCore" Version="6.3.1" />
<PackageVersion Include="AspNetCore2.NETStandard.Swashbuckle.AspNetCore.Annotations" Version="6.3.1" />
<PackageVersion Include="AspNetCore2.NETStandard.Swashbuckle.AspNetCore.Newtonsoft" Version="6.3.1" />
<!-- Pay -->
<!--<PackageVersion Include="AlipaySDKNet.Standard" Version="4.6.109" />-->
<!-- Excel -->
<PackageVersion Include="NPOI" Version="2.5.5" />
<PackageVersion Include="NPOI" Version="2.5.6" />
<!-- Github API -->
<PackageVersion Include="Octokit" Version="0.50.0" />
<PackageVersion Include="Octokit" Version="1.0.0" />
<!-- ORM -->
<PackageVersion Include="sqlite-net-pcl" Version="1.8.116" />
<PackageVersion Include="SQLitePCLRaw.bundle_green" Version="2.1.0-pre20220318192836" />
<PackageVersion Include="SQLitePCLRaw.bundle_green" Version="2.1.0" />
<!-- MonoMac(NETSTANDARD) -->
<PackageVersion Include="MonoMac.NetStandard" Version="0.0.4" />
<!-- .NET Compat -->
<PackageVersion Include="OperatingSystem2" Version="1.4.3" />
<PackageVersion Include="JustArchiNET.Madness" Version="3.5.2" />
<PackageVersion Include="OperatingSystem2" Version="2.0.0" />
<PackageVersion Include="JustArchiNET.Madness" Version="3.7.0" />
<!-- Serialize -->
<PackageVersion Include="MessagePack" Version="2.3.85" />
<PackageVersion Include="MessagePack" Version="2.4.35" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
<!-- Html Parser -->
<PackageVersion Include="HtmlAgilityPack" Version="1.11.42" />
<PackageVersion Include="HtmlAgilityPack" Version="1.11.43" />
<!-- Clipboard -->
<PackageVersion Include="TextCopy" Version="6.1.0" />
@@ -235,7 +227,8 @@
<PackageVersion Include="Fleck" Version="1.2.0" />
<!-- DNS -->
<PackageVersion Include="DnsClient" Version="1.6.0" />
<PackageVersion Include="DnsClient" Version="1.6.1" />
<PackageVersion Include="DNS" Version="7.0.0" />
<!-- Cryptographic Algorithms & Protocols -->
<PackageVersion Include="Portable.BouncyCastle" Version="1.9.0" />
@@ -244,24 +237,30 @@
<PackageVersion Include="Polly" Version="7.2.3" />
<!--Avalonia Start-->
<PackageVersion Include="Avalonia" Version="0.10.13" />
<PackageVersion Include="Avalonia.Desktop" Version="0.10.13" />
<PackageVersion Include="Avalonia.Skia" Version="0.10.13" />
<PackageVersion Include="Avalonia.Diagnostics" Version="0.10.13" />
<PackageVersion Include="Avalonia.ReactiveUI" Version="0.10.13" />
<!--<PackageVersion Include="Avalonia.Direct2D1" Version="0.10.13" />-->
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="0.10.13" />
<PackageVersion Include="Avalonia.Xaml.Behaviors" Version="0.10.13.3" />
<PackageVersion Include="Avalonia" Version="0.10.17" />
<PackageVersion Include="Avalonia.Desktop" Version="0.10.17" />
<PackageVersion Include="Avalonia.Skia" Version="0.10.17" />
<PackageVersion Include="Avalonia.Diagnostics" Version="0.10.17" />
<PackageVersion Include="Avalonia.ReactiveUI" Version="0.10.17" />
<!--<PackageVersion Include="Avalonia.Direct2D1" Version="0.10.16" />-->
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="0.10.17" />
<PackageVersion Include="Avalonia.Xaml.Behaviors" Version="0.10.17" />
<!--<PackageVersion Include="Avalonia.AvaloniaEdit" Version="0.10.12.2" />-->
<!--<PackageVersion Include="CefNet.Avalonia" Version="93.1.21240.857" />-->
<!--<PackageVersion Include="LibVLCSharp.Avalonia" Version="3.5.1" />-->
<!--<PackageVersion Include="FluentAvaloniaUI" Version="1.3.0" />-->
<!--<PackageVersion Include="FluentAvaloniaUI" Version="1.4.1" />-->
<PackageVersion Include="LiveChartsCore.SkiaSharpView.Avalonia" Version="2.0.0-beta.330" />
<PackageVersion Include="JumpLists.Win32.Avalonia" Version="1.0.0" />
<PackageVersion Include="Avalonia.Native" Version="0.10.17" />
<PackageVersion Include="Avalonia.Win32" Version="0.10.17" />
<PackageVersion Include="Avalonia.X11" Version="0.10.17" />
<!--<PackageVersion Include="Avalonia.HtmlRenderer" Version="0.10.0" />-->
<PackageVersion Include="WebView2.Avalonia" Version="1.0.1264.42-preview.220713.10" />
<!--Avalonia End-->
<!-- Xamarin.Android -->
<PackageVersion Include="Xamarin.Build.Download" Version="0.11.1" />
<PackageVersion Include="Xamarin.Google.Dagger" Version="2.39.1" />
<PackageVersion Include="Xamarin.Build.Download" Version="0.11.2" />
<PackageVersion Include="Xamarin.Google.Dagger" Version="2.40.5" />
<PackageVersion Include="Xamarin.Google.MLKit.BarcodeScanning" Version="116.1.2.5" />
<PackageVersion Include="Plugin.CurrentActivity" Version="2.1.0.4" />
<PackageVersion Include="de.hdodenhof.circleimageview" Version="3.1.0.4" />
@@ -274,40 +273,53 @@
<!-- V2Ray -->
<PackageVersion Include="XAB.AndroidLibV2rayLite" Version="1.0.0.1" />
<!--<PackageVersion Include="Karamunting.KotlinX.Coroutines.Core" Version="1.4.2" />-->
<PackageVersion Include="Xamarin.KotlinX.Coroutines.Core" Version="1.6.0.1" />
<PackageVersion Include="Xamarin.KotlinX.Coroutines.Android" Version="1.6.0.1" />
<PackageVersion Include="Xamarin.Android.ReactiveX.RxJava3.RxJava" Version="3.1.4.1" />
<PackageVersion Include="Xamarin.KotlinX.Coroutines.Core" Version="1.6.2.1" />
<PackageVersion Include="Xamarin.KotlinX.Coroutines.Android" Version="1.6.2.1" />
<PackageVersion Include="Xamarin.Android.ReactiveX.RxJava3.RxJava" Version="3.1.5.1" />
<!-- Xamarin.AndroidX -->
<PackageVersion Include="Xamarin.AndroidX.Migration" Version="1.0.8" />
<PackageVersion Include="Xamarin.AndroidX.AppCompat" Version="1.4.1.1" />
<PackageVersion Include="Xamarin.AndroidX.Emoji.AppCompat" Version="1.1.0.8" />
<PackageVersion Include="Xamarin.AndroidX.Fragment" Version="1.4.1.1" />
<PackageVersion Include="Xamarin.AndroidX.RecyclerView" Version="1.2.1.6" />
<PackageVersion Include="Xamarin.Google.Android.Material" Version="1.5.0.2" />
<PackageVersion Include="Xamarin.AndroidX.SwipeRefreshLayout" Version="1.1.0.8" />
<PackageVersion Include="Xamarin.AndroidX.ConstraintLayout" Version="2.1.3.1" />
<PackageVersion Include="Xamarin.AndroidX.Navigation.UI" Version="2.4.1.1" />
<PackageVersion Include="Xamarin.AndroidX.Navigation.Fragment" Version="2.4.1.2" />
<PackageVersion Include="Xamarin.AndroidX.ViewPager2" Version="1.0.0.15" />
<PackageVersion Include="Xamarin.AndroidX.Activity" Version="1.4.0.2" />
<PackageVersion Include="Xamarin.AndroidX.Biometric" Version="1.1.0.9" />
<PackageVersion Include="Xamarin.AndroidX.ExifInterface" Version="1.3.3.5" />
<PackageVersion Include="Xamarin.AndroidX.Legacy.Support.Core.UI" Version="1.0.0.14" />
<PackageVersion Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.4.1.1" />
<PackageVersion Include="Xamarin.AndroidX.Camera.Camera2" Version="1.0.2.4" />
<PackageVersion Include="Xamarin.AndroidX.Camera.Lifecycle" Version="1.0.2.4" />
<PackageVersion Include="Xamarin.AndroidX.Camera.View" Version="1.0.0.5-alpha20" />
<!--<PackageVersion Include="Xamarin.AndroidX.Window" Version="1.0.0.3-beta02" />-->
<PackageVersion Include="Xamarin.AndroidX.Migration" Version="1.0.10" />
<PackageVersion Include="Xamarin.AndroidX.AppCompat" Version="1.4.2.1" />
<PackageVersion Include="Xamarin.AndroidX.Emoji.AppCompat" Version="1.1.0.9" />
<PackageVersion Include="Xamarin.AndroidX.Fragment" Version="1.4.1.2" />
<PackageVersion Include="Xamarin.AndroidX.RecyclerView" Version="1.2.1.7" />
<PackageVersion Include="Xamarin.Google.Android.Material" Version="1.6.1.1" />
<PackageVersion Include="Xamarin.AndroidX.SwipeRefreshLayout" Version="1.1.0.9" />
<PackageVersion Include="Xamarin.AndroidX.ConstraintLayout" Version="2.1.4.1" />
<PackageVersion Include="Xamarin.AndroidX.Navigation.UI" Version="2.4.2.1" />
<PackageVersion Include="Xamarin.AndroidX.Navigation.Fragment" Version="2.4.2.1" />
<PackageVersion Include="Xamarin.AndroidX.ViewPager2" Version="1.0.0.16" />
<PackageVersion Include="Xamarin.AndroidX.Activity" Version="1.4.0.4" />
<PackageVersion Include="Xamarin.AndroidX.Biometric" Version="1.1.0.10" />
<PackageVersion Include="Xamarin.AndroidX.ExifInterface" Version="1.3.3.6" />
<PackageVersion Include="Xamarin.AndroidX.Legacy.Support.Core.UI" Version="1.0.0.15" />
<PackageVersion Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.4.1.2" />
<PackageVersion Include="Xamarin.AndroidX.Camera.Camera2" Version="1.1.0-beta02" />
<PackageVersion Include="Xamarin.AndroidX.Camera.Lifecycle" Version="1.1.0-beta02" />
<PackageVersion Include="Xamarin.AndroidX.Camera.View" Version="1.1.0-beta02" />
<!--<PackageVersion Include="Xamarin.AndroidX.Window" Version="1.0.0.9" />-->
<PackageVersion Include="Xamarin.AndroidX.WebKit" Version="1.4.0.8" />
<!-- Xamarin.iOS -->
<PackageVersion Include="Toast.iOS" Version="1.2.0" />
<!-- UWP -->
<PackageVersion Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.2" />
<PackageVersion Include="Microsoft.WindowsAppSDK" Version="1.1.3" />
<!-- Code Style -->
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.406" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.435" />
<!-- Quartz -->
<PackageVersion Include="Quartz.AspNetCore" Version="3.4.0" />
<!-- Yet Another Reverse Proxy -->
<PackageVersion Include="Yarp.ReverseProxy" Version="1.1.1" />
<!-- WinDivert -->
<PackageVersion Include="Aigio.WinDivertSharp" Version="1.4.4.3" />
<!-- ArchiSteamFarm -->
<PackageVersion Include="ArchiSteamFarm.Library" Version="5.2.6.3-preview.220608" />
</ItemGroup>
</Project>
+38 -33
View File
@@ -1,10 +1,10 @@
<h1 align="center">Steam++ Tools 🧰</h1>
<h1 align="center">Watt Toolkit 🧰 (Former name Steam++)</h1>
<div align="center">
English | [简体中文](./README.md)
"Steam++" is an open source cross-platform multi-purpose game toolkit, most of its features require you to download and install Steam to use it.
"Watt Toolkit" is an open source cross-platform multi-purpose game toolkit, most of its features require you to download and install Steam to use it.
![Release Download](https://img.shields.io/github/downloads/rmbadmin/SteamTools/total?style=flat-square)
[![Release Version](https://img.shields.io/github/v/release/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/releases/latest)
@@ -24,45 +24,52 @@ English | [简体中文](./README.md)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FSteamTools-Team%2FSteamTools%2Fbadge%3Fref%3Ddevelop&style=flat-square)](https://actions-badge.atrox.dev/BeyondDimension/SteamTools/goto?ref=develop)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools.svg?style=social)](https://github.com/BeyondDimension/SteamTools)
[![Gitee Star](https://gitee.com/rmbgame/SteamTools/badge/star.svg)](https://gitee.com/rmbgame/SteamTools)
</div>
<div align="center"><img src="./resources/screenshots.en.jpg" /></div>
[![Kofi](https://img.shields.io/badge/Kofi-RMBGAME-orange.svg?style=flat-square&logo=kofi)](https://ko-fi.com/rmbgame)
[![Patreon](https://img.shields.io/badge/Patreon-RMBGAME-red.svg?style=flat-square&logo=patreon)](https://www.patreon.com/rmbgame)
[![Bilibili](https://img.shields.io/badge/bilibili-软妹币玩家-blue.svg?style=flat-square&logo=bilibili)](https://space.bilibili.com/797215)
<img src="./resources/screenshot-1.en.webp" width="800" />
<br/>
<br/>
<img src="./resources/screenshot-android.en.png" width="800" />
</div>
## 🚀 Download channel
- [GitHub Releases](https://github.com/BeyondDimension/SteamTools/releases)
- [Gitee Releases](https://gitee.com/rmbgame/SteamTools/releases)
- [Official WebSite](https://steampp.net)
- [Arch Linux Package](https://aur.archlinux.org/packages/steam%2B%2B-bin)(By [zhanghua000](https://github.com/zhanghua000))
- [![Microsoft Store](./resources/MSStore_English.png)](https://www.microsoft.com/store/apps/9MTCFHS560NG)
- [AUR](https://aur.archlinux.org/packages/watt-toolkit-bin)(Official Release)
- [AUR dev](https://aur.archlinux.org/packages/watt-toolkit-git)(Pull latest code and build locally, build maybe failed, also don't guarantee availability)
## ✨ Functions
1. Network Acceleration (Support Windows / Linux / macOS / Android)
- Make the Steam community, Github, Google reCAPTCHA, Pixiv, Discord, Twitch and other domestic hard-to-access pages accessible properly.
- Functions similar to [Steamcommunity 302](https://www.dogfight360.com/blog/686/), using [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy) open source project for local anti-generation.
2. Script Configuration (Windows / Linux / macOS Only)
- Some JS scripts are injected into web pages through an acceleration service that intercepts web requests, providing functionality similar to that of a web plugin.
3. Account Switch (Windows / Linux / macOS Only)
1. Account Switch <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" />
- Switch between Steam accounts that are already logged in on the current PC with one click, and manage features such as sorting your home shared library.
4. Inventory Management (Windows / Linux / macOS Only)
2. Inventory Management <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" />
- Lets you manage your Steam game inventory directly, not only by downloading older Steam games, but also by managing Steam game achievements directly, supporting unlocked achievements and unlocked achievements.
5. Local Authentication (Support Windows / Linux / macOS / Android)
3. Local Authentication <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" /> <img src="./resources/android-brands.svg" width="16" height="16" />
- Let your cell phone token unified save in the computer, currently only support Steam token, later will develop support more token types with cloud synchronization token.
6. ArchiSteamFarm (Support Windows / Linux / macOS / Android)
4. ArchiSteamFarm <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" /> <img src="./resources/android-brands.svg" width="16" height="16" />
- Integration with [ArchiSteamFarm](https://github.com/JustArchiNET/ArchiSteamFarm) provides functions such as hanging and dropping Steam Collectible Cards within the app.
7. Game Tools (Windows Only)
5. Game Tools <img src="./resources/windows-brands.svg" width="16" height="16" />
- Force game windows to use borderless windowing
<!--Prerequisites Microsoft Visual C++ 2015-2019 Redistributable [64 bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) / [32 bit](https://aka.ms/vs/16/release/vc_redist.x86.exe)-->
## 🖥 Supported Operating Systems
### Windows
OS | Version | Architectures | Lifecycle
--------------------------------------|-------------------------|-----------------|----------
[Windows Client][Windows-client] | 7 SP1(**\***), 8.1 | x64 | [Windows][Windows-lifecycle]
[Windows 10 Client][Windows-client] | Version 1607+(**\***) | x64 | [Windows][Windows-lifecycle]
[Windows Server][Windows-Server] | 2012+ | x64 | [Windows Server][Windows-Server-lifecycle]
OS | Version | Architectures | Lifecycle
--------------------------------------|----------------------------|-----------------|----------
[Windows Client][Windows-client] | 7 SP1(**\***), 8.1(**\***) | x64 | [Windows][Windows-lifecycle]
[Windows 10 Client][Windows-client] | Version 1607+(**\***) | x64 | [Windows][Windows-lifecycle]
[Windows 11][Windows-client] | Version 22000+ | x64, | [Windows][Windows-lifecycle]
[Windows Server][Windows-Server] | 2008 R2 SP1(**\***), 2012+ | x64 | [Windows Server][Windows-Server-lifecycle]
**\*** Windows 7 SP1 is supported with [Extended Security Updates](https://docs.microsoft.com/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq) installed.
**\*** Microsoft Store(Desktop Bridge) Version 1809+
**\*** Windows 7 SP1 must have [Extended Security Update](https://docs.microsoft.com/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq) installed and will be released after November 2022 is no longer supported.
**\*** Windows 8.1 will no longer be supported in versions released after November 2022.
**\*** Windows Server 2008 R2 SP1 must have [Extended Security Update](https://docs.microsoft.com/en-us/lifecycle/faq/extended-security-updates) installed and will be released after November 2022 is no longer supported.
**\*** Microsoft Store(Desktop Bridge) Version 1809+
[Windows-client]: https://www.microsoft.com/windows/
[Windows-lifecycle]: https://support.microsoft.com/help/13853/windows-lifecycle-fact-sheet
@@ -84,7 +91,7 @@ OS | Version | Architectures
[SUSE Enterprise Linux (SLES)][SLES] | 12 SP2+ | x64 | [SUSE][SLES-lifecycle]
[Ubuntu][Ubuntu] | 16.04, 18.04, 20.04+ | x64, Arm64 | [Ubuntu][Ubuntu-lifecycle]
[Deepin / UOS][Deepin] | 20+ | x64 | [Deepin][Deepin-lifecycle]
[Arch Linux][Arch] | | x64 |
[Arch Linux][Arch] | | x64, Arm64 |
[Alpine]: https://alpinelinux.org/
[Alpine-lifecycle]: https://wiki.alpinelinux.org/wiki/Alpine_Linux:Releases
@@ -148,8 +155,6 @@ OS | Version | Architectures |
## ⛔ Unsupported Operating System
- Windows 8
- [Due to Microsoft's official support for the product has ended](https://docs.microsoft.com/lifecycle/products/windows-8), so this program cannot run on this operating system, [It is recommended to upgrade to Windows 8.1](https://support.microsoft.com/windows/update-to-windows-8-1-from-windows-8-17fc54a7-a465-6b5a-c1a0-34140afd0669)
- Windows Server 2008 R2 SP1
- Only version 1.x is available, 2.x is not supported at first, and it is recommended to upgrade to a higher version
- Windows Server / Linux version without desktop GUI
- Xbox or Windows Mobile / Phone
@@ -159,7 +164,7 @@ Read what we [milestones](https://github.com/BeyondDimension/SteamTools/mileston
## ⌨️ Development Environment
[Visual Studio 2022](https://visualstudio.microsoft.com/vs/)
[JetBrains Rider](https://www.jetbrains.com/rider/)
~~[Visual Studio 2022 for Mac Preview](https://visualstudio.microsoft.com/zh-hans/vs/mac/preview/)~~
~~[Visual Studio 2022 for Mac](https://visualstudio.microsoft.com/zh-hans/vs/mac/preview/)~~
~~[Visual Studio Code](https://code.visualstudio.com/)~~
- Supported Operating Systems
- [Windows 10 Version 2004 Or Higher: Home, Professional, Education, and Enterprise (LTSC and S are not supported)](https://docs.microsoft.com/en-us/visualstudio/releases/2019/system-requirements)
@@ -168,17 +173,15 @@ Read what we [milestones](https://github.com/BeyondDimension/SteamTools/mileston
- Web and Cloud
- ASP.NET and Web Development
- Desktop and Mobile Applications
- Mobile Development using .Net
- .NET Desktop Development
- UWP Development
- Mobile Development using .Net
- Other Toolsets
- .NET Core Cross Platform Development
- Single Component
- GitHub Extension for Visual Studio
- GitHub Extension for Visual Studio(Optional)
- Windows 10 SDK (10.0.19041.0)
- [Visual Studio Marketplace](https://marketplace.visualstudio.com/)
- [Avalonia for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [NUnit VS Templates](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
- [Avalonia for Visual Studio(Optional)](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [NUnit VS Templates(Optional)](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
[OpenJDK 11](https://docs.microsoft.com/java/openjdk/download#openjdk-11)
[Android Studio 2021.1.1 Or Higher](https://developer.android.com/studio/)
@@ -193,6 +196,8 @@ Read what we [milestones](https://github.com/BeyondDimension/SteamTools/mileston
* [Hardcodet.NotifyIcon](https://github.com/HavenDV/Hardcodet.NotifyIcon.Wpf.NetCore)
* [System.Reactive](https://github.com/dotnet/reactive)
* [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy)
* [YARP](https://github.com/microsoft/reverse-proxy)
* [FastGithub](https://github.com/dotnetcore/FastGithub)
* [Portable.BouncyCastle](https://github.com/novotnyllc/bc-csharp)
* [Ninject](https://github.com/ninject/Ninject)
* [log4net](https://github.com/apache/logging-log4net)
@@ -265,4 +270,4 @@ Read what we [milestones](https://github.com/BeyondDimension/SteamTools/mileston
* [command-line-api](https://github.com/dotnet/command-line-api)
* [.NET Runtime](https://github.com/dotnet/runtime)
* [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons)
* [Material design icons](https://github.com/google/material-design-icons)
* [Material design icons](https://github.com/google/material-design-icons)
+52 -37
View File
@@ -1,10 +1,10 @@
<h1 align="center">Steam++ 工具箱 🧰</h1>
<h1 align="center">Watt Toolkit 🧰 (原名 Steam++)</h1>
<div align="center">
[English](./README.en.md) | 简体中文
「Steam++」是一个开源跨平台的多功能游戏工具箱,此工具的大部分功能都是需要您下载安装 Steam 才能使用。
「Watt Toolkit」是一个开源跨平台的多功能游戏工具箱,此工具的大部分功能都是需要您下载安装 Steam 才能使用。
![Release Download](https://img.shields.io/github/downloads/BeyondDimension/SteamTools/total?style=flat-square)
[![Release Version](https://img.shields.io/github/v/release/BeyondDimension/SteamTools?style=flat-square)](https://github.com/BeyondDimension/SteamTools/releases/latest)
@@ -22,49 +22,65 @@
[![BackManage WebSite](https://img.shields.io/badge/website@back_manage-Ant%20Design%20of%20Blazor-purple.svg?style=flat-square&color=512bd4)](https://github.com/ant-design-blazor/ant-design-blazor)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FSteamTools-Team%2FSteamTools%2Fbadge%3Fref%3Ddevelop&style=flat-square)](https://actions-badge.atrox.dev/BeyondDimension/SteamTools/goto?ref=develop)
[![GitHub Star](https://img.shields.io/github/stars/BeyondDimension/SteamTools.svg?style=social)](https://github.com/BeyondDimension/SteamTools)
[![GitHub Star](https://img.shields.io/github/stars/BeyondDimension/SteamTools.svg?logo=github)](https://github.com/BeyondDimension/SteamTools)
[![Gitee Star](https://gitee.com/rmbgame/SteamTools/badge/star.svg)](https://gitee.com/rmbgame/SteamTools)
[![QQ群](https://img.shields.io/badge/QQ群-960746023-blue.svg?style=flat-square&color=12b7f5)](https://jq.qq.com/?_wv=1027&k=3JKPt4xC)
</div>
<div align="center"><img src="./resources/screenshots.jpg" /></div>
[![爱发电](https://img.shields.io/badge/爱发电-软妹币玩家-blue.svg?style=flat-square&color=ea4aaa&logo=github-sponsors)](https://afdian.net/@rmbgame)
[![Kofi](https://img.shields.io/badge/Kofi-RMBGAME-orange.svg?style=flat-square&logo=kofi)](https://ko-fi.com/rmbgame)
[![Patreon](https://img.shields.io/badge/Patreon-RMBGAME-red.svg?style=flat-square&logo=patreon)](https://www.patreon.com/rmbgame)
[![Bilibili](https://img.shields.io/badge/bilibili-软妹币玩家-blue.svg?style=flat-square&logo=bilibili)](https://space.bilibili.com/797215)
[![QQ群](https://img.shields.io/badge/QQ群-960746023-blue.svg?style=flat-square&color=12b7f5&logo=qq)](https://jq.qq.com/?_wv=1027&k=3JKPt4xC)
<img src="./resources/screenshot-1.webp" width="800" />
<br/>
<br/>
<img src="./resources/screenshot-android.png" width="800" />
</div>
## 🚀 下载渠道
- [GitHub Releases](https://github.com/BeyondDimension/SteamTools/releases)
- [Gitee Releases](https://gitee.com/rmbgame/SteamTools/releases)
- [Official WebSite](https://steampp.net)
- [Arch Linux Package](https://aur.archlinux.org/packages/steam%2B%2B-bin)(By [zhanghua000](https://github.com/zhanghua000))
- [![Microsoft Store](./resources/MSStore_English.png)](https://www.microsoft.com/store/apps/9MTCFHS560NG)
- [AUR](https://aur.archlinux.org/packages/watt-toolkit-bin)(官方 Release 构建)
- [AUR dev](https://aur.archlinux.org/packages/watt-toolkit-git)(拉取最新源代码从本地构建,不保证可用性,构建也许会出现失败问题)
## ✨ 功能
1. 网络加速 (Support Windows / Linux / macOS / Android)
- 使 Steam 社区、Github、谷歌验证码、Pixiv、Discord、Twitch 等国内难以访问的网页正常访问。
- 功能类似 [Steamcommunity 302](https://www.dogfight360.com/blog/686/) ,使用 [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy) 开源项目进行本地反代。
2. 脚本配置 (Windows / Linux / macOS Only)
1. 网络加速 <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" /> <img src="./resources/android-brands.svg" width="16" height="16" />
- ~~使用 [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy) 开源项目进行本地反代来支持更快的访问游戏网站。~~
- 使用 [YARP.ReverseProxy](https://github.com/microsoft/reverse-proxy) 开源项目进行本地反代来支持更快的访问游戏网站。
2. 脚本配置 <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" />
- 通过加速服务拦截网络请求将一些 JS 脚本注入在网页中,提供类似网页插件的功能。
3. 账号切换 (Windows / Linux / macOS Only)
- 一键切换已在当前 PC 上登录过的 Steam 账号,与管理家庭共享库排序等功能。
4. 库存管理 (Windows / Linux / macOS Only)
- 让您直接管理到 Steam 游戏库存,不仅能够下载老版本的 Steam 游戏,也能够对 Steam 游戏成就进行直接管理,支持解锁成就以及反解锁成就。
5. 本地令牌 (Support Windows / Linux / macOS / Android)
3. 账号切换 <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" />
- 一键切换已在当前 PC 上登录过的 Steam 账号,与管理家庭共享库排序及禁用等功能。
4. 库存管理 <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" />
- 让您直接管理 Steam 游戏库存,可以编辑游戏名称和[自定义封面](https://www.steamgriddb.com/),也能解锁以及反解锁 Steam 游戏成就。
- 监控 Steam 游戏下载进度实现 Steam 游戏下载完成定时关机功能。
- 模拟运行 Steam 游戏,让您不用安装和下载对应的游戏也能挂游玩时间和 Steam 卡片
- 自助管理 Steam 游戏云存档,随时删除和上传自定义的存档文件至 Steam 云
5. 本地令牌 <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" /> <img src="./resources/android-brands.svg" width="16" height="16" />
- 让您的手机令牌统一保存在电脑中,目前仅支持 Steam 令牌,后续会开发支持更多的令牌种类与云同步令牌。
6. 自动挂卡 (Support Windows / Linux / macOS / Android)
6. 自动挂卡 <img src="./resources/windows-brands.svg" width="16" height="16" /> <img src="./resources/linux-brands.svg" width="16" height="16" /> <img src="./resources/apple-brands.svg" width="16" height="16" /> <img src="./resources/android-brands.svg" width="16" height="16" />
- 集成 [ArchiSteamFarm](https://github.com/JustArchiNET/ArchiSteamFarm) 在应用内提供 挂机掉落 Steam 集换式卡牌 等功能。
7. 游戏工具 (Windows Only)
- 强制游戏窗口使用无边框窗口化
7. 游戏工具 <img src="./resources/windows-brands.svg" width="16" height="16" />
- 强制游戏窗口使用无边框窗口化、更多功能待开发。
<!--发布配置SelfContained=true时会自动打包VC++相关程序集-->
<!--先决条件 Microsoft Visual C++ 2015-2019 Redistributable [64 位](https://aka.ms/vs/16/release/vc_redist.x64.exe) / [32 位](https://aka.ms/vs/16/release/vc_redist.x86.exe)-->
## 🖥 系统要求
### Windows
OS | Version | Architectures | Lifecycle
--------------------------------------|-------------------------|-----------------|----------
[Windows Client][Windows-client] | 7 SP1(**\***), 8.1 | x64 | [Windows][Windows-lifecycle]
[Windows 10 Client][Windows-client] | Version 1607+(**\***) | x64 | [Windows][Windows-lifecycle]
[Windows Server][Windows-Server] | 2012+ | x64 | [Windows Server][Windows-Server-lifecycle]
OS | Version | Architectures | Lifecycle
--------------------------------------|----------------------------|-----------------|----------
[Windows Client][Windows-client] | 7 SP1(**\***), 8.1(**\***) | x64 | [Windows][Windows-lifecycle]
[Windows 10 Client][Windows-client] | Version 1607+(**\***) | x64 | [Windows][Windows-lifecycle]
[Windows 11][Windows-client] | Version 22000+ | x64, | [Windows][Windows-lifecycle]
[Windows Server][Windows-Server] | 2008 R2 SP1(**\***), 2012+ | x64 | [Windows Server][Windows-Server-lifecycle]
**\*** Windows 7 SP1 is supported with [Extended Security Updates](https://docs.microsoft.com/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq) installed.
**\*** Microsoft Store(Desktop Bridge) Version 1809+
**\*** Windows 7 SP1 必须安装 [扩展安全更新 (ESU)](https://docs.microsoft.com/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq) 且将在不再支持 **2022/11** 后发布的版本。
**\*** Windows 8.1 将在不再支持 **2022/11** 后发布的版本。
**\*** Windows Server 2008 R2 SP1 必须安装 [扩展安全更新 (ESU)](https://docs.microsoft.com/zh-cn/lifecycle/faq/extended-security-updates) 且将在不再支持 **2022/11** 后发布的版本。
**\*** Microsoft Store(Desktop Bridge) Version 1809+
[Windows-client]: https://www.microsoft.com/windows/
[Windows-lifecycle]: https://support.microsoft.com/help/13853/windows-lifecycle-fact-sheet
@@ -86,7 +102,7 @@ OS | Version | Architectures
[SUSE Enterprise Linux (SLES)][SLES] | 12 SP2+ | x64 | [SUSE][SLES-lifecycle]
[Ubuntu][Ubuntu] | 16.04, 18.04, 20.04+ | x64, Arm64 | [Ubuntu][Ubuntu-lifecycle]
[Deepin / UOS][Deepin] | 20+ | x64 | [Deepin][Deepin-lifecycle]
[Arch Linux][Arch] | | x64 |
[Arch Linux][Arch] | | x64,Arm64 |
[Alpine]: https://alpinelinux.org/
[Alpine-lifecycle]: https://wiki.alpinelinux.org/wiki/Alpine_Linux:Releases
@@ -150,8 +166,6 @@ OS | Version | Architectures |
## ⛔ 不受支持的操作系统
- Windows 8
- [由于微软官方对该产品的支持已结束](https://docs.microsoft.com/zh-cn/lifecycle/products/windows-8),故本程序无法在此操作系统上运行,[建议升级到 Windows 8.1](https://support.microsoft.com/zh-cn/windows/%E4%BB%8E-windows-8-%E6%9B%B4%E6%96%B0%E5%88%B0-windows-8-1-17fc54a7-a465-6b5a-c1a0-34140afd0669)
- Windows Server 2008 R2 SP1
- 仅可使用 1.X 版本,2.X 开始不受支持,建议升级到更高版本
- 无桌面 GUI 的 Windows Server / Linux 版本
- Xbox or Windows Mobile / Phone
@@ -161,32 +175,31 @@ OS | Version | Architectures |
## ⌨️ 开发环境
[Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/vs/)
[JetBrains Rider](https://www.jetbrains.com/rider/)
~~[Visual Studio 2022 for Mac Preview](https://visualstudio.microsoft.com/zh-hans/vs/mac/)~~
~~[Visual Studio 2022 for Mac](https://visualstudio.microsoft.com/zh-hans/vs/mac/)~~
~~[Visual Studio Code](https://code.visualstudio.com/)~~
- 系统要求
- [Windows 10 版本 2004 或更高版本:家庭版、专业版、教育版和企业版(不支持 LTSC 和 Windows 10 S,在较早的操作系统上可能不受支持)](https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements)
- [macOS 10.14 Mojave 或更高版本](https://docs.microsoft.com/zh-cn/visualstudio/productinfo/vs2019-system-requirements-mac)
- 工作负载
- 工作负荷
- Web 和云
- ASP.NET 和 Web 开发
- 桌面应用和移动应用
- 使用 .NET 的移动开发 / .NET Multi-platform App UI 开发
- .NET 桌面开发
- 通用 Windows 平台开发
- 使用 .NET 的移动开发
- 其他工具集
- .NET Core 跨平台开发
- 单个组件
- GitHub Extension for Visual Studio
- GitHub Extension for Visual Studio(可选)
- Windows 10 SDK (10.0.19041.0)
- [Visual Studio Marketplace](https://marketplace.visualstudio.com/)
- [Avalonia for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [NUnit VS Templates](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
- [Avalonia for Visual Studio(可选)](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio)
- [NUnit VS Templates(可选)](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnitTemplatesforVisualStudio)
[OpenJDK 11](https://docs.microsoft.com/zh-cn/java/openjdk/download#openjdk-11)
[Android Studio 2021.1.1 或更高版本](https://developer.android.google.cn/studio/)
[Xcode 13 或更高版本](https://developer.apple.com/xcode/)
## 🏗️ [项目结构](./src/README.md)
详见 [./src/README.md](./src/README.md)
<!--
* [LibVLCSharp](https://github.com/videolan/libvlcsharp)
@@ -206,6 +219,8 @@ OS | Version | Architectures |
* [Hardcodet.NotifyIcon](https://github.com/HavenDV/Hardcodet.NotifyIcon.Wpf.NetCore)
* [System.Reactive](https://github.com/dotnet/reactive)
* [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy)
* [YARP](https://github.com/microsoft/reverse-proxy)
* [FastGithub](https://github.com/dotnetcore/FastGithub)
* [Portable.BouncyCastle](https://github.com/novotnyllc/bc-csharp)
* [Ninject](https://github.com/ninject/Ninject)
* [log4net](https://github.com/apache/logging-log4net)
-55
View File
@@ -1,55 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31005.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Blazor.BackManage.Server", "src\ST.Blazor.BackManage\Server\ST.Blazor.BackManage.Server.csproj", "{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Blazor.BackManage.Client", "src\ST.Blazor.BackManage\Client\ST.Blazor.BackManage.Client.csproj", "{AB1EB396-ABBE-4CEA-A650-950A68440391}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Root", "_Root", "{3449FCD6-B7EB-40DF-A76A-6E22A8FB3A2F}"
ProjectSection(SolutionItems) = preProject
src\ST.Blazor.BackManage\README.md = src\ST.Blazor.BackManage\README.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Debug|x64.ActiveCfg = Debug|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Debug|x64.Build.0 = Debug|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Debug|x86.ActiveCfg = Debug|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Debug|x86.Build.0 = Debug|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Release|Any CPU.Build.0 = Release|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Release|x64.ActiveCfg = Release|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Release|x64.Build.0 = Release|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Release|x86.ActiveCfg = Release|Any CPU
{7A8C458A-DF0B-4B20-BCBF-A433B6F6046A}.Release|x86.Build.0 = Release|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Debug|x64.ActiveCfg = Debug|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Debug|x64.Build.0 = Debug|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Debug|x86.ActiveCfg = Debug|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Debug|x86.Build.0 = Debug|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Release|Any CPU.Build.0 = Release|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Release|x64.ActiveCfg = Release|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Release|x64.Build.0 = Release|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Release|x86.ActiveCfg = Release|Any CPU
{AB1EB396-ABBE-4CEA-A650-950A68440391}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {10D95A49-D583-49CD-8224-15A402FBEE1D}
EndGlobalSection
EndGlobal
+2
View File
@@ -15,6 +15,8 @@
"src\\Avalonia.Themes.Fluent\\Avalonia.Themes.Fluent.csproj",
"src\\Avalonia.Win32\\Avalonia.Win32.csproj",
"src\\Avalonia.X11\\Avalonia.X11.csproj",
"src\\Avalonia.Desktop\\Avalonia.Desktop.csproj",
"src\\Avalonia.Skia.Internals\\Avalonia.Skia.Internals.csproj",
"src\\Common.AreaLib\\Common.AreaLib.csproj",
"src\\Common.ClientLib\\Common.ClientLib.csproj",
"src\\Common.CoreLib\\Common.CoreLib.csproj",
+2
View File
@@ -15,6 +15,8 @@
"src\\Avalonia.Themes.Fluent\\Avalonia.Themes.Fluent.csproj",
"src\\Avalonia.Win32\\Avalonia.Win32.csproj",
"src\\Avalonia.X11\\Avalonia.X11.csproj",
"src\\Avalonia.Desktop\\Avalonia.Desktop.csproj",
"src\\Avalonia.Skia.Internals\\Avalonia.Skia.Internals.csproj",
"src\\Common.AreaLib\\Common.AreaLib.csproj",
"src\\Common.ClientLib.iOS\\Common.ClientLib.iOS.csproj",
"src\\Common.ClientLib\\Common.ClientLib.csproj",
+607 -4
View File
@@ -14,7 +14,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Root", "_Root", "{66839CD8
download-guide.md = download-guide.md
global.json = global.json
packaging\Info.plist = packaging\Info.plist
nuget.config = nuget.config
packaging\package.net472.ps1 = packaging\package.net472.ps1
README.en.md = README.en.md
README.md = README.md
@@ -182,11 +181,49 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Android.ResSecret
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.ResSecrets", "src\ST.Client.ResSecrets\ST.Client.ResSecrets.csproj", "{089D4418-975B-455D-9AE1-B9DEC20FF4B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.iOS.ResSecrets", "src\ST.Client.iOS.ResSecrets\ST.Client.iOS.ResSecrets.csproj", "{872B65EB-E9DF-4357-B541-DD4A39B281A0}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.iOS.ResSecrets", "src\ST.Client.iOS.ResSecrets\ST.Client.iOS.ResSecrets.csproj", "{872B65EB-E9DF-4357-B541-DD4A39B281A0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.Mac.ResSecrets", "src\ST.Client.Mac.ResSecrets\ST.Client.Mac.ResSecrets.csproj", "{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mac.ResSecrets", "src\ST.Client.Mac.ResSecrets\ST.Client.Mac.ResSecrets.csproj", "{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.Windows.ResSecrets", "src\ST.Client.Windows.ResSecrets\ST.Client.Windows.ResSecrets.csproj", "{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Windows.ResSecrets", "src\ST.Client.Windows.ResSecrets\ST.Client.Windows.ResSecrets.csproj", "{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Desktop", "src\Avalonia.Desktop\Avalonia.Desktop.csproj", "{FA9F0E89-E410-400A-86F3-C603E51E62A8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Avalonia.App.MsixPackage", "src\ST.Client.Desktop.Avalonia.App.Bridge2\ST.Client.Avalonia.App.MsixPackage.csproj", "{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FDELauncher", "src\FDELauncher\FDELauncher.csproj", "{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Net.Http.Headers", "src\Microsoft.Net.Http.Headers\Microsoft.Net.Http.Headers.csproj", "{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Maui.App", "src\ST.Client.Maui.App\ST.Client.Maui.App.csproj", "{73A9AB65-AF95-4F27-98E2-B3296F9BC198}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Maui", "src\ST.Client.Maui\ST.Client.Maui.csproj", "{48417EE3-BACB-4E04-B48D-B3781862AD81}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Essentials", "src\Common.Essentials\Common.Essentials.csproj", "{41434AB5-48C3-47D4-8721-D118D87F472B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Essentials.Xamarin", "src\Common.Essentials.Xamarin\Common.Essentials.Xamarin.csproj", "{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Essentials.Maui", "src\Common.Essentials.Maui\Common.Essentials.Maui.csproj", "{5C440EC2-9251-4DB5-A14E-68FF37814F12}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.CommandLine", "src\ST.Client.CommandLine\ST.Client.CommandLine.csproj", "{1891DD14-628D-4921-8A1E-279320312E95}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.AppCenter", "src\ST.Client.AppCenter\ST.Client.AppCenter.csproj", "{3381B512-7CCB-4211-87B0-273260531BFC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.AppCenter.Avalonia", "src\ST.Client.AppCenter.Avalonia\ST.Client.AppCenter.Avalonia.csproj", "{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.JumpList", "src\ST.Client.JumpList\ST.Client.JumpList.csproj", "{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.JumpList.Avalonia", "src\ST.Client.JumpList.Avalonia\ST.Client.JumpList.Avalonia.csproj", "{F7938AFB-0573-47A9-BB99-F1D0501466D2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.ReverseProxy", "src\ST.Client.ReverseProxy\ST.Client.ReverseProxy.csproj", "{3F394239-07BF-4FE6-861F-240355D15E3B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.ReverseProxy.Titanium", "src\ST.Client.ReverseProxy.Titanium\ST.Client.ReverseProxy.Titanium.csproj", "{92DEBBE5-FF82-4251-ABC6-75FF285E7149}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.ReverseProxy.Yarp", "src\ST.Client.ReverseProxy.Yarp\ST.Client.ReverseProxy.Yarp.csproj", "{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Windows.ScheduledTasks", "src\ST.Client.Windows.ScheduledTasks\ST.Client.Windows.ScheduledTasks.csproj", "{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.WebView2", "src\Avalonia.WebView2\Avalonia.WebView2.csproj", "{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -1902,6 +1939,7 @@ Global
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|x86.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|ARM.ActiveCfg = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|ARM.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|ARM64.ActiveCfg = Debug|Any CPU
@@ -1916,6 +1954,7 @@ Global
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|x86.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|Any CPU.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|Any CPU.Deploy.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|ARM.ActiveCfg = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|ARM.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|ARM64.ActiveCfg = Release|Any CPU
@@ -2068,6 +2107,554 @@ Global
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|x64.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|x86.ActiveCfg = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|x86.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|ARM.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|ARM.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|ARM64.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|iPhone.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|x64.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|x64.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|x86.ActiveCfg = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Debug|x86.Build.0 = Debug|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|Any CPU.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|ARM.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|ARM.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|ARM64.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|ARM64.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|iPhone.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|iPhone.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|x64.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|x64.Build.0 = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|x86.ActiveCfg = Release|Any CPU
{FA9F0E89-E410-400A-86F3-C603E51E62A8}.Release|x86.Build.0 = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|Any CPU.ActiveCfg = Debug|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|Any CPU.Build.0 = Debug|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|ARM.Build.0 = Debug|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|ARM64.ActiveCfg = Debug|arm64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|ARM64.Build.0 = Debug|arm64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|iPhone.Build.0 = Debug|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|x64.ActiveCfg = Debug|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|x64.Build.0 = Debug|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|x64.Deploy.0 = Debug|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|x86.ActiveCfg = Debug|x86
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Debug|x86.Build.0 = Debug|x86
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|Any CPU.ActiveCfg = Release|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|Any CPU.Build.0 = Release|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|ARM.ActiveCfg = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|ARM.Build.0 = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|ARM64.ActiveCfg = Release|arm64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|ARM64.Build.0 = Release|arm64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|iPhone.ActiveCfg = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|iPhone.Build.0 = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|x64.ActiveCfg = Release|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|x64.Build.0 = Release|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|x64.Deploy.0 = Release|x64
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|x86.ActiveCfg = Release|x86
{7E7C34F0-1391-473C-8A1C-CE3EAF5D66DB}.Release|x86.Build.0 = Release|x86
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|ARM.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|ARM64.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|iPhone.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|x64.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|x64.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Debug|x86.Build.0 = Debug|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|Any CPU.Build.0 = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|ARM.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|ARM.Build.0 = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|ARM64.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|ARM64.Build.0 = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|iPhone.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|iPhone.Build.0 = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|x64.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|x64.Build.0 = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|x86.ActiveCfg = Release|Any CPU
{7AAA8A01-A4FE-49AD-9664-AC53C4C8EAC6}.Release|x86.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|ARM.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|ARM64.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|iPhone.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|x64.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|x64.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|x86.ActiveCfg = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Debug|x86.Build.0 = Debug|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|Any CPU.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|ARM.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|ARM.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|ARM64.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|ARM64.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|iPhone.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|iPhone.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|x64.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|x64.Build.0 = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|x86.ActiveCfg = Release|Any CPU
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0}.Release|x86.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|ARM.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|ARM.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|ARM.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|ARM64.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|iPhone.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|x64.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|x64.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|x64.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|x86.ActiveCfg = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|x86.Build.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Debug|x86.Deploy.0 = Debug|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|Any CPU.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|Any CPU.Deploy.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|ARM.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|ARM.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|ARM.Deploy.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|ARM64.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|ARM64.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|ARM64.Deploy.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|iPhone.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|iPhone.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|iPhone.Deploy.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|x64.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|x64.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|x64.Deploy.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|x86.ActiveCfg = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|x86.Build.0 = Release|Any CPU
{73A9AB65-AF95-4F27-98E2-B3296F9BC198}.Release|x86.Deploy.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|ARM.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|ARM.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|ARM64.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|iPhone.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|x64.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|x64.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|x86.ActiveCfg = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Debug|x86.Build.0 = Debug|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|Any CPU.Build.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|ARM.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|ARM.Build.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|ARM64.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|ARM64.Build.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|iPhone.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|iPhone.Build.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|x64.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|x64.Build.0 = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|x86.ActiveCfg = Release|Any CPU
{48417EE3-BACB-4E04-B48D-B3781862AD81}.Release|x86.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|ARM.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|ARM.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|ARM64.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|iPhone.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|x64.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|x64.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|x86.ActiveCfg = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Debug|x86.Build.0 = Debug|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|Any CPU.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|ARM.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|ARM.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|ARM64.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|ARM64.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|iPhone.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|iPhone.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|x64.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|x64.Build.0 = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|x86.ActiveCfg = Release|Any CPU
{41434AB5-48C3-47D4-8721-D118D87F472B}.Release|x86.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|ARM.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|ARM.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|ARM64.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|iPhone.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|x64.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|x64.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|x86.ActiveCfg = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Debug|x86.Build.0 = Debug|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|Any CPU.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|ARM.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|ARM.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|ARM64.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|ARM64.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|iPhone.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|iPhone.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|x64.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|x64.Build.0 = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|x86.ActiveCfg = Release|Any CPU
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526}.Release|x86.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|ARM.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|ARM.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|ARM64.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|iPhone.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|x64.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|x64.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Debug|x86.Build.0 = Debug|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|Any CPU.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|ARM.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|ARM.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|ARM64.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|ARM64.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|iPhone.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|iPhone.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|x64.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|x64.Build.0 = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|x86.ActiveCfg = Release|Any CPU
{5C440EC2-9251-4DB5-A14E-68FF37814F12}.Release|x86.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|ARM.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|ARM64.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|iPhone.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|x64.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|x64.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|x86.ActiveCfg = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Debug|x86.Build.0 = Debug|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|Any CPU.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|ARM.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|ARM.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|ARM64.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|ARM64.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|iPhone.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|iPhone.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|x64.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|x64.Build.0 = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|x86.ActiveCfg = Release|Any CPU
{1891DD14-628D-4921-8A1E-279320312E95}.Release|x86.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|ARM.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|ARM64.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|iPhone.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|x64.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|x64.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|x86.ActiveCfg = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Debug|x86.Build.0 = Debug|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|Any CPU.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|ARM.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|ARM.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|ARM64.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|ARM64.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|iPhone.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|iPhone.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|x64.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|x64.Build.0 = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|x86.ActiveCfg = Release|Any CPU
{3381B512-7CCB-4211-87B0-273260531BFC}.Release|x86.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|ARM.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|ARM64.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|iPhone.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|x64.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|x64.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|x86.ActiveCfg = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Debug|x86.Build.0 = Debug|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|Any CPU.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|ARM.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|ARM.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|ARM64.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|ARM64.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|iPhone.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|iPhone.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|x64.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|x64.Build.0 = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|x86.ActiveCfg = Release|Any CPU
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D}.Release|x86.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|ARM.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|ARM.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|ARM64.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|iPhone.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|x64.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|x64.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|x86.ActiveCfg = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Debug|x86.Build.0 = Debug|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|Any CPU.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|ARM.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|ARM.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|ARM64.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|ARM64.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|iPhone.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|iPhone.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|x64.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|x64.Build.0 = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|x86.ActiveCfg = Release|Any CPU
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198}.Release|x86.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|ARM.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|ARM64.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|iPhone.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|x64.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|x64.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|x86.ActiveCfg = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Debug|x86.Build.0 = Debug|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|Any CPU.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|ARM.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|ARM.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|ARM64.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|ARM64.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|iPhone.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|iPhone.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|x64.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|x64.Build.0 = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|x86.ActiveCfg = Release|Any CPU
{F7938AFB-0573-47A9-BB99-F1D0501466D2}.Release|x86.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|ARM.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|ARM64.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|iPhone.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|x64.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|x64.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|x86.ActiveCfg = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Debug|x86.Build.0 = Debug|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|Any CPU.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|ARM.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|ARM.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|ARM64.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|ARM64.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|iPhone.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|iPhone.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|x64.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|x64.Build.0 = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|x86.ActiveCfg = Release|Any CPU
{3F394239-07BF-4FE6-861F-240355D15E3B}.Release|x86.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|ARM.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|ARM.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|ARM64.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|iPhone.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|x64.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|x64.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|x86.ActiveCfg = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Debug|x86.Build.0 = Debug|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|Any CPU.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|ARM.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|ARM.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|ARM64.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|ARM64.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|iPhone.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|iPhone.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|x64.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|x64.Build.0 = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|x86.ActiveCfg = Release|Any CPU
{92DEBBE5-FF82-4251-ABC6-75FF285E7149}.Release|x86.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|ARM.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|ARM64.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|iPhone.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|x64.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|x64.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|x86.ActiveCfg = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Debug|x86.Build.0 = Debug|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|Any CPU.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|ARM.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|ARM.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|ARM64.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|ARM64.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|iPhone.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|iPhone.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|x64.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|x64.Build.0 = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|x86.ActiveCfg = Release|Any CPU
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42}.Release|x86.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|ARM.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|ARM64.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|iPhone.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|x64.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|x64.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|x86.ActiveCfg = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Debug|x86.Build.0 = Debug|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|Any CPU.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|ARM.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|ARM.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|ARM64.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|ARM64.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|iPhone.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|iPhone.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x64.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x64.Build.0 = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x86.ActiveCfg = Release|Any CPU
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81}.Release|x86.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|ARM64.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhone.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x64.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x64.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x86.ActiveCfg = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Debug|x86.Build.0 = Debug|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|Any CPU.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM64.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|ARM64.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhone.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhone.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x64.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x64.Build.0 = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x86.ActiveCfg = Release|Any CPU
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -2141,6 +2728,22 @@ Global
{872B65EB-E9DF-4357-B541-DD4A39B281A0} = {17667B53-1A09-45A6-855A-0F07F9AE044F}
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C} = {17667B53-1A09-45A6-855A-0F07F9AE044F}
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E} = {17667B53-1A09-45A6-855A-0F07F9AE044F}
{FA9F0E89-E410-400A-86F3-C603E51E62A8} = {910D6A0F-42AB-4B65-B532-852E864EC006}
{C7F109B9-EA88-4B7E-ADB5-D6407686ADE0} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{48417EE3-BACB-4E04-B48D-B3781862AD81} = {8E38AAF2-8C7D-4B0D-AB25-AB37EECB4029}
{41434AB5-48C3-47D4-8721-D118D87F472B} = {83186945-EC14-4B3F-8C6F-B205AA184CA4}
{07C9AC06-5D84-41AB-A3C9-5C5B1A27F526} = {83186945-EC14-4B3F-8C6F-B205AA184CA4}
{5C440EC2-9251-4DB5-A14E-68FF37814F12} = {83186945-EC14-4B3F-8C6F-B205AA184CA4}
{1891DD14-628D-4921-8A1E-279320312E95} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{3381B512-7CCB-4211-87B0-273260531BFC} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{CCB0CAEB-FEFC-4424-B6F4-53D3BB70154D} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{59E25DF3-C8D0-484E-BFD0-637FE5CBC198} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{F7938AFB-0573-47A9-BB99-F1D0501466D2} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{3F394239-07BF-4FE6-861F-240355D15E3B} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{92DEBBE5-FF82-4251-ABC6-75FF285E7149} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{D8ED7A17-D693-45FF-B75A-D9B12DAB5A42} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{0EEA90D8-FAB7-48C9-8C15-1E61AEF8AB81} = {E50441E8-75F3-406E-9921-30BFC211B5CE}
{8C996C50-B29F-4CB6-90A7-77C9CD3B0B70} = {910D6A0F-42AB-4B65-B532-852E864EC006}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
RESX_NeutralResourcesLanguage = zh-Hans
+8
View File
@@ -0,0 +1,8 @@
<Project>
<PropertyGroup>
<DefineConstants>WINDOWS;$(DefineConstants)</DefineConstants>
<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>
<!-- https://www.nuget.org/packages/Microsoft.Windows.SDK.NET.Ref -->
<WindowsSdkPackageVersion>10.0.19041.26</WindowsSdkPackageVersion>
</PropertyGroup>
</Project>
+12 -7
View File
@@ -1,13 +1,18 @@
# 下载指南
- Desktop(桌面端)
- Windows
- 如果你使用 Intel、AMD 的 x64(x86-64) 芯片的 PC,则下载文件名中带有 **win_x64** 的文件
- 如果你 **已安装** 了 [ASP.NET Core 运行时 6.0.4](https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0) 则下载文件名中带有 **fde(框架依赖)** 的文件
- 注意:是 《ASP.NET Core 运行时》 而不是 《.NET 桌面运行时》
- [在 Windows 上安装 .NET](https://docs.microsoft.com/zh-cn/dotnet/core/install/windows)
- 本程序在 Windows 上不需要 Hosting Bundle 和 IIS support
- [下载安装程序并手动安装(aspnetcore-runtime-6.0.4-win-x64.exe)](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-6.0.4-windows-x64-installer)
- [使用 PowerShell 自动化安装](https://docs.microsoft.com/zh-cn/dotnet/core/install/windows?tabs=net60#install-with-powershell-automation)
- 如果你使用 Intel、AMD 的 x64(x86-64/AMD64) 芯片的 PC,则下载文件名中带有 **win_x64** 的文件
- **框架依赖版(framework-dependent executable / fde)**
- 需要 **《ASP.NET Core 运行时 6.0.x》** 与 **《.NET 运行时 6.0.x》**,如果你 **已安装** 了相关运行时,则下载文件名中带有 **fde** 的文件,可减少本应用占用的磁盘空间
- 如果你 **未安装相关运行时则应下载文件名中不包含 fde 的文件**,或在 [此下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0) 最新的 6.0.x 运行时
- 在网页上点击 安装程序 x64 的链接即可下载,通常下载的文件名如下,将其安装后即可,无安装顺序要求
- dotnet-runtime-6.0.x-win-x64.exe (.NET 运行时 6.0.x)
- aspnetcore-runtime-6.0.x-win-x64.exe (ASP.NET Core 运行时 6.0.x)
- 其他也包含了所需的运行时的下载项,但不推荐仅为运行本应用而安装
- Hosting Bundle 还包含了本应用不需要的 IIS 运行时支持 (ASP.NET Core Module v2) 与 x86 的多个运行库
- SDK 包含了较多不需要的内容
- macOS
- 如果你使用 Intel 的 x64(x86-64) 芯片的 Mac,则下载文件名中带有 **macos_x64** 的文件
- 如果你使用 ARM64(Apple Silicon) 芯片的 Mac,例如 **Apple M1**,则下载文件名中带有 **macos_arm64** 的文件
+1 -5
View File
@@ -1,9 +1,5 @@
{
"msbuild-sdks": {
"MSBuild.Sdk.Extras": "3.0.44",
"Xamarin.Legacy.Sdk": "0.1.2-alpha6"
},
"sdk": {
"version": "6.0.202"
"MSBuild.Sdk.Extras": "3.0.44"
}
}
-7
View File
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="dotnet-experimental" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json" />
<add key="AvaloniaCI" value="https://nuget.avaloniaui.net/repository/avalonia-all/index.json" />
</packageSources>
</configuration>
+3 -3
View File
@@ -3,13 +3,13 @@
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>Steam++</string>
<string>Watt Toolkit</string>
<key>CFBundleIdentifier</key>
<string>net.steampp.app</string>
<key>CFBundleShortVersionString</key>
<string>2.7.0</string>
<string>2.8.0</string>
<key>CFBundleVersion</key>
<string>2.7.0.0</string>
<string>2.8.0.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>CFBundleDevelopmentRegion</key>
+2 -2
View File
@@ -11,7 +11,7 @@ $proj_path = "$RootPath\src\ST.Client.Desktop.Avalonia.App\ST.Client.Avalonia.Ap
$publishtool_dir = "$RootPath\src\ST.Tools.Publish"
$publishtool_exe = "$publishtool_dir\bin\Release\net6.0\p.exe"
$build_pubxmls = "fd-win-x64","win-x64","osx-x64","linux-x64","linux-arm64","osx-arm64"
$build_pubxmls = "fd-win-x64","win-x64","fd-win-x86","win-x86","osx-x64","linux-x64","linux-arm64","osx-arm64"
function Build-PublishTool
{
@@ -37,7 +37,7 @@ function Build-PublishTool
Build-App $pubxml
}
& $publishtool_exe full -token $('"')$env:Token$('"') $dev
& $publishtool_exe full -token $('"')$env:Token$('"') $dev -win_sign_pfx_pwd $('"')$env:WIN_SIGN_PFX_PWD('"')
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
BIN
View File
Binary file not shown.
Binary file not shown.
-7
View File
@@ -1,7 +0,0 @@
# ARM64(Windows/macOS/Linux) Native Library
## 7z.dll
21.07 (2021-12-26) by https://www.7-zip.org
## libe_sqlite3.dylib
sqlitepclraw.lib.e_sqlite3.2.0.7.nupkg
Binary file not shown.
-45
View File
@@ -1,45 +0,0 @@
// https://github.com/NLog/NLog/blob/v4.7.10/src/NLog/LogManager.cs
using NLog;
using NLog.Config;
using System;
namespace ArchiSteamFarm
{
public static class LogManager
{
static readonly LogFactory factory = new();
[CLSCompliant(false)]
public static Logger GetLogger(string name)
{
return factory.GetLogger(name);
}
public static void Flush()
{
factory.Flush();
}
public static void ReconfigExistingLoggers()
{
factory.ReconfigExistingLoggers();
}
public static LoggingConfiguration Configuration
{
get => factory.Configuration;
set => factory.Configuration = value;
}
public static event EventHandler<LoggingConfigurationChangedEventArgs> ConfigurationChanged
{
add => factory.ConfigurationChanged += value;
remove => factory.ConfigurationChanged -= value;
}
public static void Shutdown()
{
factory.Shutdown();
}
}
}
-91
View File
@@ -1,91 +0,0 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
namespace ArchiSteamFarm
{
public static class ASFPathHelper
{
static readonly Lazy<string> _AppDataDirectory = new(() =>
{
var path = Path.Combine(IOPath.AppDataDirectory, "ASF");
IOPath.DirCreateByNotExists(path);
return path;
});
/// <summary>
/// <list type="bullet">
/// <item>
/// AppData\ASF\config
/// </item>
/// <item>
/// AppData\ASF\plugins
/// </item>
/// </list>
/// </summary>
public static string AppDataDirectory => _AppDataDirectory.Value;
/// <summary>
/// <list type="bullet">
/// <item>
/// Windows:Logs\ASF
/// </item>
/// <item>
/// Windows Desktop Bridge:{CacheDirectory}\Logs\ASF
/// </item>
/// </list>
/// </summary>
/// <param name="logDirPath"></param>
/// <returns></returns>
public static string GetLogDirectory([NotNull] string logDirPath)
{
var path = (logDirPath.EndsWith(Path.DirectorySeparatorChar) ? logDirPath : logDirPath + Path.DirectorySeparatorChar) + "ASF";
IOPath.DirCreateByNotExists(path);
return path;
}
public static string GetNLogArchiveFileName([NotNull] string logDirectory)
{
var path = logDirectory + Path.DirectorySeparatorChar + SharedInfo.ArchivalLogFile;
return path;
}
public static string GetNLogFileName([NotNull] string logDirectory)
{
var path = logDirectory + Path.DirectorySeparatorChar + SharedInfo.LogFile;
return path;
}
static readonly Lazy<string> _WebsiteDirectory = new(() =>
{
var path = Path.Combine(IOPath.AppDataDirectory, "ASF", "www");
IOPath.DirCreateByNotExists(path);
return path;
});
/// <summary>
/// <list type="bullet">
/// <item>
/// AppData\ASF\www
/// </item>
/// </list>
/// </summary>
public static string WebsiteDirectory => _WebsiteDirectory.Value;
#if DEBUG
[Obsolete("use AppDataDirectory")]
public static string HomeDirectory => AppDataDirectory;
#endif
public const string NLogGeneralLayout = NLog.Logging.GeneralLayout;
}
public enum ASFPathFolder
{
ASF,
Config,
Plugin,
WWW,
Logs,
}
}
@@ -1,14 +0,0 @@
using System;
using System.Threading.Tasks;
namespace ArchiSteamFarm
{
public interface IArchiSteamFarmHelperService
{
static IArchiSteamFarmHelperService Instance => DI.Get<IArchiSteamFarmHelperService>();
int IPCPortValue { get; }
Task Restart();
}
}
Binary file not shown.
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
Binary file not shown.
-4
View File
@@ -1,4 +0,0 @@
# Windows/macOS/Linux x86(32 bit) Native Library
## 7z.dll
21.07 (2021-12-26) by https://www.7-zip.org
+56 -42
View File
@@ -1,34 +1,40 @@
### 版本亮点
1. Android 支持 VPN 模式(推荐) 进行本地加速
2. 新增 Steam 游戏信息编辑功能,可修改游戏名称、图片、启动项等数据并同步至 Steam 客户端生效
3. ASF 升级至 V5.2.5.4
4. 优化了显示图片时 GPU 占用
5. 优化库存游戏和脚本内存占用
6. 库存游戏编辑功能支持从 SteamGridDB 匹配预览和下载图片
7. 网络加速新增 MEGA 网盘反代服务
8. macOS 支持 Arm64(Apple Silicon)
<!--
. ~~Windows 支持 DNS 驱动拦截模式(推荐) 进行本地加速~~
### 公告
1. 非简中语言将默认隐藏加速和脚本功能,仅能通过切换语言并重启程序的方式还原被隐藏的功能
2. 现已停止短信服务节约开销,后续会推出邮箱注册登录,对于已使用手机号的用户需要进行绑定第三方快速登录,否则注销后将无法再次登录
3. 自动更新目前仅 Windows 端可用,且由于下载渠道限速可能导致无法更新成功,推荐在官网链接的网盘或群文件中下载压缩包解压覆盖更新(应用商店版由商店更新不受此影响)
4. 目前的本地加速功能的实现方式,因需要信任证书,在 Android 上因系统限制,所以此功能已放弃继续开发,如仍想使用需要自行导入证书到系统目录,使用 adb 工具或 Magisk 之类的软件操作,未来会使用不需要证书的加速功能替换此功能
5. fde 版本需要安装 [ASP.NET Core 运行时 6.0.7 (x64) 与 .NET Core 运行时 6.0.7 (x64)](https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0)
-->
### 版本亮点
1. 新增 Steam 云存档管理功能,可自行上传或删除 Steam 云存档
2. 库存游戏支持筛选支持 Steam 云存档的游戏
3. ASF 升级至 V5.2.6.3
4. .NET 运行时升级至 6.0.7,使用 fde 版本需要升级运行库
5. 库存游戏中解锁成就与挂时长支持 macOS 与 Linux 系统
6. 在设置中可关闭托盘,关闭托盘后关闭主窗口即退出程序
7. 使用 Yarp.ReverseProxy 重写了反代加速和脚本功能,大幅提升稳定性和性能
8. Windows 新增 DNS 驱动拦截模式进行本地加速
9. 为了能继续维持开发,从此版本开始将会添加程序内广告,赞助用户将会有特殊的标识并且不会显示广告
10. 令牌交易现在支持查看交易详情,可以确认交易方的Steam注册时间等信息
### 修复问题
1. 修复 本地令牌 无令牌刷新时提示密码错误
2. 改进 Android 端 本地令牌 列表样式第一条与最后一条的上下外边距
3. 改进 俄语翻译,由 vanja-san 提供
4. 改进 .NET 运行时升级至 6.0.4(仅 Desktop 端)
5. 改进 脚本配置 未启动时的内存占用,以及减少总体内存占用率
6. 修复 Hosts 加速模式下使用仅启用脚本功能导致死循环
7. 改进 Linux 端 可监听 443 端口配置
8. 修复 Windows 端,动态桌面背景窗口显示时一些可能导致闪退的潜在问题
9. 修复 Android 端,因 CheckBox 导致在低于 6.0 Marshmallow 系统上引发的闪退
10. 修复 Desktop 高 DPI 分辨率下菜单图标会显示模糊的问题
11. 修复 Windows 端,切换至网络加速菜单时可能会出现 UI 错乱的问题
12. 修复 Desktop 端,某些情况库存游戏会卡住无限加载的问题
13. 修复 网络加速 Onedrive 加速失效问题
14. 修复 消息框不再提醒复选框勾上可能不生效的问题
15. 修复 Windows 端, JumpList 切换 Steam Beta 账号失效的问题
16. 修复 ASF,当使用 IPC.config 时,程序内打开网页端口号值不正确
1. 修复 窗口在某些情况下最大化或最小化恢复时窗口大小会变化的问题
2. 修复 库存游戏 编辑 Steam 游戏封面时选择自定义图片失败的问题
3. 修复 程序内在显示某些图片时会出现错乱马赛克的问题
4. 修复 Linux 上点击关于页面可能因字体引发闪退
5. 修复 MIUI Android 11 ~ 12 中绑定或换绑手机号页面闪退
6. 修复 Android 本地加速中已知问题弹窗显示时不应同时跳转引导证书页
<!--
TODO:
Android 第三方快速登录回调改为 URL Scheme
修复 Android 检查更新检测不到最新版本的问题
### 已知问题
- 除 Windows 之外的平台此软件自动更新尚不可用
@@ -59,9 +65,11 @@
- 本地加速
- 因 Android 7(Nougat API 24) 之后的版本不在信任用户证书,所以此功能已放弃继续开发,如仍想使用需要自行导入证书到系统目录,使用 adb 工具或 Magisk 之类的软件操作,未来会使用不需要证书的加速功能替换此功能
-->
[![steampp.net](https://img.shields.io/badge/WebSite-steampp.net-brightgreen.svg?style=flat-square&color=61dafb)](https://steampp.net)
[![Steam++ v2.7.0](https://img.shields.io/badge/Steam++-v2.7.0-brightgreen.svg?style=flat-square&color=512bd4)]()
[![WebSite steampp.net](https://img.shields.io/badge/WebSite-steampp.net-brightgreen.svg?style=flat-square&color=61dafb)](https://steampp.net)
[![Steam++ v2.8.0](https://img.shields.io/badge/Steam++-v2.8.0-brightgreen.svg?style=flat-square&color=512bd4)]()
##### [不知道该下载哪个文件?](./download-guide.md)
@@ -70,22 +78,28 @@
### 文件校验
| File | Checksum (SHA256) |
| ---- | ---- |
| Steam++_win_x64_v2.7.0.7z | SHA256 |
| Steam++_win_x64_fde_v2.7.0.7z | SHA256 |
| Steam++_win_x64_v2.8.0.7z | SHA256 |
| Steam++_win_x64_fde_v2.8.0.7z | SHA256 |
| | |
| Steam++_win_x64_v2.7.0.exe | SHA256 |
| Steam++_win_x64_fde_v2.7.0.exe | SHA256 |
| Steam++_win_x64_v2.8.0.exe | SHA256 |
| Steam++_win_x64_fde_v2.8.0.exe | SHA256 |
| | |
| Steam++_linux_x64_v2.7.0.7z | SHA256 |
| Steam++_linux_arm64_v2.7.0.7z | SHA256 |
| Steam++_win_x86_v2.8.0.7z | SHA256 |
| Steam++_win_x86_fde_v2.8.0.7z | SHA256 |
| | |
| Steam++_linux_x64_v2.7.0.deb | SHA256 |
| Steam++_linux_arm64_v2.7.0.deb | SHA256 |
| Steam++_win_x86_v2.8.0.exe | SHA256 |
| Steam++_win_x86_fde_v2.8.0.exe | SHA256 |
| | |
| Steam++_linux_x64_v2.7.0.rpm | SHA256 |
| Steam++_linux_arm64_v2.7.0.rpm | SHA256 |
| Steam++_linux_x64_v2.8.0.7z | SHA256 |
| Steam++_linux_arm64_v2.8.0.7z | SHA256 |
| | |
| Steam++_macos_x64_v2.7.0.dmg | SHA256 |
| Steam++_macos_arm64_v2.7.0.dmg | SHA256 |
| Steam++_linux_x64_v2.8.0.deb | SHA256 |
| Steam++_linux_arm64_v2.8.0.deb | SHA256 |
| | |
| Steam++_android_v2.7.0.apk | SHA256 |
| Steam++_linux_x64_v2.8.0.rpm | SHA256 |
| Steam++_linux_arm64_v2.8.0.rpm | SHA256 |
| | |
| Steam++_macos_x64_v2.8.0.dmg | SHA256 |
| Steam++_macos_arm64_v2.8.0.dmg | SHA256 |
| | |
| Steam++_android_v2.8.0.apk | SHA256 |
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.
+95 -97
View File
@@ -1,104 +1,102 @@
using System.IO;
using System.Linq;
namespace System;
namespace System
public static partial class ProjectPathUtil
{
public static partial class ProjectPathUtil
#pragma warning disable SA1307 // Accessible fields should begin with upper-case letter
public static readonly string projPath;
#pragma warning restore SA1307 // Accessible fields should begin with upper-case letter
public const string ProjectDir_AvaloniaAppBridge = "ST.Client.Desktop.Avalonia.App.Bridge";
public const string ProjectDir_ConsoleAppBridge = "ST.Client.Desktop.Console.App.Bridge";
public const string ProjectDir_ConsoleAppBridgePackage = "ST.Client.Desktop.Avalonia.App.Bridge.Package";
public const string ProjectDir_AvaloniaApp = "ST.Client.Desktop.Avalonia.App";
public const string ProjectDir_Win7Troubleshoot = "ST.Tools.Win7Troubleshoot";
public const string ProjectDir_CoreLib = "Common.CoreLib";
public const string ProjectDir_ClienDroidLib = "Common.ClientLib.Droid";
public const string ProjectDir_ClientDesktop = "ST.Client.Desktop";
public const string ProjectDir_ST = "ST";
public const string ProjectDir_STClient = "ST.Client";
public const string release_template_md =
@"\release-template.md";
[Obsolete("use MainDllPath_", true)]
public const string MainDllPath =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Steam++.dll";
public const string MainDllPath_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Steam++.dll";
[Obsolete("use DirPublishWinX86_")]
public const string DirPublishWinX86 =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\win-x86";
public const string DirPublishWinX86_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\win-x86";
[Obsolete("use DirPublishWinX64_", true)]
public const string DirPublishWinX64 =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\win-x64";
[Obsolete("use DirPublishWinX64_FDE_", true)]
public const string DirPublishWinX64_FDE =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\FrameworkDependent\win-x64";
public const string DirPublishWinX64_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\win-x64";
public const string DirPublishOsx =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\{0}";
public const string DirPublishWinX64_FDE_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\FrameworkDependent\win-x64";
[Obsolete("use DirPublish_", true)]
public const string DirPublish =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish";
public const string DirPublish_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish";
public const string DirPublish_FDE_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\FrameworkDependent";
//public const string DirPublish_Win7Troubleshoot =
// @"\src\" + ProjectDir_Win7Troubleshoot + @"\bin\Release\Publish\net35";
static ProjectPathUtil()
{
public static readonly string projPath;
public const string ProjectDir_AvaloniaAppBridge = "ST.Client.Desktop.Avalonia.App.Bridge";
public const string ProjectDir_ConsoleAppBridge = "ST.Client.Desktop.Console.App.Bridge";
public const string ProjectDir_ConsoleAppBridgePackage = "ST.Client.Desktop.Avalonia.App.Bridge.Package";
public const string ProjectDir_AvaloniaApp = "ST.Client.Desktop.Avalonia.App";
public const string ProjectDir_Win7Troubleshoot = "ST.Tools.Win7Troubleshoot";
public const string ProjectDir_CoreLib = "Common.CoreLib";
public const string ProjectDir_ClienDroidLib = "Common.ClientLib.Droid";
public const string ProjectDir_ClientDesktop = "ST.Client.Desktop";
public const string ProjectDir_ST = "ST";
public const string ProjectDir_STClient = "ST.Client";
public const string release_template_md =
@"\release-template.md";
[Obsolete("use MainDllPath_", true)]
public const string MainDllPath =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Steam++.dll";
public const string MainDllPath_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Steam++.dll";
[Obsolete("use DirPublishWinX86_")]
public const string DirPublishWinX86 =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\win-x86";
public const string DirPublishWinX86_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\win-x86";
[Obsolete("use DirPublishWinX64_", true)]
public const string DirPublishWinX64 =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\win-x64";
[Obsolete("use DirPublishWinX64_FDE_", true)]
public const string DirPublishWinX64_FDE =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\FrameworkDependent\win-x64";
public const string DirPublishWinX64_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\win-x64";
public const string DirPublishOsx =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\{0}";
public const string DirPublishWinX64_FDE_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\FrameworkDependent\win-x64";
[Obsolete("use DirPublish_", true)]
public const string DirPublish =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish";
public const string DirPublish_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish";
public const string DirPublish_FDE_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Publish\FrameworkDependent";
//public const string DirPublish_Win7Troubleshoot =
// @"\src\" + ProjectDir_Win7Troubleshoot + @"\bin\Release\Publish\net35";
static ProjectPathUtil()
projPath = GetProjectPath();
if (!Directory.Exists(Path.Combine(projPath, ProjectDir_AvaloniaApp)))
{
projPath = GetProjectPath();
if (!Directory.Exists(Path.Combine(projPath, ProjectDir_AvaloniaApp)))
{
projPath = GetProjectPathByServerTool();
}
}
/// <summary>
/// 获取当前项目绝对路径(.sln文件所在目录)
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
static string GetProjectPath(string? path = null)
{
path ??= AppContext.BaseDirectory;
if (!Directory.GetFiles(path, "*.sln").Any())
{
var parent = Directory.GetParent(path);
if (parent == null) return string.Empty;
return GetProjectPath(parent.FullName);
}
return path;
}
/// <summary>
/// 获取公开客户端项目绝对路径,仅供服务端工具项目中使用
/// </summary>
/// <returns></returns>
static string GetProjectPathByServerTool()
{
var projPath_ = GetProjectPath();
return Path.GetFullPath(Path.Combine(projPath_, "..", "SteamTools"));
projPath = GetProjectPathByServerTool();
}
}
/// <summary>
/// 获取当前项目绝对路径(.sln文件所在目录)
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
static string GetProjectPath(string? path = null)
{
path ??= AppContext.BaseDirectory;
if (!Directory.GetFiles(path, "*.sln").Any())
{
var parent = Directory.GetParent(path);
if (parent == null) return string.Empty;
return GetProjectPath(parent.FullName);
}
return path;
}
/// <summary>
/// 获取公开客户端项目绝对路径,仅供服务端工具项目中使用
/// </summary>
/// <returns></returns>
static string GetProjectPathByServerTool()
{
var projPath_ = GetProjectPath();
return Path.GetFullPath(Path.Combine(projPath_, "..", "SteamTools"));
}
}
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--><g fill="#3ddc84"><path d="M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"/></g></svg>

After

Width:  |  Height:  |  Size: 570 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--><g fill="#A2AAAD"><path d="M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"/></g></svg>

After

Width:  |  Height:  |  Size: 704 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--><g fill="#E95420"><path d="M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 829 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc.--><g fill="#00adef"><path d="M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"/></g></svg>

After

Width:  |  Height:  |  Size: 404 B

@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Portable.BouncyCastle" Version="1.8.10" />
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="5.0.0" />
</ItemGroup>
+1 -1
View File
@@ -10,7 +10,7 @@
<PackageReference Include="Gameloop.Vdf" Version="0.6.1" />
<PackageReference Include="log4net" Version="2.0.12" />
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Ninject" Version="3.3.4" />
<PackageReference Include="Portable.BouncyCastle" Version="1.8.10" />
<PackageReference Include="SharpZipLib" Version="1.3.3" />
+1 -1
View File
@@ -139,7 +139,7 @@
<PackageReference Include="LivetCask.Mvvm" Version="3.2.3.2" />
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.31" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="System.Reactive" Version="5.0.0" />
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
+519 -514
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,42 @@
using Avalonia.Controls;
using Avalonia.Platform;
// https://github.com/AvaloniaUI/Avalonia/blob/0.10.13/src/Avalonia.Desktop/AppBuilderDesktopExtensions.cs
namespace Avalonia
{
public static class AppBuilderDesktopExtensions
{
public static TAppBuilder UsePlatformDetect<TAppBuilder>(this TAppBuilder builder)
where TAppBuilder : AppBuilderBase<TAppBuilder>, new()
{
#if WINDOWS
builder.UseWin32();
#else
var os = builder.RuntimePlatform.GetRuntimeInfo().OperatingSystem;
// We don't have the ability to load every assembly right now, so we are
// stuck with manual configuration here
// Helpers are extracted to separate methods to take the advantage of the fact
// that CLR doesn't try to load dependencies before referencing method is jitted
// Additionally, by having a hard reference to each assembly,
// we verify that the assemblies are in the final .deps.json file
// so .NET Core knows where to load the assemblies from,.
switch (os)
{
case OperatingSystemType.WinNT:
builder.UseWin32();
break;
case OperatingSystemType.OSX:
builder.UseAvaloniaNative();
break;
default:
builder.UseX11();
break;
}
#endif
builder.UseSkia();
return builder;
}
}
}
@@ -0,0 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net6.0-windows</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\AssemblyInfo.Version.Max.cs">
<LinkBase>Properties</LinkBase>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Avalonia.Skia.Internals\Avalonia.Skia.Internals.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia.Win32" />
</ItemGroup>
<ItemGroup Condition=" !$(TargetFramework.Contains('-windows')) ">
<PackageReference Include="Avalonia.X11" />
<PackageReference Include="Avalonia.Native" />
</ItemGroup>
</Project>
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
+6 -1
View File
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
@@ -14,4 +15,8 @@
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" />
</ItemGroup>
</Project>
@@ -0,0 +1,13 @@
using System;
using Avalonia.Controls;
namespace Avalonia
{
public static class AvaloniaNativePlatformExtensions
{
public static T UseAvaloniaNative<T>(this T builder) where T : AppBuilderBase<T>, new()
{
throw new PlatformNotSupportedException();
}
}
}
@@ -18,4 +18,8 @@
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,187 @@
extern alias AvaloniaSkia;
using System;
using System.IO;
using Avalonia.Platform;
using AvaloniaSkia::Avalonia.Skia.Helpers;
using Avalonia.Visuals.Media.Imaging;
using SkiaSharp;
using AvaloniaSkia::Avalonia.Skia;
using DrawingContextImpl = AvaloniaSkia::Avalonia.Skia.DrawingContextImpl;
using IDrawableBitmapImpl = AvaloniaSkia::Avalonia.Skia.IDrawableBitmapImpl;
// https://github.com/AvaloniaUI/Avalonia/blob/0.10.13/src/Skia/Avalonia.Skia/ImmutableBitmap.cs
namespace Avalonia.Skia
{
/// <summary>
/// Immutable Skia bitmap.
/// </summary>
internal class ImmutableBitmap : IDrawableBitmapImpl
{
private readonly SKImage _image;
public ImmutableBitmap(SKImage image)
{
_image = image;
if (_image == null)
{
throw new ArgumentException("Unable to load bitmap from provided data");
}
PixelSize = new PixelSize(_image.Width, _image.Height);
// TODO: Skia doesn't have an API for DPI.
Dpi = new Vector(96, 96);
}
/// <summary>
/// Create immutable bitmap from given stream.
/// </summary>
/// <param name="stream">Stream containing encoded data.</param>
public ImmutableBitmap(Stream stream) : this(SkiaSharpHelpers.FromEncodedData(stream))
{
}
public ImmutableBitmap(ImmutableBitmap src, PixelSize destinationSize, BitmapInterpolationMode interpolationMode)
{
SKImageInfo info = new SKImageInfo(destinationSize.Width, destinationSize.Height, SKColorType.Bgra8888);
SKImage output = SKImage.Create(info);
src._image.ScalePixels(output.PeekPixels(), interpolationMode.ToSKFilterQuality());
_image = output;
PixelSize = new PixelSize(_image.Width, _image.Height);
// TODO: Skia doesn't have an API for DPI.
Dpi = new Vector(96, 96);
}
public ImmutableBitmap(Stream stream, int decodeSize, bool horizontal, BitmapInterpolationMode interpolationMode) : this(SkiaSharpHelpers.Create(stream), decodeSize, horizontal, interpolationMode)
{
}
public ImmutableBitmap(SKBitmap bmp, int decodeSize, bool horizontal, BitmapInterpolationMode interpolationMode)
{
var info = bmp.Info;
// now scale that to the size that we want
var realScale = horizontal ? ((double)info.Height / info.Width) : ((double)info.Width / info.Height);
SKImageInfo desired;
if (horizontal)
{
desired = new SKImageInfo(decodeSize, (int)(realScale * decodeSize));
}
else
{
desired = new SKImageInfo((int)(realScale * decodeSize), decodeSize);
}
if (bmp.Width != desired.Width || bmp.Height != desired.Height)
{
var scaledBmp = bmp.Resize(desired, interpolationMode.ToSKFilterQuality());
bmp.Dispose();
bmp = scaledBmp;
}
_image = SKImage.FromBitmap(bmp);
bmp.Dispose();
if (_image == null)
{
throw new ArgumentException("Unable to load bitmap from provided data");
}
PixelSize = new PixelSize(_image.Width, _image.Height);
// TODO: Skia doesn't have an API for DPI.
Dpi = new Vector(96, 96);
}
static SKBitmap Decode(SKCodec codec, int decodeSize, bool horizontal, bool leaveOpen)
{
try
{
var info = codec.Info;
// get the scale that is nearest to what we want (eg: jpg returned 512)
var supportedScale = codec.GetScaledDimensions(horizontal ? ((float)decodeSize / info.Width) : ((float)decodeSize / info.Height));
// decode the bitmap at the nearest size
var nearest = new SKImageInfo(supportedScale.Width, supportedScale.Height);
var bmp = SKBitmap.Decode(codec, nearest);
return bmp;
}
finally
{
if (!leaveOpen) codec.Dispose();
}
}
public ImmutableBitmap(SKCodec codec, int decodeSize, bool horizontal, BitmapInterpolationMode interpolationMode, bool leaveOpen = false)
: this(Decode(codec, decodeSize, horizontal, leaveOpen), decodeSize, horizontal, interpolationMode)
{
}
/// <summary>
/// Create immutable bitmap from given pixel data copy.
/// </summary>
/// <param name="size">Size of the bitmap.</param>
/// <param name="dpi">DPI of the bitmap.</param>
/// <param name="stride">Stride of data pixels.</param>
/// <param name="format">Format of data pixels.</param>
/// <param name="alphaFormat">Alpha format of data pixels.</param>
/// <param name="data">Data pixels.</param>
public ImmutableBitmap(PixelSize size, Vector dpi, int stride, PixelFormat format, AlphaFormat alphaFormat, IntPtr data)
{
var imageInfo = new SKImageInfo(size.Width, size.Height, format.ToSkColorType(), alphaFormat.ToSkAlphaType());
_image = SKImage.FromPixelCopy(imageInfo, data, stride);
if (_image == null)
{
throw new ArgumentException("Unable to create bitmap from provided data");
}
PixelSize = size;
Dpi = dpi;
}
public Vector Dpi { get; }
public PixelSize PixelSize { get; }
public int Version { get; } = 1;
/// <inheritdoc />
public void Dispose()
{
_image.Dispose();
}
/// <inheritdoc />
public void Save(string fileName)
{
ImageSavingHelper.SaveImage(_image, fileName);
}
/// <inheritdoc />
public void Save(Stream stream)
{
ImageSavingHelper.SaveImage(_image, stream);
}
/// <inheritdoc />
public void Draw(DrawingContextImpl context, SKRect sourceRect, SKRect destRect, SKPaint paint)
{
context.Canvas.DrawImage(_image, sourceRect, destRect, paint);
}
}
}
@@ -0,0 +1,52 @@
extern alias AvaloniaSkia;
using Avalonia.Platform;
using Avalonia.Visuals.Media.Imaging;
using System;
using System.IO;
using ISkiaGpu = AvaloniaSkia::Avalonia.Skia.ISkiaGpu;
using @this = AvaloniaSkia::Avalonia.Skia.PlatformRenderInterface;
// https://github.com/AvaloniaUI/Avalonia/blob/0.10.13/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs
namespace Avalonia.Skia
{
sealed class PlatformRenderInterface : @this, IPlatformRenderInterface
{
public PlatformRenderInterface(ISkiaGpu? skiaGpu, long? maxResourceBytes = null) : base(skiaGpu, maxResourceBytes)
{
}
IBitmapImpl IPlatformRenderInterface.LoadBitmap(Stream stream)
{
return new ImmutableBitmap(stream);
}
IBitmapImpl IPlatformRenderInterface.LoadBitmap(PixelFormat format, AlphaFormat alphaFormat, IntPtr data, PixelSize size, Vector dpi, int stride)
{
return new ImmutableBitmap(size, dpi, stride, format, alphaFormat, data);
}
IBitmapImpl IPlatformRenderInterface.LoadBitmapToWidth(Stream stream, int width, BitmapInterpolationMode interpolationMode)
{
return new ImmutableBitmap(stream, width, true, interpolationMode);
}
IBitmapImpl IPlatformRenderInterface.LoadBitmapToHeight(Stream stream, int height, BitmapInterpolationMode interpolationMode)
{
return new ImmutableBitmap(stream, height, false, interpolationMode);
}
IBitmapImpl IPlatformRenderInterface.ResizeBitmap(IBitmapImpl bitmapImpl, PixelSize destinationSize, BitmapInterpolationMode interpolationMode)
{
if (bitmapImpl is ImmutableBitmap ibmp)
{
return new ImmutableBitmap(ibmp, destinationSize, interpolationMode);
}
else
{
throw new Exception("Invalid source bitmap type.");
}
}
}
}
@@ -0,0 +1,22 @@
extern alias AvaloniaSkia;
using Avalonia.Platform;
using SkiaOptions = AvaloniaSkia::Avalonia.SkiaOptions;
// https://github.com/AvaloniaUI/Avalonia/blob/0.10.13/src/Skia/Avalonia.Skia/SkiaPlatform.cs#L18-L27
namespace Avalonia.Skia
{
public static class SkiaPlatform2
{
public static readonly IPlatformRenderInterface PlatformRenderInterface = GetPlatformRenderInterface();
static IPlatformRenderInterface GetPlatformRenderInterface()
{
var options = AvaloniaLocator.Current.GetService<SkiaOptions>() ?? new();
var customGpu = options.CustomGpuFactory?.Invoke();
var renderInterface = new PlatformRenderInterface(customGpu, options.MaxGpuResourceSizeBytes);
return renderInterface;
}
}
}
@@ -0,0 +1,134 @@
extern alias AvaloniaSkia;
using System.IO;
using SkiaSharp;
using Avalonia.Media.Imaging;
using Avalonia.Utilities;
using Avalonia.Visuals.Media.Imaging;
namespace Avalonia.Skia
{
public static class SkiaSharpHelpers
{
static SKCodec CreateCore(IFileStreamWrapper fileStreamWrapper)
{
return SKCodec.Create(fileStreamWrapper.Name);
}
static SKCodec CreateCore(FileStream fileStream, bool disposeManagedStream = false)
{
try
{
var filename = fileStream.Name;
return SKCodec.Create(filename);
}
finally
{
if (disposeManagedStream) fileStream.Dispose();
}
}
static SKCodec CreateCore(Stream stream, bool disposeManagedStream = false)
{
using var skStream = new SKManagedStream(stream, disposeManagedStream);
return SKCodec.Create(skStream);
}
public static SKCodec Create(Stream stream)
{
if (stream is IFileStreamWrapper fileStreamWrapper)
{
return CreateCore(fileStreamWrapper);
}
else if (stream is FileStream fileStream)
{
return CreateCore(fileStream);
}
else
{
return CreateCore(stream);
}
}
public static SKImage FromEncodedDataCore(IFileStreamWrapper fileStreamWrapper)
{
return SKImage.FromEncodedData(fileStreamWrapper.Name);
}
public static SKImage FromEncodedDataCore(FileStream fileStream, bool disposeManagedStream = false)
{
try
{
var filename = fileStream.Name;
return SKImage.FromEncodedData(filename);
}
finally
{
if (disposeManagedStream) fileStream.Dispose();
}
}
public static SKImage FromEncodedDataCore(MemoryStream memoryStream, bool disposeManagedStream = false)
{
try
{
using var data = SKData.CreateCopy(memoryStream.ToArray());
return SKImage.FromEncodedData(data);
}
finally
{
if (disposeManagedStream) memoryStream.Dispose();
}
}
public static SKImage FromEncodedDataCore(Stream stream, bool disposeManagedStream = false)
{
using var skStream = new SKManagedStream(stream, disposeManagedStream);
using var data = SKData.Create(skStream);
if (data != null) return SKImage.FromEncodedData(data);
if (stream.CanSeek) stream.Position = 0;
using var ms = new MemoryStream();
stream.CopyTo(ms);
ms.Seek(0, SeekOrigin.Begin);
// https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/basics/bitmaps#loading-a-bitmap-from-the-web
return FromEncodedDataCore(ms, disposeManagedStream: true);
}
public static SKImage FromEncodedData(Stream stream)
{
if (stream is IFileStreamWrapper fileStreamWrapper)
{
return FromEncodedDataCore(fileStreamWrapper);
}
else if (stream is FileStream fileStream)
{
return FromEncodedDataCore(fileStream);
}
else if (stream is MemoryStream memoryStream)
{
try
{
return FromEncodedDataCore(memoryStream);
}
catch
{
}
}
return FromEncodedDataCore(stream);
}
static Bitmap GetBitmap(this ImmutableBitmap bitmap) => new(RefCountable.Create(bitmap));
public static Bitmap GetBitmap(SKImage image) => new ImmutableBitmap(image).GetBitmap();
public static Bitmap GetBitmap(SKBitmap bitmap)
{
var image = SKImage.FromBitmap(bitmap);
return GetBitmap(image);
}
public static Bitmap DecodeToWidth(SKBitmap bitmap, int width, BitmapInterpolationMode interpolationMode = BitmapInterpolationMode.HighQuality) => new ImmutableBitmap(bitmap, width, true, interpolationMode).GetBitmap();
}
}
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
@@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\AssemblyInfo.Version.Max.cs">
<LinkBase>Properties</LinkBase>
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" />
</ItemGroup>
</Project>
+23
View File
@@ -0,0 +1,23 @@
using System;
using WebView2BaseType = Avalonia.Controls.Shapes.Rectangle;
namespace Avalonia.Controls;
public partial class WebView2 : WebView2BaseType
{
public static bool IsSupported { get; }
public static readonly DirectProperty<WebView2, Uri?> SourceProperty =
AvaloniaProperty.RegisterDirect<WebView2, Uri?>(
nameof(Uri),
x => x.source,
(x, y) => x.Source = y);
Uri? source;
public Uri? Source
{
get => source;
set => SetAndRaise(SourceProperty, ref source, value);
}
}
+6 -1
View File
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
@@ -14,4 +15,8 @@
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" />
</ItemGroup>
</Project>
@@ -0,0 +1,13 @@
using System;
using Avalonia.Controls;
namespace Avalonia
{
public static class Win32ApplicationExtensions
{
public static T UseWin32<T>(this T builder) where T : AppBuilderBase<T>, new()
{
throw new PlatformNotSupportedException();
}
}
}
+6 -1
View File
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>$(MSBuildProjectDirectory)\..\..\avalonia.snk</AssemblyOriginatorKeyFile>
<!--https://github.com/AvaloniaUI/Avalonia/blob/0.10.10/build/SharedVersion.props#L18-->
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
@@ -14,4 +15,8 @@
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" />
</ItemGroup>
</Project>
@@ -0,0 +1,13 @@
using System;
using Avalonia.Controls;
namespace Avalonia
{
public static class AvaloniaX11PlatformExtensions
{
public static T UseX11<T>(this T builder) where T : AppBuilderBase<T>, new()
{
throw new PlatformNotSupportedException();
}
}
}
+9 -10
View File
@@ -1,14 +1,13 @@
namespace System.Application
namespace System.Application;
/// <summary>
/// 地区等级
/// </summary>
public enum AreaLevel : byte
{
/// <summary>
/// 地区等级
/// </summary>
public enum AreaLevel : byte
{
省或直辖市或特别行政区 = 2,
省或直辖市或特别行政区 = 2,
市_不包括直辖市 = 3,
市_不包括直辖市 = 3,
区县_县级市 = 4,
}
区县_县级市 = 4,
}
+60 -61
View File
@@ -1,4 +1,4 @@
#if !AREA_LIB
#if !AREA_LIB
using System.Diagnostics;
using MPKey = MessagePack.KeyAttribute;
using MPObj = MessagePack.MessagePackObjectAttribute;
@@ -19,96 +19,95 @@ using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
#endif
namespace System.Application.Entities
namespace System.Application.Entities;
/// <summary>
/// 地区表、模型
/// </summary>
[MPObj]
[DebuggerDisplay("{DebuggerDisplay(),nq}")]
#if ORM_SQLITE_PCL
[SQLiteTable("T99719D58")]
#endif
public sealed class Area : IArea
{
string DebuggerDisplay() => $"{Name}, {Id}";
/// <summary>
/// 地区表、模型
/// 地区Id
/// </summary>
[MPObj]
[DebuggerDisplay("{DebuggerDisplay(),nq}")]
#if ORM_SQLITE_PCL
[SQLiteTable("T99719D58")]
#endif
public sealed class Area : IArea
{
string DebuggerDisplay() => $"{Name}, {Id}";
/// <summary>
/// 地区Id
/// </summary>
#if ORM_SQLITE_PCL
[SQLiteColumn("C27B42999")]
[SQLitePrimaryKey] // SQLitePCL 主键
[SQLiteColumn("C27B42999")]
[SQLitePrimaryKey] // SQLitePCL 主键
#endif
#if ORM_EF_CORE
[Key] // EF 主键
[DatabaseGenerated(DatabaseGeneratedOption.None)] // EF 不自增
[Key] // EF 主键
[DatabaseGenerated(DatabaseGeneratedOption.None)] // EF 不自增
#endif
[MPKey(0)]
[N_JsonProperty("0")]
[S_JsonProperty("0")]
public int Id { get; set; }
[MPKey(0)]
[N_JsonProperty("0")]
[S_JsonProperty("0")]
public int Id { get; set; }
#if ORM_SQLITE_PCL
[SQLiteColumn("CD57FE61B")]
[SQLiteRequired] // SQLitePCL not null
[SQLiteMaxLength(IArea.Length_AreaName)] // SQLitePCL MaxLength
[SQLiteColumn("CD57FE61B")]
[SQLiteRequired] // SQLitePCL not null
[SQLiteMaxLength(IArea.Length_AreaName)] // SQLitePCL MaxLength
#endif
#if ORM_EF_CORE
[Required] // EF not null
[MaxLength(IArea.Length_AreaName)] // EF MaxLength
[Required] // EF not null
[MaxLength(IArea.Length_AreaName)] // EF MaxLength
#endif
[MPKey(1)]
[N_JsonProperty("1")]
[S_JsonProperty("1")]
public string? Name { get; set; }
[MPKey(1)]
[N_JsonProperty("1")]
[S_JsonProperty("1")]
public string? Name { get; set; }
#if ORM_SQLITE_PCL
[SQLiteColumn("CF967FC52")]
[SQLiteRequired] // SQLitePCL not null
[SQLiteIndexed] // SQLitePCL 索引
[SQLiteColumn("CF967FC52")]
[SQLiteRequired] // SQLitePCL not null
[SQLiteIndexed] // SQLitePCL 索引
#endif
#if ORM_EF_CORE
[Required] // EF not null
[Required] // EF not null
#endif
[MPKey(2)]
[N_JsonProperty("2")]
[S_JsonProperty("2")]
public AreaLevel Level { get; set; }
[MPKey(2)]
[N_JsonProperty("2")]
[S_JsonProperty("2")]
public AreaLevel Level { get; set; }
#if ORM_SQLITE_PCL
[SQLiteColumn("CDB19A0B9")]
[SQLiteIndexed] // SQLitePCL 索引
[SQLiteColumn("CDB19A0B9")]
[SQLiteIndexed] // SQLitePCL 索引
#endif
#if ORM_EF_CORE
#endif
[MPKey(3)]
[N_JsonProperty("3")]
[S_JsonProperty("3")]
public int? Up { get; set; }
[MPKey(3)]
[N_JsonProperty("3")]
[S_JsonProperty("3")]
public int? Up { get; set; }
/// <summary>
/// 短名称
/// </summary>
/// <summary>
/// 短名称
/// </summary>
#if ORM_SQLITE_PCL
[SQLiteColumn("C996F8471")]
[SQLiteColumn("C996F8471")]
#endif
[MPKey(4)]
[N_JsonProperty("4")]
[S_JsonProperty("4")]
public string? ShortName { get; set; }
[MPKey(4)]
[N_JsonProperty("4")]
[S_JsonProperty("4")]
public string? ShortName { get; set; }
#if ORM_EF_CORE
/// <summary>
/// 设置索引
/// </summary>
/// <param name="b"></param>
public static void Indexed(ModelBuilder b) => b.Entity<Area>().HasIndex(x => new { x.Level, x.Up });
/// <summary>
/// 设置索引
/// </summary>
/// <param name="b"></param>
public static void Indexed(ModelBuilder b) => b.Entity<Area>().HasIndex(x => new { x.Level, x.Up });
#endif
public override string ToString() => IArea.ToString(this);
}
public override string ToString() => IArea.ToString(this);
}
#endif
@@ -1,34 +1,33 @@
namespace System.Application.Entities
namespace System.Application.Entities;
public partial interface IArea : IEntity<int>
{
public partial interface IArea : IEntity<int>
public const int Length_AreaName = 90;
/// <summary>
/// 地区名
/// </summary>
string? Name { get; set; }
/// <summary>
/// 地区等级
/// </summary>
AreaLevel Level { get; set; }
/// <summary>
/// 上一级地区Id
/// </summary>
int? Up { get; set; }
/// <summary>
/// 短名称
/// </summary>
string? ShortName { get; set; }
protected static string ToString(IArea area)
{
public const int Length_AreaName = 90;
/// <summary>
/// 地区名
/// </summary>
string? Name { get; set; }
/// <summary>
/// 地区等级
/// </summary>
AreaLevel Level { get; set; }
/// <summary>
/// 上一级地区Id
/// </summary>
int? Up { get; set; }
/// <summary>
/// 短名称
/// </summary>
string? ShortName { get; set; }
protected static string ToString(IArea area)
{
if (!string.IsNullOrWhiteSpace(area.ShortName)) return area.ShortName;
if (!string.IsNullOrWhiteSpace(area.Name)) return area.Name;
return area.Id.ToString();
}
if (!string.IsNullOrWhiteSpace(area.ShortName)) return area.ShortName;
if (!string.IsNullOrWhiteSpace(area.Name)) return area.Name;
return area.Id.ToString();
}
}
@@ -1,18 +1,17 @@
using System.Application.Entities;
namespace System.Application.Services
{
public interface IAreaResource<out TArea> where TArea : class, IArea
{
/// <summary>
/// 获取所有地区数据
/// </summary>
/// <returns></returns>
TArea[] GetAll();
namespace System.Application.Services;
/// <summary>
/// 获取地区默认选择项
/// </summary>
TArea DefaultSelection { get; }
}
public interface IAreaResource<out TArea> where TArea : class, IArea
{
/// <summary>
/// 获取所有地区数据
/// </summary>
/// <returns></returns>
TArea[] GetAll();
/// <summary>
/// 获取地区默认选择项
/// </summary>
TArea DefaultSelection { get; }
}
@@ -1,58 +1,56 @@
using System.Application.Entities;
using System.Linq;
namespace System.Application.Services
namespace System.Application.Services;
internal interface IAreaResourceHelper<TArea> : IAreaResource<TArea> where TArea : class, IArea
{
internal interface IAreaResourceHelper<TArea> : IAreaResource<TArea> where TArea : class, IArea
/// <summary>
/// 获取二级地区,如果获取不到则返回自身
/// </summary>
/// <param name="area"></param>
/// <returns></returns>
TArea GetSecondaryOrThis(TArea area)
{
/// <summary>
/// 获取二级地区,如果获取不到则返回自身
/// </summary>
/// <param name="area"></param>
/// <returns></returns>
TArea GetSecondaryOrThis(TArea area)
if (area.Level == AreaLevel.区县_县级市 && area.Up.HasValue)
{
if (area.Level == AreaLevel.区县_县级市 && area.Up.HasValue)
var all = GetAll();
var area_up_lever = all.FirstOrDefault(x => x.Id == area.Up.Value);
if (area_up_lever == null)
{
var all = GetAll();
var area_up_lever = all.FirstOrDefault(x => x.Id == area.Up.Value);
if (area_up_lever == null)
var up_lever_string = area.Up.Value.ToString();
if (up_lever_string.Length > 2)
{
var up_lever_string = area.Up.Value.ToString();
if (up_lever_string.Length > 2)
var up_lever_int32 = (up_lever_string.Substring(0, 2) + "0000").TryParseInt32();
if (up_lever_int32.HasValue)
{
var up_lever_int32 = (up_lever_string.Substring(0, 2) + "0000").TryParseInt32();
if (up_lever_int32.HasValue)
{
area_up_lever = all.FirstOrDefault(x => x.Id == up_lever_int32.Value);
}
area_up_lever = all.FirstOrDefault(x => x.Id == up_lever_int32.Value);
}
}
if (area_up_lever != null)
{
return area_up_lever;
}
}
return area;
}
/// <summary>
/// 获取完整名称,例如[湖南 长沙]
/// </summary>
/// <param name="area"></param>
/// <returns></returns>
string GetFullName(TArea area)
{
if (area.Up.HasValue)
if (area_up_lever != null)
{
var entity = GetAll().FirstOrDefault(x => x.Id == area.Up.Value);
if (entity != default)
{
return $"{entity} {area}";
}
return area_up_lever;
}
return area.ToString();
}
return area;
}
/// <summary>
/// 获取完整名称,例如[湖南 长沙]
/// </summary>
/// <param name="area"></param>
/// <returns></returns>
string GetFullName(TArea area)
{
if (area.Up.HasValue)
{
var entity = GetAll().FirstOrDefault(x => x.Id == area.Up.Value);
if (entity != default)
{
return $"{entity} {area}";
}
}
return area.ToString();
}
}
@@ -1,35 +1,33 @@
using MessagePack;
using System.Application.Entities;
using System.Linq;
using System.Properties;
namespace System.Application.Services.Implementation
namespace System.Application.Services.Implementation;
internal sealed class AreaResourceImpl<TArea> : IAreaResource<TArea>, IAreaResourceHelper<TArea> where TArea : class, IArea
{
internal sealed class AreaResourceImpl<TArea> : IAreaResource<TArea>, IAreaResourceHelper<TArea> where TArea : class, IArea
static readonly Lazy<TArea[]> areas = new(() =>
{
static readonly Lazy<TArea[]> areas = new(() =>
var lz4Options = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
var areas = MessagePackSerializer.Deserialize<TArea[]>(SR.AMap_adcode_citycode_20210406_xlsx, lz4Options);
return areas;
});
public TArea[] GetAll() => areas.Value;
const int DefaultSelectionId = 110000;
TArea? mDefaultSelection;
public TArea DefaultSelection
{
get
{
var lz4Options = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
var areas = MessagePackSerializer.Deserialize<TArea[]>(SR.AMap_adcode_citycode_20210406_xlsx, lz4Options);
return areas;
});
public TArea[] GetAll() => areas.Value;
const int DefaultSelectionId = 110000;
TArea? mDefaultSelection;
public TArea DefaultSelection
{
get
if (mDefaultSelection == null)
{
if (mDefaultSelection == null)
{
mDefaultSelection = GetAll().FirstOrDefault(x => x.Id == DefaultSelectionId);
}
return mDefaultSelection;
mDefaultSelection = GetAll().FirstOrDefault(x => x.Id == DefaultSelectionId);
}
return mDefaultSelection;
}
}
}
+198 -201
View File
@@ -1,211 +1,208 @@
//using System;
//using System.Collections.Generic;
//using System.Linq;
//namespace System.Application
//namespace System.Application;
///// <summary>
///// 高德地图天气现象表
///// <para>web api: https://lbs.amap.com/api/webservice/guide/tools/weather-code </para>
///// <para>android sdk: https://lbs.amap.com/api/android-sdk/guide/map-tools/weather-code </para>
///// </summary>
//public static class WeatherCoding
//{
// /// <summary>
// /// 高德地图天气现象表
// /// <para>web api: https://lbs.amap.com/api/webservice/guide/tools/weather-code </para>
// /// <para>android sdk: https://lbs.amap.com/api/android-sdk/guide/map-tools/weather-code </para>
// /// </summary>
// public static class WeatherCoding
// const string TAG = "WeatherCoding";
// public const string 未知 = "未知";
// /// <inheritdoc cref="WeatherCoding"/>
// public enum Value
// {
// const string TAG = "WeatherCoding";
// 未知 = 0,
// 晴,
// 多云,
// 阴,
// 阵雨,
// 雷阵雨,
// 雷阵雨并伴有冰雹,
// 雨夹雪,
// 小雨,
// 中雨,
// 大雨,
// 暴雨,
// 大暴雨,
// 特大暴雨,
// 阵雪,
// 小雪,
// 中雪,
// 大雪,
// 暴雪,
// 雾,
// 冻雨,
// 沙尘暴,
// 小雨转中雨,
// 中雨转大雨,
// 大雨转暴雨,
// 暴雨转大暴雨,
// 大暴雨转特大暴雨,
// 小雪转中雪,
// 中雪转大雪,
// 大雪转暴雪,
// 浮尘,
// 扬沙,
// 强沙尘暴,
// 飑,
// 龙卷风,
// 弱高吹雪,
// 轻雾,
// 霾,
// public const string 未知 = "未知";
// 少云,
// 晴间多云,
// 有风,
// 平静,
// 微风,
// 和风,
// 清风,
// 强风,
// 疾风,
// 大风,
// 烈风,
// 风暴,
// 狂爆风,
// 飓风,
// 热带风暴,
// 强阵雨,
// 强雷阵雨,
// 极端降雨,
// 细雨,
// 雨,
// 雨雪天气,
// 阵雨夹雪,
// 雪,
// 浓雾,
// 强浓雾,
// 大雾,
// 特强浓雾,
// 中度霾,
// 重度霾,
// 严重霾,
// 热,
// 冷,
// }
// /// <inheritdoc cref="WeatherCoding"/>
// public enum Value
// /// <summary>
// /// 某些值文字太长,需要使用对应一个短文字值的
// /// </summary>
// static readonly IReadOnlyDictionary<Value, Value> short_mapping = new Dictionary<Value, Value>
// {
// { Value.雷阵雨并伴有冰雹 , Value.雷阵雨 },
// { Value.特大暴雨 , Value.大暴雨 },
// { Value.小雨转中雨 , Value.小雨 },
// { Value.中雨转大雨 , Value.中雨 },
// { Value.大雨转暴雨 , Value.大雨 },
// { Value.暴雨转大暴雨 , Value.暴雨 },
// { Value.大暴雨转特大暴雨 , Value.大暴雨 },
// { Value.小雪转中雪 , Value.小雪 },
// { Value.中雪转大雪 , Value.中雪 },
// { Value.大雪转暴雪 , Value.暴雪 },
// { Value.强沙尘暴 , Value.沙尘暴 },
// { Value.弱高吹雪 , Value.小雪 },
// { Value.晴间多云 , Value.多云 },
// };
// static readonly IReadOnlyDictionary<string, Value> str_parse_mapping = new Dictionary<string, Value>(StringComparer.Ordinal)
// {
// { "强风/劲风", Value.强风 },
// { "劲风", Value.强风 },
// { "毛毛雨/细雨", Value.细雨 },
// { "毛毛雨", Value.细雨 },
// { "小雨-中雨", Value.小雨转中雨 },
// { "中雨-大雨", Value.中雨转大雨 },
// { "大雨-暴雨", Value.大雨转暴雨 },
// { "暴雨-大暴雨", Value.暴雨转大暴雨 },
// { "大暴雨-特大暴雨", Value.大暴雨转特大暴雨 },
// { "小雪-中雪", Value.小雪转中雪 },
// { "中雪-大雪", Value.中雪转大雪 },
// { "大雪-暴雪", Value.大雪转暴雪 },
// };
// /// <summary>
// /// 短文字值组排除项
// /// </summary>
// static readonly Value[] short_values_excluded = new[] {
// Value.未知,
// Value.热,
// Value.冷,
// };
// /// <summary>
// /// 获取短文字值
// /// </summary>
// /// <param name="value"></param>
// /// <returns></returns>
// public static Value ToShort(this Value value)
// {
// if (short_mapping.ContainsKey(value)) return short_mapping[value];
// return value;
// }
// /// <summary>
// /// 获取短文字值字符串
// /// </summary>
// /// <param name="value"></param>
// /// <returns></returns>
// public static string ToStringShort(this Value value) => value.ToShort().ToString();
// /// <summary>
// /// 获取所有的短文字值
// /// </summary>
// /// <returns></returns>
// public static IEnumerable<Value> GetValuesShort()
// {
// var values = (Value[])Enum.GetValues(typeof(WeatherCoding));
// foreach (var value in values)
// {
// 未知 = 0,
// 晴,
// 多云,
// 阴,
// 阵雨,
// 雷阵雨,
// 雷阵雨并伴有冰雹,
// 雨夹雪,
// 小雨,
// 中雨,
// 大雨,
// 暴雨,
// 大暴雨,
// 特大暴雨,
// 阵雪,
// 小雪,
// 中雪,
// 大雪,
// 暴雪,
// 雾,
// 冻雨,
// 沙尘暴,
// 小雨转中雨,
// 中雨转大雨,
// 大雨转暴雨,
// 暴雨转大暴雨,
// 大暴雨转特大暴雨,
// 小雪转中雪,
// 中雪转大雪,
// 大雪转暴雪,
// 浮尘,
// 扬沙,
// 强沙尘暴,
// 飑,
// 龙卷风,
// 弱高吹雪,
// 轻雾,
// 霾,
// 少云,
// 晴间多云,
// 有风,
// 平静,
// 微风,
// 和风,
// 清风,
// 强风,
// 疾风,
// 大风,
// 烈风,
// 风暴,
// 狂爆风,
// 飓风,
// 热带风暴,
// 强阵雨,
// 强雷阵雨,
// 极端降雨,
// 细雨,
// 雨,
// 雨雪天气,
// 阵雨夹雪,
// 雪,
// 浓雾,
// 强浓雾,
// 大雾,
// 特强浓雾,
// 中度霾,
// 重度霾,
// 严重霾,
// 热,
// 冷,
// }
// /// <summary>
// /// 某些值文字太长,需要使用对应一个短文字值的
// /// </summary>
// static readonly IReadOnlyDictionary<Value, Value> short_mapping = new Dictionary<Value, Value>
// {
// { Value.雷阵雨并伴有冰雹 , Value.雷阵雨 },
// { Value.特大暴雨 , Value.大暴雨 },
// { Value.小雨转中雨 , Value.小雨 },
// { Value.中雨转大雨 , Value.中雨 },
// { Value.大雨转暴雨 , Value.大雨 },
// { Value.暴雨转大暴雨 , Value.暴雨 },
// { Value.大暴雨转特大暴雨 , Value.大暴雨 },
// { Value.小雪转中雪 , Value.小雪 },
// { Value.中雪转大雪 , Value.中雪 },
// { Value.大雪转暴雪 , Value.暴雪 },
// { Value.强沙尘暴 , Value.沙尘暴 },
// { Value.弱高吹雪 , Value.小雪 },
// { Value.晴间多云 , Value.多云 },
// };
// static readonly IReadOnlyDictionary<string, Value> str_parse_mapping = new Dictionary<string, Value>(StringComparer.Ordinal)
// {
// { "强风/劲风", Value.强风 },
// { "劲风", Value.强风 },
// { "毛毛雨/细雨", Value.细雨 },
// { "毛毛雨", Value.细雨 },
// { "小雨-中雨", Value.小雨转中雨 },
// { "中雨-大雨", Value.中雨转大雨 },
// { "大雨-暴雨", Value.大雨转暴雨 },
// { "暴雨-大暴雨", Value.暴雨转大暴雨 },
// { "大暴雨-特大暴雨", Value.大暴雨转特大暴雨 },
// { "小雪-中雪", Value.小雪转中雪 },
// { "中雪-大雪", Value.中雪转大雪 },
// { "大雪-暴雪", Value.大雪转暴雪 },
// };
// /// <summary>
// /// 短文字值组排除项
// /// </summary>
// static readonly Value[] short_values_excluded = new[] {
// Value.未知,
// Value.热,
// Value.冷,
// };
// /// <summary>
// /// 获取短文字值
// /// </summary>
// /// <param name="value"></param>
// /// <returns></returns>
// public static Value ToShort(this Value value)
// {
// if (short_mapping.ContainsKey(value)) return short_mapping[value];
// return value;
// }
// /// <summary>
// /// 获取短文字值字符串
// /// </summary>
// /// <param name="value"></param>
// /// <returns></returns>
// public static string ToStringShort(this Value value) => value.ToShort().ToString();
// /// <summary>
// /// 获取所有的短文字值
// /// </summary>
// /// <returns></returns>
// public static IEnumerable<Value> GetValuesShort()
// {
// var values = (Value[])Enum.GetValues(typeof(WeatherCoding));
// foreach (var value in values)
// {
// // 忽略排除项
// if (short_values_excluded.Contains(value)) continue;
// // 忽略值文字过长的
// if (short_mapping.ContainsKey(value)) continue;
// yield return value;
// }
// }
// /// <summary>
// /// 获取所有的短文字值与传入的当前天气
// /// </summary>
// /// <param name="currentWeather"></param>
// /// <returns></returns>
// public static List<Value?> GetValues(Value? currentWeather)
// {
// var result = new List<Value?> { currentWeather };
// var values = GetValuesShort().ToArray();
// Value? continueValue = null;
// if (currentWeather.HasValue)
// {
// var shortValue = currentWeather.Value.ToShort();
// if (values.Contains(shortValue))
// {
// continueValue = shortValue;
// }
// }
// foreach (var value in values)
// {
// if (continueValue.HasValue && continueValue.Value == value) continue;
// result.Add(value);
// }
// return result;
// }
// public static Value Parse(string value)
// {
// if (str_parse_mapping.ContainsKey(value)) return str_parse_mapping[value];
// if (!Enum.TryParse(value, out Value result))
// {
// Log.Error(TAG, "WeatherCoding Enum.TryParse Fail value: {0}", value);
// return Value.未知;
// }
// return result;
// // 忽略排除项
// if (short_values_excluded.Contains(value)) continue;
// // 忽略值文字过长的
// if (short_mapping.ContainsKey(value)) continue;
// yield return value;
// }
// }
// /// <summary>
// /// 获取所有的短文字值与传入的当前天气
// /// </summary>
// /// <param name="currentWeather"></param>
// /// <returns></returns>
// public static List<Value?> GetValues(Value? currentWeather)
// {
// var result = new List<Value?> { currentWeather };
// var values = GetValuesShort().ToArray();
// Value? continueValue = null;
// if (currentWeather.HasValue)
// {
// var shortValue = currentWeather.Value.ToShort();
// if (values.Contains(shortValue))
// {
// continueValue = shortValue;
// }
// }
// foreach (var value in values)
// {
// if (continueValue.HasValue && continueValue.Value == value) continue;
// result.Add(value);
// }
// return result;
// }
// public static Value Parse(string value)
// {
// if (str_parse_mapping.ContainsKey(value)) return str_parse_mapping[value];
// if (!Enum.TryParse(value, out Value result))
// {
// Log.Error(TAG, "WeatherCoding Enum.TryParse Fail value: {0}", value);
// return Value.未知;
// }
// return result;
// }
//}
+1
View File
@@ -5,6 +5,7 @@
<AssemblyName>System.Common.AreaLib</AssemblyName>
<RootNamespace>System</RootNamespace>
<DefineConstants>AREA_LIB;$(DefineConstants)</DefineConstants>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
+15 -16
View File
@@ -2,22 +2,21 @@ using System.Application.Entities;
using System.Application.Services;
// ReSharper disable once CheckNamespace
namespace System
{
public static class AreaExtensions
{
/// <inheritdoc cref="IAreaResourceHelper{TArea}.GetSecondaryOrThis(TArea)"/>
public static TArea GetSecondaryOrThis<TArea>(this TArea area) where TArea : class, IArea
{
var s = DI.Get<IAreaResourceHelper<TArea>>();
return s.GetSecondaryOrThis(area);
}
namespace System;
/// <inheritdoc cref="IAreaResourceHelper{TArea}.GetFullName(TArea)"/>
public static string GetFullName<TArea>(this TArea area) where TArea : class, IArea
{
var s = DI.Get<IAreaResourceHelper<TArea>>();
return s.GetFullName(area);
}
public static class AreaExtensions
{
/// <inheritdoc cref="IAreaResourceHelper{TArea}.GetSecondaryOrThis(TArea)"/>
public static TArea GetSecondaryOrThis<TArea>(this TArea area) where TArea : class, IArea
{
var s = DI.Get<IAreaResourceHelper<TArea>>();
return s.GetSecondaryOrThis(area);
}
/// <inheritdoc cref="IAreaResourceHelper{TArea}.GetFullName(TArea)"/>
public static string GetFullName<TArea>(this TArea area) where TArea : class, IArea
{
var s = DI.Get<IAreaResourceHelper<TArea>>();
return s.GetFullName(area);
}
}
@@ -1,21 +1,20 @@
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.DependencyInjection.Extensions;
using System.Application.Entities;
using System.Application.Services;
using System.Application.Services.Implementation;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
namespace Microsoft.Extensions.DependencyInjection;
public static class ServiceCollectionExtensions
{
public static class ServiceCollectionExtensions
public static IServiceCollection TryAddAreaResource<TArea>(this IServiceCollection services)
where TArea : class, IArea
{
public static IServiceCollection TryAddAreaResource<TArea>(this IServiceCollection services)
where TArea : class, IArea
{
services.TryAddSingleton<AreaResourceImpl<TArea>>();
services.TryAddSingleton<IAreaResourceHelper<TArea>>(s => s.GetRequiredService<AreaResourceImpl<TArea>>());
services.TryAddSingleton<IAreaResource<TArea>>(s => s.GetRequiredService<AreaResourceImpl<TArea>>());
services.TryAddSingleton<IAreaResource<IArea>>(s => s.GetRequiredService<AreaResourceImpl<TArea>>());
return services;
}
services.TryAddSingleton<AreaResourceImpl<TArea>>();
services.TryAddSingleton<IAreaResourceHelper<TArea>>(s => s.GetRequiredService<AreaResourceImpl<TArea>>());
services.TryAddSingleton<IAreaResource<TArea>>(s => s.GetRequiredService<AreaResourceImpl<TArea>>());
services.TryAddSingleton<IAreaResource<IArea>>(s => s.GetRequiredService<AreaResourceImpl<TArea>>());
return services;
}
}
@@ -1,30 +1,26 @@
using Android;
using Android.OS;
using XEPermissions = Xamarin.Essentials.Permissions;
namespace System.Application.Services.Implementation.Permissions
namespace System.Application.Services.Implementation.Permissions;
internal sealed class GetPhoneNumberPermission : BasePlatformPermission, Permissions2.IGetPhoneNumber
{
internal sealed class GetPhoneNumberPermission : XEPermissions.BasePlatformPermission, IPermissions.IGetPhoneNumber
public const string Description = "自动填充输入框中的手机号码";
public override (string androidPermission, bool isRuntime)[] RequiredPermissions
{
XEPermissions.BasePermission IPermissions.IPermission.Permission => this;
public const string Description = "自动填充输入框中的手机号码";
public override (string androidPermission, bool isRuntime)[] RequiredPermissions
get
{
get
string androidPermission;
if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
{
string androidPermission;
if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
{
androidPermission = Manifest.Permission.ReadPhoneNumbers;
}
else
{
androidPermission = Manifest.Permission.ReadPhoneState;
}
return new[] { (androidPermission, true) };
androidPermission = Manifest.Permission.ReadPhoneNumbers;
}
else
{
androidPermission = Manifest.Permission.ReadPhoneState;
}
return new[] { (androidPermission, true) };
}
}
}
@@ -1,21 +0,0 @@
using Android.Content;
using Android.Telephony;
using XEPlatform = Xamarin.Essentials.Platform;
namespace System.Application.Services.Implementation
{
/// <inheritdoc cref="ITelephonyService"/>
internal sealed class PlatformTelephonyServiceImpl : TelephonyServiceImpl
{
public PlatformTelephonyServiceImpl(IPermissions p) : base(p)
{
}
protected override string? PlatformGetPhoneNumber()
{
var telephony = XEPlatform.AppContext.GetSystemService<TelephonyManager>(Context.TelephonyService);
var value = telephony.Line1Number;
return PhoneNumberHelper.GetChineseMainlandPhoneNumber(value);
}
}
}
@@ -24,16 +24,6 @@ namespace System
return service;
}
/// <inheritdoc cref="Context.GetSystemService(string)"/>
public static TService GetSystemService<TService>(this Context context, string name) where TService : class, IJavaObject
{
var service = context.GetSystemService(name)?.JavaCast<TService>();
if (service == null)
throw new NullReferenceException(
$"Context.GetSystemService return null, name: {name}");
return service;
}
/// <summary>
/// Return the context of the single, global Application object of the current process.
/// </summary>
@@ -2,62 +2,35 @@ using Android.Runtime;
using Java.Security.Cert;
using System.IO;
using Xamarin.Android.Net;
using X509Certificate2 = System.Security.Cryptography.X509Certificates.X509Certificate2;
using static Java.Security.Cert.X509CertificateHelpers;
// ReSharper disable once CheckNamespace
namespace System
{
public static partial class HttpClientExtensions
{
const string certificateFileType = "X.509";
static readonly Lazy<CertificateFactory?> certificateFactory = new(() =>
{
var certificateFactory = CertificateFactory.GetInstance(certificateFileType);
return certificateFactory;
});
internal static CertificateFactory CertificateFactory
{
get
{
var certificateFactory = HttpClientExtensions.certificateFactory.Value;
if (certificateFactory == null)
throw new NullReferenceException(
$"CertificateFactory.GetInstance Fail, Type: {certificateFileType}");
return certificateFactory;
}
}
/// <summary>
/// 添加可信任证书,可用于调试时 HTTPS 抓包
/// </summary>
/// <param name="handler"></param>
/// <param name="certificateFileData">证书文件数据(文件流,内嵌资源流)</param>
public static void AddTrustedCert(
this AndroidClientHandler handler,
Stream certificateFileData)
/// <param name="x509CertificateStream">证书(文件流,内嵌资源流)</param>
/// <param name="leaveOpen">是否不释放流</param>
public static void AddTrustedCert(this AndroidClientHandler handler, Stream x509CertificateStream, bool leaveOpen = false)
{
var certificate = CertificateFactory.GenerateCertificate(certificateFileData);
if (certificate == null)
throw new NullReferenceException("GenerateCertificate Fail");
if (handler.TrustedCerts == null)
handler.TrustedCerts = new JavaList<Certificate>();
handler.TrustedCerts.Add(certificate);
}
/// <summary>
/// 将 .NET 中的 X509 证书对象 转换为 JVM 中的 X509 证书对象
/// <para>Java.Security.Cert.X509Certificate</para>
/// <para>=></para>
/// <para>System.Security.Cryptography.X509Certificates.X509Certificate2</para>
/// </summary>
/// <param name="certificate2"></param>
/// <returns></returns>
public static X509Certificate Convert(this X509Certificate2 certificate2)
{
using var stream = new MemoryStream(certificate2.RawData);
return CertificateFactory.GenerateCertificate(stream)!.JavaCast<X509Certificate>();
try
{
using var factory = GetX509CertificateFactory();
var x509Certificate = factory.GenerateCertificate(x509CertificateStream);
if (x509Certificate == null)
throw new ArgumentNullException(nameof(x509Certificate));
if (handler.TrustedCerts == null)
handler.TrustedCerts = new JavaList<Certificate>();
handler.TrustedCerts.Add(x509Certificate);
}
finally
{
if (!leaveOpen) x509CertificateStream.Dispose();
}
}
}
}
+40 -41
View File
@@ -1,55 +1,54 @@
using System.Linq;
using System.Linq;
// ReSharper disable once CheckNamespace
namespace System.Logging
{
internal static class LogHelper
{
/// <summary>
/// Android 的 Log Tag 名称最大长度
/// <para>如果超出此长度,会引发异常:</para>
/// <para>Java.Lang.IllegalArgumentException: Log tag "Microsoft.EntityFrameworkCore.Infrastructure" exceeds limit of 23 characters</para>
/// </summary>
public const int droid_tag_max_len = 23;
public const string Droid = "Droid";
namespace System.Logging;
public static string CutDroidTag(string name)
internal static class LogHelper
{
/// <summary>
/// Android 的 Log Tag 名称最大长度
/// <para>如果超出此长度,会引发异常:</para>
/// <para>Java.Lang.IllegalArgumentException: Log tag "Microsoft.EntityFrameworkCore.Infrastructure" exceeds limit of 23 characters</para>
/// </summary>
public const int droid_tag_max_len = 23;
public const string Droid = "Droid";
public static string CutDroidTag(string name)
{
var array = name.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
var lastItem = array.LastOrDefault(x => !string.IsNullOrWhiteSpace(x));
if (lastItem != null)
{
var array = name.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
var lastItem = array.LastOrDefault(x => !string.IsNullOrWhiteSpace(x));
if (lastItem != null)
if (lastItem.StartsWith(Droid, StringComparison.OrdinalIgnoreCase))
{
if (lastItem.StartsWith(Droid, StringComparison.OrdinalIgnoreCase))
{
lastItem = lastItem[Droid.Length..];
}
if (lastItem.Length > droid_tag_max_len)
{
return lastItem.Substring(0, droid_tag_max_len);
}
else
{
return lastItem;
}
lastItem = lastItem[Droid.Length..];
}
if (lastItem.Length > droid_tag_max_len)
{
return lastItem.Substring(0, droid_tag_max_len);
}
else
{
return "Unknown";
return lastItem;
}
}
/// <summary>
/// 根据 Name 获取 Android Log Tag
/// </summary>
/// <param name="categoryName"></param>
/// <returns></returns>
public static string GetDroidTag(string name)
else
{
if (name.Length > droid_tag_max_len)
{
return CutDroidTag(name);
}
return name;
return "Unknown";
}
}
/// <summary>
/// 根据 Name 获取 Android Log Tag
/// </summary>
/// <param name="categoryName"></param>
/// <returns></returns>
public static string GetDroidTag(string name)
{
if (name.Length > droid_tag_max_len)
{
return CutDroidTag(name);
}
return name;
}
}
@@ -1,10 +1,9 @@
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Logging;
using System.Application;
using System.Application.Services;
using System.Application.Services.Implementation;
using System.Application.Services.Implementation.Permissions;
using System.Diagnostics;
using System.Logging;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
@@ -23,24 +22,13 @@ namespace Microsoft.Extensions.DependencyInjection
}
/// <summary>
/// 添加电话服务
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection AddTelephonyService(this IServiceCollection services)
{
services.AddSingleton<ITelephonyService, PlatformTelephonyServiceImpl>();
return services;
}
/// <summary>
/// 添加平台权限
/// 添加平台运行时权限
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection AddPlatformPermissions(this IServiceCollection services)
{
services.AddTransient<IPermissions.IGetPhoneNumber, GetPhoneNumberPermission>();
services.AddTransient<Permissions2.IGetPhoneNumber, GetPhoneNumberPermission>();
return services;
}
}
@@ -1,7 +1,6 @@
namespace System.Application.Services
namespace System.Application.Services;
/// <inheritdoc cref="INavigationService"/>
public interface IPlatformNavigationService : INavigationService
{
/// <inheritdoc cref="INavigationService"/>
public interface IPlatformNavigationService : INavigationService
{
}
}
@@ -1,15 +1,14 @@
namespace System.Application.Services.Implementation
{
public abstract class PlatformNavigationServiceImpl : IPlatformNavigationService
{
public void Pop()
{
throw new NotImplementedException();
}
namespace System.Application.Services.Implementation;
public void Push(Type type, PushFlags flags = PushFlags.Empty)
{
throw new NotImplementedException();
}
public abstract class PlatformNavigationServiceImpl : IPlatformNavigationService
{
public void Pop()
{
throw new NotImplementedException();
}
public void Push(Type type, PushFlags flags = PushFlags.Empty)
{
throw new NotImplementedException();
}
}
@@ -4,6 +4,7 @@
<TargetFramework>Xamarin.iOS10</TargetFramework>
<RootNamespace>System</RootNamespace>
<AssemblyName>System.Common.ClientLib.iOS</AssemblyName>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
@@ -1,126 +1,122 @@
//using System.Diagnostics;
//using System.Diagnostics.CodeAnalysis;
//using System.IO;
//using System.Linq;
//using System.Properties;
//using System.Reflection;
//using System.Security.Cryptography;
//using System.Text;
//using _ThisAssembly = System.Properties.ThisAssembly;
//namespace System.Application
//namespace System.Application;
//[Obsolete]
//[DebuggerDisplay("{DebuggerDisplay(),nq}")]
//[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
//public sealed class AppClientAttribute : Attribute
//{
// [Obsolete]
// [DebuggerDisplay("{DebuggerDisplay(),nq}")]
// [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
// public sealed class AppClientAttribute : Attribute
// string DebuggerDisplay() => $"type: {type}";
// readonly Type? type;
// string? str;
// [NotNull, DisallowNull] // C# 8 not null
// public object? Value { get; private set; }
// public AppClientAttribute(Type type, string str)
// {
// string DebuggerDisplay() => $"type: {type}";
// readonly Type? type;
// string? str;
// [NotNull, DisallowNull] // C# 8 not null
// public object? Value { get; private set; }
// public AppClientAttribute(Type type, string str)
// {
// this.type = type;
// this.str = str;
// init();
// if (Value == null) throw new ArgumentNullException(nameof(Value));
// }
// this.type = type;
// this.str = str;
// init();
// if (Value == null) throw new ArgumentNullException(nameof(Value));
// }
//#pragma warning disable IDE1006 // 命名样式
// void init()
// void init()
//#pragma warning restore IDE1006 // 命名样式
// {
// ctor();
// {
// ctor();
// void ctor()
// {
//#if DEBUG
// var stopwatch = Stopwatch.StartNew();
//#endif
// Value = Serializable.DMPB64U(type.ThrowIsNull(nameof(type)), str)
// .ThrowIsNull(nameof(Value));
// str = null;
//#if DEBUG
// stopwatch.Stop();
// Debug.WriteLine($"AppClientAttr init 耗时:{stopwatch.ElapsedMilliseconds}ms");
//#endif
// }
// }
// [return: MaybeNull]
// public static T Get<T>(Assembly? assembly = null)
// void ctor()
// {
//#if DEBUG
// var stopwatch = Stopwatch.StartNew();
//#endif
// assembly ??= Assembly.GetCallingAssembly();
// var attrs = assembly.GetCustomAttributes<AppClientAttribute>();
// var type = typeof(T);
// var attr = attrs.FirstOrDefault(x => x.Value != null && x.type == type);
// var t = (attr != default && attr.Value is T value) ? value : default;
// Value = Serializable.DMPB64U(type.ThrowIsNull(nameof(type)), str)
// .ThrowIsNull(nameof(Value));
// str = null;
//#if DEBUG
// stopwatch.Stop();
// Debug.WriteLine($"AppClientAttr Get<{type.Name}> 耗时:{stopwatch.ElapsedMilliseconds}ms");
// Debug.WriteLine($"AppClientAttr init 耗时:{stopwatch.ElapsedMilliseconds}ms");
//#endif
// return t;
// }
// public enum ResValueFormat : byte
// {
// String,
// StringGuidD,
// StringGuidN,
// }
// public static string? GetResValue(Func<string, Stream?> func, string name, bool isSingle, string namespacePrefix, ResValueFormat format)
// {
// static string GetResFileName(string name, bool isSingle) => isSingle ? $"{name}.pfx" : $"{name}-{(_ThisAssembly.Debuggable ? "debug" : "release")}.pfx";
// static string GetResFileNameH(string name) => Hashs.String.Crc32(name, isLower: false);
// static string GetResFullName(string name, string namespacePrefix) => string.IsNullOrEmpty(namespacePrefix) ? name : namespacePrefix + name;
// static MemoryStream GetMemoryStream(Stream stream)
// {
// if (stream is not MemoryStream ms)
// {
// ms = new MemoryStream();
// stream.CopyTo(ms);
// }
// return ms;
// }
// static string ReadStream(Stream stream, ResValueFormat format)
// {
// if (format == ResValueFormat.String)
// {
// using var reader = new StreamReader(stream, EncodingCache.UTF8NoBOM);
// return reader.ReadToEnd();
// }
// if (format == ResValueFormat.StringGuidD || format == ResValueFormat.StringGuidN)
// {
// using var ms = GetMemoryStream(stream);
// var guid = new Guid(ms.ToArray());
// return format switch
// {
// ResValueFormat.StringGuidD => guid.ToString("D"),
// ResValueFormat.StringGuidN => guid.ToString("N"),
// _ => throw new ArgumentOutOfRangeException(nameof(format), format, null),
// };
// }
// else
// {
// throw new ArgumentOutOfRangeException(nameof(format), format, null);
// }
// }
// name = GetResFileName(name, isSingle);
// name = GetResFileNameH(name);
// name = GetResFullName(name, namespacePrefix);
// using var stream = func(name);
// if (stream != null) return ReadStream(stream, format);
// return null;
// }
// }
// [return: MaybeNull]
// public static T Get<T>(Assembly? assembly = null)
// {
//#if DEBUG
// var stopwatch = Stopwatch.StartNew();
//#endif
// assembly ??= Assembly.GetCallingAssembly();
// var attrs = assembly.GetCustomAttributes<AppClientAttribute>();
// var type = typeof(T);
// var attr = attrs.FirstOrDefault(x => x.Value != null && x.type == type);
// var t = (attr != default && attr.Value is T value) ? value : default;
//#if DEBUG
// stopwatch.Stop();
// Debug.WriteLine($"AppClientAttr Get<{type.Name}> 耗时:{stopwatch.ElapsedMilliseconds}ms");
//#endif
// return t;
// }
// public enum ResValueFormat : byte
// {
// String,
// StringGuidD,
// StringGuidN,
// }
// public static string? GetResValue(Func<string, Stream?> func, string name, bool isSingle, string namespacePrefix, ResValueFormat format)
// {
// static string GetResFileName(string name, bool isSingle) => isSingle ? $"{name}.pfx" : $"{name}-{(_ThisAssembly.Debuggable ? "debug" : "release")}.pfx";
// static string GetResFileNameH(string name) => Hashs.String.Crc32(name, isLower: false);
// static string GetResFullName(string name, string namespacePrefix) => string.IsNullOrEmpty(namespacePrefix) ? name : namespacePrefix + name;
// static MemoryStream GetMemoryStream(Stream stream)
// {
// if (stream is not MemoryStream ms)
// {
// ms = new MemoryStream();
// stream.CopyTo(ms);
// }
// return ms;
// }
// static string ReadStream(Stream stream, ResValueFormat format)
// {
// if (format == ResValueFormat.String)
// {
// using var reader = new StreamReader(stream, EncodingCache.UTF8NoBOM);
// return reader.ReadToEnd();
// }
// if (format == ResValueFormat.StringGuidD || format == ResValueFormat.StringGuidN)
// {
// using var ms = GetMemoryStream(stream);
// var guid = new Guid(ms.ToArray());
// return format switch
// {
// ResValueFormat.StringGuidD => guid.ToString("D"),
// ResValueFormat.StringGuidN => guid.ToString("N"),
// _ => throw new ArgumentOutOfRangeException(nameof(format), format, null),
// };
// }
// else
// {
// throw new ArgumentOutOfRangeException(nameof(format), format, null);
// }
// }
// name = GetResFileName(name, isSingle);
// name = GetResFileNameH(name);
// name = GetResFullName(name, namespacePrefix);
// using var stream = func(name);
// if (stream != null) return ReadStream(stream, format);
// return null;
// }
//}
@@ -0,0 +1,17 @@
namespace System.Application.Converters.Abstractions;
/// <summary>
/// 提供对绑定定义的高级访问,该绑定连接绑定目标对象(通常为 WPF 元素)的属性和任何数据源(例如数据库、XML 文件,或包含数据的任何对象)。
/// </summary>
public interface IBinding
{
/// <summary>
/// 用作返回值以指示绑定引擎不执行任何操作。
/// </summary>
object DoNothing { get; }
/// <summary>
/// 指定 WPF 属性系统使用的静态值,而不是 null 指示属性存在,但不具有由属性系统设置的值。
/// </summary>
object UnsetValue { get; }
}
@@ -0,0 +1,32 @@
using System.Globalization;
// https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.data.imultivalueconverter?view=windowsdesktop-6.0
// https://docs.microsoft.com/zh-cn/dotnet/api/xamarin.forms.imultivalueconverter.convertback?view=xamarin-forms
namespace System.Application.Converters.Abstractions;
/// <summary>
/// 提供在 MultiBinding 中应用自定义逻辑的方法。
/// </summary>
public interface IMultiValueConverter : IBinding
{
/// <summary>
/// 将源值转换为绑定目标的值。 数据绑定引擎在将该值从源绑定传播到绑定目标时会调用此方法。
/// </summary>
/// <param name="values">MultiBinding 中的源绑定生成的值的数组。 值 UnsetValue 指示源绑定没有可供转换的值。</param>
/// <param name="targetType">绑定目标属性的类型。</param>
/// <param name="parameter">要使用的转换器参数。</param>
/// <param name="culture">要用在转换器中的区域性。</param>
/// <returns>转换后的值。</returns>
object? Convert(IList<object?> values, Type targetType, object? parameter, CultureInfo culture);
/// <summary>
/// 将绑定目标值转换为源绑定值。
/// </summary>
/// <param name="value">绑定目标生成的值。</param>
/// <param name="targetTypes">要转换为的类型数组。 数组长度指示为要返回的方法所建议的值的数量与类型。</param>
/// <param name="parameter">要使用的转换器参数。</param>
/// <param name="culture">要用在转换器中的区域性。</param>
/// <returns>已从目标值转换回源值的值的数组。</returns>
object[]? ConvertBack(object? value, Type[] targetTypes, object? parameter, CultureInfo culture) => null;
}
@@ -0,0 +1,33 @@
using System.Globalization;
// https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.data.ivalueconverter?view=windowsdesktop-6.0
// https://docs.microsoft.com/zh-cn/dotnet/api/Xamarin.Forms.IValueConverter?view=xamarin-forms
// https://docs.microsoft.com/zh-cn/uwp/api/Windows.UI.Xaml.Data.IValueConverter?view=winrt-22000
namespace System.Application.Converters.Abstractions;
/// <summary>
/// 提供将自定义逻辑应用于绑定的方法。
/// </summary>
public interface IValueConverter : IBinding
{
/// <summary>
/// 转换值。
/// </summary>
/// <param name="value">绑定源生成的值。</param>
/// <param name="targetType">绑定目标属性的类型。</param>
/// <param name="parameter">要使用的转换器参数。</param>
/// <param name="culture">要用在转换器中的区域性。</param>
/// <returns>转换后的值。 如果该方法返回 null,则使用有效的 null 值。</returns>
object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture);
/// <summary>
/// 转换值。
/// </summary>
/// <param name="value">绑定目标生成的值。</param>
/// <param name="targetType">要转换为的类型。</param>
/// <param name="parameter">要使用的转换器参数。</param>
/// <param name="culture">要用在转换器中的区域性。</param>
/// <returns>转换后的值。 如果该方法返回 null,则使用有效的 null 值。</returns>
object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => DoNothing;
}

Some files were not shown because too many files have changed in this diff Show More