Compare commits

...
301 Commits
Author SHA1 Message Date
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
Aigio Liu 6f1c11ff33 v2.7.0 rev.3 2022-04-26 12:49:52 +08:00
RMBGAME fe31908a50 库存游戏图片编辑功能新增Steam库横版与竖版封面的自定义 2022-04-26 12:34:38 +08:00
Aigio Liu 31f6c4c32c v2.7.0 rev.2 2022-04-26 09:47:48 +08:00
dependabot[bot] 4ac8a221ed Bump Splat from 14.2.1 to 14.2.8 (#1294)
Bumps [Splat](https://github.com/reactiveui/splat) from 14.2.1 to 14.2.8.
- [Release notes](https://github.com/reactiveui/splat/releases)
- [Commits](https://github.com/reactiveui/splat/compare/14.2.1...14.2.8)

---
updated-dependencies:
- dependency-name: Splat
  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-26 09:44:45 +08:00
Mossimo 808ad66976 fix tips 2022-04-26 00:20:55 +08:00
Mossimo 9bd6f5d74f fix BasicsInfoAsync 2022-04-26 00:18:53 +08:00
Aigio Liu 0e08852567 fix 2022-04-25 23:44:54 +08:00
Aigio Liu 39f7cd8c1c fix
DownloadScript FileWrite catch, url:https://steampp.net/uploads/js/00000000000000000000000000000001/0.31.js, cachePath:Cache\Scripts\7e09dff759b91c87245ffdf73d544b91.download_cache | System.IO.IOException: The process cannot access the file 'Cache\Scripts\7e09dff759b91c87245ffdf73d544b91.download_cache' because it is being used by another process.
   at System.IO.FileSystem.DeleteFile(String fullPath)
   at System.IO.FileInfo.Delete()
   at System.Application.Services.Implementation.ScriptManager.DownloadScriptAsync(String url)
2022-04-25 23:38:47 +08:00
Aigio Liu 9d43183003 v2.7.0 rev.1 2022-04-25 22:46:58 +08:00
Aigio Liu aaf9a8c807 fix
Warn|HttpService|GetImageAsync_ Fail. | System.IO.IOException: The process cannot access the file 'Cache\Images\SteamAvatars\9943b8295aca0d050070724d526545239d0db5c9d07405cc62c6c6e35a0478fe.imgsrc.download-cache' because it is being used by another process.

Error|System.Application.Services.Implementation.ScriptManager|脚本读取异常请检查语法是否有错误:The file 'AppData\Scripts\7e09dff759b91c87245ffdf73d544b91.js' already exists.

global::Windows.ApplicationModel.Package.Current catch
2022-04-25 22:46:57 +08:00
Aigio Liu 3342ab0483 v2.7.0 rev.0 2022-04-25 19:52:44 +08:00
Aigio Liu 08ee9c11ef fix 2022-04-25 18:56:19 +08:00
Aigio Liu b6733bf965 修正格式 2022-04-25 18:28:32 +08:00
Aigio Liu 416f88d993 Add Microsoft.IdentityModel.Protocols 2022-04-25 10:09:45 +08:00
RMBGAME a82f27542e Misc 2022-04-25 08:44:13 +08:00
RMBGAME 37bb1ce4fe Misc 2022-04-25 08:38:08 +08:00
Aigio Liu f73031acd3 fix 2022-04-24 19:29:49 +08:00
Aigio Liu 27ecde90f4 fix packages version 2022-04-24 19:26:29 +08:00
Mossimo aefb1282e7 fix 2022-04-24 19:02:04 +08:00
Mossimo 1871eeff69 公告添加参数 设备类型 平台类型 2022-04-24 19:00:37 +08:00
Aigio Liu 5eaba8c5d4 Update AndroidNotificationServiceImpl & ASF 2022-04-24 17:41:13 +08:00
RMBGAME c092eb046e AuthTrade Use Image2 Control 2022-04-24 08:50:53 +08:00
RMBGAME e28ce37edd Misc 2022-04-24 08:50:46 +08:00
Aigio Liu cd6d7e7243 Update ASF V5.2.5.3 2022-04-21 11:35:01 +08:00
dependabot[bot]andAigio L da055b48d1 Bump AspNet.Security.OAuth.Apple from 6.0.5 to 6.0.6 (#1281)
Bumps [AspNet.Security.OAuth.Apple](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers) from 6.0.5 to 6.0.6.
- [Release notes](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/releases)
- [Commits](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/compare/6.0.5...6.0.6)

---
updated-dependencies:
- dependency-name: AspNet.Security.OAuth.Apple
  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-21 09:01:16 +08:00
dependabot[bot] 6e9bf51b1d Bump AspNet.Security.OAuth.QQ from 6.0.5 to 6.0.6 (#1282)
Bumps [AspNet.Security.OAuth.QQ](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers) from 6.0.5 to 6.0.6.
- [Release notes](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/releases)
- [Commits](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/compare/6.0.5...6.0.6)

---
updated-dependencies:
- dependency-name: AspNet.Security.OAuth.QQ
  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-21 09:00:44 +08:00
RMBGAME b74bd54ae1 fix #1277 2022-04-21 07:28:42 +08:00
Mossimo 5f9a25868e rename 2022-04-19 17:26:59 +08:00
dependabot[bot] 2a6d400831 Bump Xamarin.Build.Download from 0.11.0 to 0.11.1 (#1275)
Bumps [Xamarin.Build.Download](https://github.com/xamarin/XamarinComponents) from 0.11.0 to 0.11.1.
- [Release notes](https://github.com/xamarin/XamarinComponents/releases)
- [Commits](https://github.com/xamarin/XamarinComponents/compare/ARCore-0.11.0...Xamarin.Build.Download-0.11.1)

---
updated-dependencies:
- dependency-name: Xamarin.Build.Download
  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-19 10:27:12 +08:00
Aigio Liu 55f71a335c 修复嵌套 ViewPager2 导致滑动冲突,实现 Android 端【不再提醒】的 MessageBox,修复【不再提醒】因 null 引发的失效 2022-04-18 19:16:44 +08:00
RMBGAME 984286e6cd update steamaccount load method 2022-04-18 18:47:23 +08:00
RMBGAME ffbde37ce1 CustomFilePicker fileTypes 2022-04-18 17:43:59 +08:00
RMBGAME 7c93df07ca 修复win jumplist切换Steam Beta账号失效问题 2022-04-18 17:25:03 +08:00
Mossimo 1fc4adc4f3 fix linux 2022-04-18 17:00:11 +08:00
Mossimo ec4a224a0c fix 2022-04-18 16:35:43 +08:00
RMBGAME 4093323510 fix 2022-04-18 15:36:15 +08:00
RMBGAME 56ef576ec0 非Windows上保存自定义图片时获取用户方式改进 2022-04-18 15:33:38 +08:00
Aigio Liu cff783ae52 fix 2022-04-18 14:07:06 +08:00
RMBGAME fbbba8708f Misc 2022-04-18 13:07:37 +08:00
Aigio Liu 38acfa7760 fix 2022-04-18 13:04:13 +08:00
RMBGAME c86a9a5b04 Update release-template.md 2022-04-18 12:58:00 +08:00
Aigio Liu 0ac7ba5b1d Misc 2022-04-18 12:39:26 +08:00
RMBGAME 9260d8a5ca replace avalonia logo image 2022-04-18 08:25:38 +08:00
RMBGAME 33d017f990 Update Nuget Package 2022-04-18 08:25:32 +08:00
Mossimo c755f90a4e Add JumpUrl
通知服务处理
2022-04-17 18:21:29 +08:00
Aigio Liu 77928273bf NoticeDTO : NotificationBuilder.IInterface 2022-04-17 17:11:19 +08:00
Aigio Liu 15f83c9094 DateTimeOffset CustomTimeStamp 2022-04-17 15:43:41 +08:00
Aigio Liu 0c9abed768 Add Windows10NotificationServiceImpl 2022-04-17 13:46:05 +08:00
RMBGAME b883655ad9 change contact info 2022-04-17 09:57:10 +08:00
RMBGAME 4b9fdc6787 Update FluentAvalonia 2022-04-17 09:24:30 +08:00
RMBGAME 01c731a13a 修复某些情况库存游戏会卡住无限加载的问题 2022-04-17 08:56:07 +08:00
RMBGAME 998862823c SteamApp Edit Feature 99% 2022-04-17 07:54:02 +08:00
Aigio Liu e02764c7ce 改进 INotificationService,修复 net6.0-android sqlite 依赖错误 2022-04-17 01:07:03 +08:00
RMBGAME 1bbd5b425b SteamApp Edit Feature 90% 2022-04-16 11:41:28 +08:00
RMBGAME baed8b9ee5 保存游戏编辑信息到Steam AppInfo文件中 2022-04-16 11:41:20 +08:00
dependabot[bot] b76a31d246 Bump Z.EntityFramework.Plus.EFCore from 6.13.16 to 6.13.17 (#1260)
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.13.16 to 6.13.17.
- [Release notes](https://github.com/zzzprojects/EntityFramework-Plus/releases)
- [Commits](https://github.com/zzzprojects/EntityFramework-Plus/compare/6.13.16...6.13.17)

---
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-16 08:58:10 +08:00
dependabot[bot] 843562a5d3 Bump Xamarin.Google.MLKit.BarcodeScanning from 116.1.2.3 to 116.1.2.5 (#1266)
Bumps [Xamarin.Google.MLKit.BarcodeScanning](https://github.com/xamarin/GooglePlayServicesComponents) from 116.1.2.3 to 116.1.2.5.
- [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-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-16 08:57:54 +08:00
RMBGAME 0b22813a8c 修复保存修改后的SteamGridDB图片时的错误 2022-04-15 07:34:04 +08:00
RMBGAME 857dfbd0d7 Update Image2 2022-04-15 06:43:37 +08:00
RMBGAME 9cd2647f73 修复从steamdb加载预览图失败问题 2022-04-15 06:43:37 +08:00
RMBGAME 1dc9087962 AppCard 2022-04-15 06:43:28 +08:00
dependabot[bot] 4b89619286 Bump DynamicData from 7.6.5 to 7.6.7 (#1264)
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.6.5 to 7.6.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.6.5...7.6.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-04-14 16:17:17 +08:00
Aigio Liu e6f376e5ea fix 2022-04-14 08:12:48 +08:00
Aigio Liu a69aa24b56 Update .NET SDK 6.0.202 / Runtime 6.0.4 2022-04-13 11:19:50 +08:00
RMBGAME add400fbae SaveEditedAppInfo UI 2022-04-13 01:39:03 +08:00
Aigio Liu 157d205df9 Update Xamarin.Forms 5.0.0.2401 2022-04-12 13:24:57 +08:00
dependabot[bot]andAigio L 2706d63f69 Bump ReactiveUI.XamForms from 17.1.50 to 18.0.7 (#1240)
Bumps [ReactiveUI.XamForms](https://github.com/reactiveui/reactiveui) from 17.1.50 to 18.0.7.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/17.1.50...18.0.7)

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

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-12 09:17:42 +08:00
dependabot[bot] 965bb36e65 Bump de.hdodenhof.circleimageview from 3.1.0.1 to 3.1.0.4 (#1241)
Bumps [de.hdodenhof.circleimageview](https://github.com/AigioL/xamarin-bindings) from 3.1.0.1 to 3.1.0.4.
- [Release notes](https://github.com/AigioL/xamarin-bindings/releases)
- [Commits](https://github.com/AigioL/xamarin-bindings/commits)

---
updated-dependencies:
- dependency-name: de.hdodenhof.circleimageview
  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-12 09:17:07 +08:00
dependabot[bot] 3ef8f16ea1 Bump XAB.FlexboxLayout from 3.0.0.1 to 3.0.0.2 (#1242)
Bumps [XAB.FlexboxLayout](https://github.com/AigioL/xamarin-bindings) from 3.0.0.1 to 3.0.0.2.
- [Release notes](https://github.com/AigioL/xamarin-bindings/releases)
- [Commits](https://github.com/AigioL/xamarin-bindings/commits)

---
updated-dependencies:
- dependency-name: XAB.FlexboxLayout
  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-12 09:16:50 +08:00
dependabot[bot] 91fd62cdd7 Bump ReactiveUI.AndroidX from 17.1.50 to 18.0.7 (#1243)
Bumps [ReactiveUI.AndroidX](https://github.com/reactiveui/reactiveui) from 17.1.50 to 18.0.7.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/17.1.50...18.0.7)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-12 09:16:45 +08:00
dependabot[bot] 1a93067529 Bump XAB.TinyPinyin from 2.0.4.2 to 2.0.4.4 (#1244)
Bumps [XAB.TinyPinyin](https://github.com/AigioL/xamarin-bindings) from 2.0.4.2 to 2.0.4.4.
- [Release notes](https://github.com/AigioL/xamarin-bindings/releases)
- [Commits](https://github.com/AigioL/xamarin-bindings/commits)

---
updated-dependencies:
- dependency-name: XAB.TinyPinyin
  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-12 09:16:36 +08:00
dependabot[bot] c299bc1b3a Bump ReactiveUI from 17.1.50 to 18.0.7 (#1245)
Bumps [ReactiveUI](https://github.com/reactiveui/reactiveui) from 17.1.50 to 18.0.7.
- [Release notes](https://github.com/reactiveui/reactiveui/releases)
- [Commits](https://github.com/reactiveui/reactiveui/compare/17.1.50...18.0.7)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-12 09:16:24 +08:00
dependabot[bot] 6a03055ba0 Bump actions/upload-artifact from 2 to 3 (#1235)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 16:00:18 +08:00
dependabot[bot] 41e1192b25 Bump NLog from 4.7.14 to 4.7.15 (#1176)
Bumps [NLog](https://github.com/NLog/NLog) from 4.7.14 to 4.7.15.
- [Release notes](https://github.com/NLog/NLog/releases)
- [Changelog](https://github.com/NLog/NLog/blob/v4.7.15/CHANGELOG.md)
- [Commits](https://github.com/NLog/NLog/compare/v4.7.14...v4.7.15)

---
updated-dependencies:
- dependency-name: NLog
  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-11 11:22:54 +08:00
dependabot[bot] 9845d1a505 Bump Z.EntityFramework.Plus.EFCore from 6.13.15 to 6.13.16 (#1183)
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.13.15 to 6.13.16.
- [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-11 11:22:40 +08:00
Aigio Liu 2433ea1fa7 Publish Tool now GenerateCompressedPackage on Linux use Zstd 2022-04-11 08:38:50 +08:00
Aigio Liu d474332b35 try fix #1234 2022-04-10 22:40:00 +08:00
Aigio Liu 2fac37f9c2 Replace with package XAB.TinyPinyin & fix UnitTest 2022-04-09 18:39:01 +08:00
RMBGAME b045c98097 库存游戏编辑后保存功能 2022-04-09 00:41:36 +08:00
Aigio Liu cd6fb1e912 fix error NETSDK1148 2022-04-08 21:58:44 +08:00
RMBGAME 50df449b63 编辑库存游戏时图片保存 2022-04-08 20:42:24 +08:00
Aigio Liu 52fed1d494 Add FileSystemBase.InitFileSystemUseDestFirst 2022-04-08 16:49:28 +08:00
Aigio Liu 97bb658cda Update Swashbuckle.AspNetCore 6.3.0 & Add OSName ChromeOS 2022-04-08 14:34:35 +08:00
dependabot[bot] 26133671ee Bump Xamarin.Essentials from 1.7.1 to 1.7.2 (#1227)
Bumps [Xamarin.Essentials](https://github.com/xamarin/Essentials) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/xamarin/Essentials/releases)
- [Commits](https://github.com/xamarin/Essentials/compare/1.7.1...1.7.2)

---
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-04-08 09:24:28 +08:00
RMBGAME b87d610e1d Merge pull request #1206 from BeyondDimension/dependabot/nuget/Avalonia.Xaml.Behaviors-0.10.13.3
Bump Avalonia.Xaml.Behaviors from 0.10.13.2 to 0.10.13.3
2022-04-07 17:54:57 +08:00
Aigio Liu 070e4b909c fix HostsFileTest on Linux Fail 2022-04-06 17:44:52 +08:00
Aigio Liu 876f7706ff fix CI 2022-04-06 17:36:30 +08:00
Aigio Liu 999cd90c61 try fix CI 2022-04-06 15:50:02 +08:00
Aigio Liu 7151851812 try fix CI 2022-04-06 15:21:00 +08:00
Aigio Liu 498e9ededb Android MainActivity3 Impl & Update Nuget Packages 2022-04-06 14:33:54 +08:00
dependabot[bot] f3c040d621 Bump Avalonia.Xaml.Behaviors from 0.10.13.2 to 0.10.13.3
Bumps [Avalonia.Xaml.Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors) from 0.10.13.2 to 0.10.13.3.
- [Release notes](https://github.com/wieslawsoltes/AvaloniaBehaviors/releases)
- [Commits](https://github.com/wieslawsoltes/AvaloniaBehaviors/compare/0.10.13.2...0.10.13.3)

---
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>
2022-04-05 23:19:38 +00:00
Aigio Liu 6bc806b9a9 try fix CI 2022-04-05 20:54:58 +08:00
Aigio Liu d39e9437a8 try fix CI 2022-04-05 20:18:41 +08:00
Aigio Liu 7b70591914 net6.0-android experimental fix complete 2022-04-05 20:02:25 +08:00
RMBGAME 50c68dcaf3 MessageWindow在高DPI下显示效果改进 2022-04-03 20:01:18 +08:00
Mossimo f6f38eaf34 完善证书相关操作。 2022-04-03 19:52:02 +08:00
Aigio Liu a7306d7478 fix CI 2022-04-03 18:32:20 +08:00
Aigio Liu e1e59cc66b net6.0-android experimental 2022-04-03 11:51:59 +08:00
RMBGAME 1610ee0165 better 2022-04-03 00:52:42 +08:00
RMBGAME b17534ef57 库存游戏编辑功能进度推进 2022-04-03 00:52:34 +08:00
Mossimo 2475f59ff1 优化Mac证书安装(弹出控制台),修复现在可以正确识别证书是否信任,修复现在证书在Mac上会正确的安装到 用户的证书下 不再安装到系统下证书。 2022-04-02 23:13:45 +08:00
Aigio Liu dc1415c0ce fix src/ST.Client/ST.Client.csproj Reference 2022-04-02 20:20:07 +08:00
Aigio Liu 9b1eb631c1 Android SignOut Impl 2022-04-02 20:16:45 +08:00
RMBGAME 97566df29d 修正未启动Steam时加载游戏列表没有及时刷新的问题 2022-04-02 14:00:06 +08:00
RMBGAME e0fbe76b97 SteamGridDBDialog 2022-04-02 13:59:57 +08:00
Aigio Liu 2f76b78ffd fix Android ThirdPartyLoginHelper.StartServer catch & update android screenshot & fix NotificationServiceImpl 2022-04-02 13:45:43 +08:00
Mossimo 5179ad8827 Merge pull request #1189 from BeyondDimension/feature/account-info
Feature/account info
2022-04-02 12:49:23 +08:00
Mossimo ce222da8ef fix 2022-04-02 12:35:19 +08:00
RMBGAME 31dd1731df 支持从 SteamGridDB 匹配获取自定义封面 2022-04-01 17:33:31 +08:00
Mossimo 5388425f1d 2022-04-01 16:48 2022-04-01 16:48:06 +08:00
Mossimo 56687596c6 2022-04-01 16:36 2022-04-01 16:39:10 +08:00
Mossimo edf5acc455 封面图更新,点击打开 详情 2022-04-01 16:33:43 +08:00
Aigio Liu b21972db50 fix Resx Values 2022-04-01 11:11:17 +08:00
Aigio Liu 7a12b50ba4 Add ProxyMode Resx String 2022-04-01 11:04:57 +08:00
RMBGAME cfb5796cb6 fix #1186 2022-03-31 16:59:29 +08:00
RMBGAME faecc2b4d8 SteamApp Edit Save 2022-03-31 16:51:01 +08:00
Aigio Liu c3c7c889d4 ProxySettings.ProxyMode replace ProxySettings.IsVpnMode 2022-03-28 22:31:38 +08:00
RMBGAME e29e7a8f0e Update FluentAvalonia 2022-03-26 00:15:46 +08:00
Aigio Liu 3723e0866f #1167 当使用 IPC.config 时,程序内打开网页端口号值不正确 2022-03-25 22:45:02 +08:00
Mossimo bf5ca108e0 DeleteCer security delete-certificate -Z Sha-1 2022-03-25 17:37:51 +08:00
Aigio Liu 69e60440e1 fix Android Guide Pages Test API 21 🆗 2022-03-25 10:22:01 +08:00
RMBGAME 76e75abbc2 Merge pull request #1166 from BeyondDimension/dependabot/nuget/Avalonia.Xaml.Behaviors-0.10.13.2
Bump Avalonia.Xaml.Behaviors from 0.10.13 to 0.10.13.2
2022-03-25 07:45:52 +08:00
dependabot[bot] df7c1d62fb Bump Avalonia.Xaml.Behaviors from 0.10.13 to 0.10.13.2
Bumps [Avalonia.Xaml.Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors) from 0.10.13 to 0.10.13.2.
- [Release notes](https://github.com/wieslawsoltes/AvaloniaBehaviors/releases)
- [Commits](https://github.com/wieslawsoltes/AvaloniaBehaviors/compare/0.10.13...0.10.13.2)

---
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>
2022-03-24 23:21:38 +00:00
Aigio Liu ceabdaaa64 fix Android Guide Pages Test API 31 🆗 2022-03-25 00:17:47 +08:00
Aigio Liu 170dc355b7 use NextRequestCode() 2022-03-24 19:29:28 +08:00
Aigio Liu 0b9bccf1e3 Android Guide Pages 2022-03-24 19:21:54 +08:00
dependabot[bot] 91ce45feda Bump Avalonia.Xaml.Behaviors from 0.10.12.2 to 0.10.13
Bumps [Avalonia.Xaml.Behaviors](https://github.com/wieslawsoltes/AvaloniaBehaviors) from 0.10.12.2 to 0.10.13.
- [Release notes](https://github.com/wieslawsoltes/AvaloniaBehaviors/releases)
- [Commits](https://github.com/wieslawsoltes/AvaloniaBehaviors/compare/0.10.12.2...0.10.13)

---
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>
2022-03-24 13:35:57 +08:00
RMBGAME 61722994b1 起始页UI更新 2022-03-24 08:47:00 +08:00
RMBGAME 15557ecd74 改进部分UI问题 2022-03-24 07:49:58 +08:00
RMBGAME 53b2c514a5 新增库存游戏类型筛选状态保存 2022-03-24 06:23:32 +08:00
Mossimo 517a259e4e move to debug 2022-03-23 17:11:29 +08:00
Mossimo f15d005771 按钮 , 文本多语言 2022-03-23 17:10:02 +08:00
Mossimo 9f9478f0e5 修改Tab名 2022-03-23 16:52:40 +08:00
Mossimo 3822a646de hb dev 2022-03-23 16:35:13 +08:00
Mossimo 35d4bc83e6 账户历史记录窗口 2022-03-23 16:30:06 +08:00
RMBGAME f7a5646836 Merge pull request #794 from BeyondDimension/feature/edit-game-info
v2.7.0 累计改动提交
2022-03-23 15:02:03 +08:00
Aigio Liu 29820061e1 fix slnf 2022-03-23 14:57:21 +08:00
RMBGAME 281332be71 fix https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/1089197758u/overview
修复菜单切换社区加速UI错位问题 fix #915
修复菜单切换时会错误的重置当前页面的一些状态,例如ASF滚动条无法置底问题
2022-03-23 14:37:23 +08:00
RMBGAME 92f1eb9585 Merge branch 'develop' into feature/edit-game-info 2022-03-23 10:29:19 +08:00
RMBGAME 0b9fdcc0b6 StartPage 2022-03-23 10:27:11 +08:00
Aigio Liu d83c0536c9 Add System.Runtime.CompilerServices.IsExternalInit 2022-03-23 10:24:26 +08:00
RMBGAME d95559e36a Add StartPage & Update New Icon 2022-03-23 08:06:54 +08:00
RMBGAME 185532c79a 修正高DPI下主菜单图标模糊问题 2022-03-23 05:20:26 +08:00
dependabot[bot] c6710ddf2c Bump Z.EntityFramework.Plus.EFCore from 6.13.14 to 6.13.15
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.13.14 to 6.13.15.
- [Release notes](https://github.com/zzzprojects/EntityFramework-Plus/releases)
- [Commits](https://github.com/zzzprojects/EntityFramework-Plus/compare/6.13.14...6.13.15)

---
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>
2022-03-22 11:10:00 +08:00
dependabot[bot] 537fc51d49 Bump NUnit from 3.13.2 to 3.13.3
Bumps [NUnit](https://github.com/nunit/nunit) from 3.13.2 to 3.13.3.
- [Release notes](https://github.com/nunit/nunit/releases)
- [Changelog](https://github.com/nunit/nunit/blob/v3.13.3/CHANGES.md)
- [Commits](https://github.com/nunit/nunit/compare/v3.13.2...v3.13.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-22 11:07:47 +08:00
Aigio Liu ed3cf8d36e Update README & Update Android About UI 2022-03-21 21:13:02 +08:00
RMBGAME 09ab684548 Merge branch 'develop' into feature/edit-game-info 2022-03-21 08:49:44 +08:00
RMBGAME fbe0d85d12 UI 样式优化调整 2022-03-21 08:44:19 +08:00
RMBGAME 5887602e31 fix ex 2022-03-21 07:42:02 +08:00
RMBGAME e0bbb58c1a Merge branch 'develop' into feature/edit-game-info 2022-03-21 06:40:30 +08:00
RMBGAME 3b3bcc856a rename FilePicker 2022-03-21 06:38:49 +08:00
Aigio Liu 846c9feac1 fix IsAdministrator 2022-03-19 16:18:25 +08:00
Aigio Liu 8f7930450f v2.7.0 in progress 2022-03-19 14:02:29 +08:00
Aigio Liu c913f623e9 finish Android VpnService 2022-03-19 13:28:05 +08:00
Aigio Liu 21a2dc8d31 add arrays.xml 2022-03-19 13:28:04 +08:00
Aigio Liu eef90d9aaf IsAdministrator Impl => ASF IsRunningAsRoot
Add OnMainOpenTryShowNewVersionWindow
2022-03-17 19:11:14 +08:00
RMBGAME 7e1b4bd820 fix https://appcenter.ms/orgs/BeyondDimension/apps/Steam/crashes/errors/1887110022u 2022-03-17 18:47:03 +08:00
Mossimo 2af95b4491 Linux 可以监听443端口配置 2022-03-17 17:48:31 +08:00
Mossimo 5167c6cbfe fix build osxapp 2022-03-17 15:14:25 +08:00
RMBGAME c551cd278e Merge branch 'develop' into feature/edit-game-info 2022-03-17 15:07:20 +08:00
RMBGAME 258aa518a9 hosts加速模式下不能使用仅启用脚本功能 2022-03-17 14:41:51 +08:00
Mossimo 6158b30364 tryfix 2022-03-17 14:11:11 +08:00
Mossimo f721c6695f try build 2022-03-17 13:54:53 +08:00
Mossimo a8c7a6fe02 try fix 2022-03-17 13:37:46 +08:00
Mossimo 8969f7008c tryFixOsxBuild SH 2022-03-17 13:12:24 +08:00
Aigio Liu f0e6a4fb8f fix OSXBuild 2022-03-17 12:45:35 +08:00
Aigio Liu e647d195fa fix OSXBuild 2022-03-17 10:48:09 +08:00
Aigio Liu 229e9644de fix Publish Tool OSXBuild & Add Debug Command 2022-03-17 10:45:23 +08:00
Aigio Liu ea59d32c93 add x86 Native Library README 2022-03-17 10:44:51 +08:00
Aigio Liu d794fb6a22 Add Native Library README.md
fix Android Java.Lang.NoSuchMethodError: no non-static method "Landroid/widget/CompoundButton;.getButtonDrawable()Landroid/graphics/drawable/Drawable;"
https://developer.android.google.cn/reference/kotlin/android/widget/CompoundButton?hl=en#getbuttondrawable
try fix AuthService.ImportSteamGuard NullReferenceException
2022-03-17 10:16:34 +08:00
Mossimo 62ad711dbd try build osx 2022-03-16 13:35:31 +08:00
RMBGAME 2f472a55ad 完成 FilePicker UI 2022-03-16 12:47:28 +08:00
Aigio Liu 588d663216 fix osx-arm64.pubxml 2022-03-16 11:53:46 +08:00
Aigio Liu 5510b4915c add libe_sqlite3.dylib 2022-03-16 11:53:20 +08:00
Aigio Liu f3649d3246 fix macos-arm64 pubxml 2022-03-16 11:33:08 +08:00
RMBGAME fe45b39c8f Merge branch 'develop' into feature/edit-game-info 2022-03-16 09:47:10 +08:00
RMBGAME c59fb1076c Merge pull request #1109 from BeyondDimension/dependabot/submodules/references/AvaloniaGif-7b41651
Bump references/AvaloniaGif from `016cf27` to `7b41651`
2022-03-16 09:46:13 +08:00
RMBGAME 7717188152 Update FluentAvalonia 2022-03-16 09:45:27 +08:00
RMBGAME 8e78557f16 50% 2022-03-16 09:38:19 +08:00
Aigio Liu 835083b899 Remove Microsoft Store 2022-03-15 08:53:42 +08:00
RMBGAME 1588749280 SteamGridDB API Added 2022-03-15 07:07:06 +08:00
RMBGAME 69c6baf39e FilePicker Control 2022-03-14 03:39:15 +08:00
RMBGAME 36bff3751d only installed load launch items 2022-03-12 03:53:37 +08:00
Mossimo 86df7af88d fix 2022-03-12 03:22:22 +08:00
RMBGAME 09edd5dc3d Merge branch 'develop' into feature/edit-game-info 2022-03-12 03:16:14 +08:00
RMBGAME cd599de46a async 2022-03-12 03:14:48 +08:00
RMBGAME 3d8001dc75 async EnableProxyScripts 2022-03-12 03:11:11 +08:00
Mossimo da3a1e9d9d fix 2022-03-12 03:02:16 +08:00
RMBGAME 49aff6e7dc UI 2022-03-12 02:49:03 +08:00
Mossimo bf34c219a1 fix 2022-03-12 02:41:31 +08:00
RMBGAME efbc17d15f Merge branch 'develop' into feature/edit-game-info 2022-03-12 02:32:16 +08:00
RMBGAME 682165d90e Bump references/AvaloniaGif from 016cf27 to 7b41651 2022-03-12 02:30:00 +08:00
RMBGAME 046d60112c 编辑游戏支持启动项获取 2022-03-12 02:25:00 +08:00
Mossimo 927439c80d 优化脚本占用 不启动加速不占用内存
this.WhenAnyValue(v => v.ProxyScripts) add   if (httpProxyService.ProxyRunning)
2022-03-11 23:37:18 +08:00
Aigio Liu a28f8fa1e1 Add Shadowsocks.VpnService Impl & Store App Rename 2022-03-11 23:12:01 +08:00
dependabot[bot] 29cc793628 Bump Square.OkHttp3 from 4.9.2 to 4.9.3
Bumps [Square.OkHttp3](https://github.com/xamarin/XamarinComponents) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/xamarin/XamarinComponents/releases)
- [Commits](https://github.com/xamarin/XamarinComponents/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-11 12:58:47 +08:00
dependabot[bot] 42f8971bd7 Bump DynamicData from 7.6.2 to 7.6.5
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.6.2 to 7.6.5.
- [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.2...7.6.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-11 12:58:17 +08:00
Aigio Liu f98473246c Add Shadowsocks Kotlin Code 2022-03-09 20:57:53 +08:00
dependabot[bot] e9bbbd8a32 Bump DynamicData from 7.5.4 to 7.6.2
Bumps [DynamicData](https://github.com/reactiveui/DynamicData) from 7.5.4 to 7.6.2.
- [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.5.4...7.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-09 11:01:55 +08:00
dependabot[bot] 9a6c52b88f Bump Swashbuckle.AspNetCore from 6.2.3 to 6.3.0
Bumps [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 6.2.3 to 6.3.0.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v6.2.3...v6.3.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>
2022-03-09 11:01:07 +08:00
Aigio Liu a603fdd834 Update .NET 6.0.3
https://devblogs.microsoft.com/dotnet/march-2022-updates
2022-03-09 09:50:14 +08:00
dependabot[bot] a5343bb2b2 Bump references/AvaloniaGif from 016cf27 to 7b41651
Bumps [references/AvaloniaGif](https://github.com/SteamTools-Team/AvaloniaGif) from `016cf27` to `7b41651`.
- [Release notes](https://github.com/SteamTools-Team/AvaloniaGif/releases)
- [Commits](https://github.com/SteamTools-Team/AvaloniaGif/compare/016cf27b57504bece57657ed6707e1ea3ffab02f...7b4165159df6948f9e8b35632cb42d626a1454f9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-08 23:25:44 +00:00
RMBGAME e14eec48e9 改进库存游戏信息读取优化内存占用 2022-03-09 07:12:38 +08:00
RMBGAME 2f2923fdb8 Merge branch 'develop' into feature/edit-game-info 2022-03-09 02:20:58 +08:00
Aigio Liu f41fd35d78 Update ProxySettings.DefaultProxyMode 2022-03-09 00:31:23 +08:00
Aigio Liu 32e90b672f Add ProxyMode 2022-03-09 00:29:12 +08:00
RMBGAME ad98879d5c Update FluentAvalonia 2022-03-09 00:14:07 +08:00
Aigio Liu 61a4f05480 fix Android VpnService 2022-03-08 23:52:56 +08:00
Aigio Liu 3a8a232f98 fix V2RayVpnService AddDisallowedApplication this 2022-03-08 20:30:25 +08:00
Aigio Liu 52897064dd fix 2022-03-08 16:43:26 +08:00
Aigio Liu e202f4ae5e fix 2022-03-08 14:09:36 +08:00
Aigio Liu f51ce974de New MS Store Id 2022-03-08 11:06:18 +08:00
dependabot[bot] 4806dbcf27 Bump System.CommandLine from 2.0.0-beta1.21308.1 to 2.0.0-beta3.22114.1
Bumps [System.CommandLine](https://github.com/dotnet/command-line-api) from 2.0.0-beta1.21308.1 to 2.0.0-beta3.22114.1.
- [Release notes](https://github.com/dotnet/command-line-api/releases)
- [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md)
- [Commits](https://github.com/dotnet/command-line-api/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-08 10:23:18 +08:00
dependabot[bot] e1db44af68 Bump Moq from 4.17.1 to 4.17.2
Bumps [Moq](https://github.com/moq/moq4) from 4.17.1 to 4.17.2.
- [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.1...v4.17.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-08 10:22:48 +08:00
Aigio Liu d6031c8acd API RefreshUserInfo 2022-03-07 10:25:32 +08:00
vanja-san 2852c630e9 Update SR.ru.resx 2022-03-06 10:51:15 +08:00
vanja-san 8a06b7d09f Update SR.ru.resx 2022-03-06 10:51:08 +08:00
vanja-san c14e548b0f Update SR.ru.resx 2022-03-06 10:51:03 +08:00
vanja-san 0820c880ac Update SR.ru.resx 2022-03-06 10:45:59 +08:00
vanja-san 84e3752f88 Update AppResources.ru.resx 2022-03-06 10:45:45 +08:00
Aigio Liu 1f62313978 Remove Resx Key [Script_Installed] & fix ru lost Resx Key [Settings_General_LogSize] 2022-03-05 21:44:49 +08:00
Aigio Liu ffcf0f0ff0 New translator author(Russian: vanja-san) 2022-03-05 21:30:18 +08:00
vanja-san c01a9157e2 Update AppResources.ru.resx 2022-03-05 20:56:55 +08:00
Aigio Liu 13db16b07c Update Android Packages
fix 空令牌刷新时提示密码错误
fix 令牌列表第一条与最后一条的内填充上下
2022-03-04 22:33:49 +08:00
Aigio Liu 33b76c6622 Android Change/BindPhoneNum Impl 2022-03-04 19:40:26 +08:00
Aigio Liu 6c905ab4c7 v2.6.9 2022-03-03 17:30:16 +08:00
Aigio Liu cb16f7690d Update JustArchiNET.Madness 3.3.0 2022-03-03 17:22:12 +08:00
Aigio Liu 2c80c2d80c Update ASF V5.2.3.5 2022-03-03 17:22:11 +08:00
RMBGAME 778a76a36e bump Avalonia package to 0.10.13 2022-03-03 16:57:33 +08:00
RMBGAME 660fb687f3 fix authtrade a error toast 2022-03-02 23:16:04 +08:00
RMBGAME 39766838df Merge pull request #1069 from BeyondDimension/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2 to 3
2022-03-02 22:58:59 +08:00
RMBGAME 12e438c8cd Merge pull request #1061 from BeyondDimension/dependabot/github_actions/actions/setup-dotnet-2
Bump actions/setup-dotnet from 1 to 2
2022-03-02 22:58:40 +08:00
Mossimo c5eae6a980 鼠标移动到头像上遮罩层 2022-03-02 18:42:18 +08:00
RMBGAME e249b0a60f fix 2022-03-02 18:24:52 +08:00
dependabot[bot] c407d0d5c7 Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 23:28:41 +00:00
Mossimo 8e50c843f0 完善个人中心 2022-03-01 22:53:04 +08:00
Aigio Liu 8a4fcaa539 fix ChangeLanguageCore 2022-03-01 22:53:04 +08:00
RMBGAME 15fc32dd46 proxy UA edit 2022-03-01 22:53:04 +08:00
RMBGAME fb9cb68957 fix UI error 2022-03-01 22:53:04 +08:00
Aigio Liu 91152a55fc linux archive format changed from 7z to tar.zst 2022-03-01 22:53:04 +08:00
Aigio Liu 8aebbe2b0a Update nuget Packages & Add AccelerateProjectDTO.UserAgent & fix Android AutoRun 2022-03-01 22:53:03 +08:00
Aigio Liu ecf085c7c4 Desktop ASF Config Page UI 2022-03-01 22:53:03 +08:00
RMBGAME 13d6b6213f New Desktop About UI Style 2022-03-01 22:53:03 +08:00
Aigio Liu 9c49c82db9 fix Android FilePicker2 PermissionException & new Android ASF Config UI & #1025 2022-03-01 22:53:03 +08:00
Aigio Liu 428b841712 Android DonateActivity 2022-03-01 22:53:03 +08:00
Aigio Liu 716210b089 Android DonateActivity & ASF Update v5.2.2.5 2022-03-01 22:53:03 +08:00
dependabot[bot] 2b2ccdd3b1 Bump Z.EntityFramework.Plus.EFCore from 6.13.9 to 6.13.10
Bumps [Z.EntityFramework.Plus.EFCore](https://github.com/zzzprojects/EntityFramework-Plus) from 6.13.9 to 6.13.10.
- [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>
2022-03-01 22:53:02 +08:00
dependabot[bot] 8d0e857df5 Bump Microsoft.NET.Test.Sdk from 17.0.0 to 17.1.0
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.0.0 to 17.1.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](https://github.com/microsoft/vstest/compare/v17.0.0...v17.1.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>
2022-03-01 22:53:01 +08:00
RMBGAME 978f0d8f51 Update .Net SDK 6.0.200 2022-03-01 22:53:01 +08:00
RMBGAME b4b0303426 修复部分UI错误 2022-03-01 22:53:01 +08:00
RMBGAME f4c928c46c 改进移除令牌提示 2022-03-01 22:53:01 +08:00
Aigio Liu 34a25ceabe Android Donate Page UI 2022-03-01 22:53:01 +08:00
Aigio Liu 90a5f30802 Android UserBasicInfoFragment UID Copy 2022-03-01 22:53:00 +08:00
Mossimo 3f113c96aa change color 2022-03-01 22:53:00 +08:00
dependabot[bot] d54b828135 Bump actions/setup-dotnet from 1 to 2
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 1 to 2.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v1...v2)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-27 23:19:41 +00:00
Aigio Liu 7ce53f11aa Add AccelerateProjectDTO.UserAgent 2022-02-24 13:56:28 +08:00
Aigio Liu 90c0513493 Add UserAgent 2022-02-24 12:36:28 +08:00
Mossimo 2a42ce2caf a 2022-02-22 18:07:04 +08:00
RMBGAME 6480d258bf Merge branch 'develop' into feature/edit-game-info 2022-02-22 00:46:42 +08:00
Mossimo c1f6781fa9 AccountPage TryAdd 2022-02-19 15:08:04 +08:00
Mossimo 467c0f4975 update 2022-02-14 21:27:42 +08:00
Mossimo e7d8e636d2 Accountpage 2022-02-06 12:41:34 +08:00
Mossimo 3855291c68 save 2022-01-11 18:08:36 +08:00
Mossimo d0d1baac29 通知公告(OK) 样式待微调 2021-12-30 23:28:34 +08:00
Mossimo 1c50fdf4af save 2021-12-27 23:50:41 +08:00
Mossimo c1b889f887 mvvm 2021-12-27 23:23:36 +08:00
Mossimo fa84523799 尝试修复GM刷新排序 2021-12-21 15:53:18 +08:00
Mossimo 160f3d53bb 跳过 cloudflare 浏览器检测 实现操作太复杂放弃,cookie 跨域无法解决,用户自己填写Cookie 操作麻烦 2021-12-16 16:56:39 +08:00
Mossimo ed77ad8d2d add window 2021-12-14 20:39:39 +08:00
RMBGAME 3fd32b3196 show editgameapp menu 2021-12-14 00:43:58 +08:00
659 changed files with 22115 additions and 16062 deletions
+190 -1
View File
@@ -17,7 +17,7 @@ charset = utf-8
[Makefile]
indent_style = tab
[*.{js,json,xaml,axaml,xml,resx,resw,csproj,wapproj,appxmanifest,.props}]
[*.{js,json,xaml,axaml,xml,resx,resw,csproj,wapproj,appxmanifest,props}]
indent_style = space
indent_size = 2
@@ -240,3 +240,192 @@ dotnet_style_namespace_match_folder = false
# IDE0130: 命名空间与文件夹结构不匹配
dotnet_diagnostic.IDE0130.severity = none
# IDE0055: 修正格式
dotnet_diagnostic.IDE0055.severity = error
# IDE1006: 命名样式
dotnet_diagnostic.IDE1006.severity = error
# SA1600: Elements should be documented
dotnet_diagnostic.SA1600.severity = none
# SA1629: Documentation text should end with a period
dotnet_diagnostic.SA1629.severity = silent
# SA1101: Prefix local calls with this
dotnet_diagnostic.SA1101.severity = silent
# SA1623: Property summary documentation should match accessors
dotnet_diagnostic.SA1623.severity = none
# SA1200: Using directives should be placed correctly
dotnet_diagnostic.SA1200.severity = none
# SA1208: System using directives should be placed before other using directives
dotnet_diagnostic.SA1208.severity = silent
# Default severity for analyzer diagnostics with category 'StyleCop.CSharp.LayoutRules'
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.LayoutRules.severity = error
# SA1400: Access modifier should be declared
dotnet_diagnostic.SA1400.severity = silent
# SA1633: File should have header
dotnet_diagnostic.SA1633.severity = silent
# SA1128: Put constructor initializers on their own line
dotnet_diagnostic.SA1128.severity = silent
# SA1413: Use trailing comma in multi-line initializers
dotnet_diagnostic.SA1413.severity = suggestion
# SA1005: Single line comments should begin with single space
dotnet_diagnostic.SA1005.severity = none
# SA1515: Single-line comment should be preceded by blank line
dotnet_diagnostic.SA1515.severity = silent
# SA1512: Single-line comments should not be followed by blank line
dotnet_diagnostic.SA1512.severity = silent
# SA1122: Use string.Empty for empty strings
dotnet_diagnostic.SA1122.severity = silent
# SA1616: Element return value documentation should have text
dotnet_diagnostic.SA1616.severity = silent
# SA1310: Field names should not contain underscore
dotnet_diagnostic.SA1310.severity = silent
# SA1137: Elements should have the same indentation
dotnet_diagnostic.SA1137.severity = error
# SA1503: Braces should not be omitted
dotnet_diagnostic.SA1503.severity = silent
# SA1513: Closing brace should be followed by blank line
dotnet_diagnostic.SA1513.severity = silent
# SA1402: File may only contain a single type
dotnet_diagnostic.SA1402.severity = silent
# SA1133: Do not combine attributes
dotnet_diagnostic.SA1133.severity = silent
# SA1011: Closing square brackets should be spaced correctly
dotnet_diagnostic.SA1011.severity = silent
# SA1502: Element should not be on a single line
dotnet_diagnostic.SA1502.severity = silent
# SA1201: Elements should appear in the correct order
dotnet_diagnostic.SA1201.severity = silent
# SA1505: Opening braces should not be followed by blank line
dotnet_diagnostic.SA1505.severity = silent
# SA1508: Closing braces should not be preceded by blank line
dotnet_diagnostic.SA1508.severity = silent
# SA1614: Element parameter documentation should have text
dotnet_diagnostic.SA1614.severity = silent
# SA1116: Split parameters should start on line after declaration
dotnet_diagnostic.SA1116.severity = silent
# SA1601: Partial elements should be documented
dotnet_diagnostic.SA1601.severity = silent
# SA1009: Closing parenthesis should be spaced correctly
dotnet_diagnostic.SA1009.severity = silent
# SA1202: Elements should be ordered by access
dotnet_diagnostic.SA1202.severity = silent
# SA1311: Static readonly fields should begin with upper-case letter
dotnet_diagnostic.SA1311.severity = silent
# SA1127: Generic type constraints should be on their own line
dotnet_diagnostic.SA1127.severity = silent
# SA1503: Braces should not be omitted
dotnet_diagnostic.SA1503.severity = silent
# SA1649: File name should match first type name
dotnet_diagnostic.SA1649.severity = silent
# SA1210: Using directives should be ordered alphabetically by namespace
dotnet_diagnostic.SA1210.severity = silent
# SA1028: Code should not contain trailing whitespace
dotnet_diagnostic.SA1028.severity = silent
# SA1204: Static elements should appear before instance elements
dotnet_diagnostic.SA1204.severity = silent
# SA1203: Constants should appear before fields
dotnet_diagnostic.SA1203.severity = silent
# SA1123: Do not place regions within elements
dotnet_diagnostic.SA1123.severity = silent
# SA1615: Element return value should be documented
dotnet_diagnostic.SA1615.severity = silent
# SA1611: Element parameters should be documented
dotnet_diagnostic.SA1611.severity = silent
# SA1124: Do not use regions
dotnet_diagnostic.SA1124.severity = silent
# SA1520: Use braces consistently
dotnet_diagnostic.SA1520.severity = silent
# SA1107: Code should not contain multiple statements on one line
dotnet_diagnostic.SA1107.severity = silent
# SA1312: Variable names should begin with lower-case letter
dotnet_diagnostic.SA1312.severity = error
# SA1519: Braces should not be omitted from multi-line child statement
dotnet_diagnostic.SA1519.severity = silent
# SA1000: Keywords should be spaced correctly
dotnet_diagnostic.SA1000.severity = silent
# SA1205: Partial elements should declare access
dotnet_diagnostic.SA1205.severity = silent
# SA1401: Fields should be private
dotnet_diagnostic.SA1401.severity = silent
# SA1622: Generic type parameter documentation should have text
dotnet_diagnostic.SA1622.severity = silent
# SA1627: Documentation text should not be empty
dotnet_diagnostic.SA1627.severity = silent
# SA1403: File may only contain a single namespace
dotnet_diagnostic.SA1403.severity = silent
# SA1602: Enumeration items should be documented
dotnet_diagnostic.SA1602.severity = silent
# SA1108: Block statements should not contain embedded comments
dotnet_diagnostic.SA1108.severity = silent
# SA1642: Constructor summary documentation should begin with standard text
dotnet_diagnostic.SA1642.severity = silent
# SA1117: Parameters should be on same line or separate lines
dotnet_diagnostic.SA1117.severity = silent
# SA1501: Statement should not be on a single line
dotnet_diagnostic.SA1501.severity = silent
# SA1500: Braces for multi-line statements should not share line
dotnet_diagnostic.SA1500.severity = silent
# SA1518: Use line endings correctly at end of file
dotnet_diagnostic.SA1518.severity = silent
+24 -15
View File
@@ -17,18 +17,19 @@ jobs:
fail-fast: false
matrix:
configuration: [ Debug, Release ]
os: [ windows-latest, macOS-latest, ubuntu-latest ]
# os: [ windows-latest, macOS-latest, ubuntu-latest ]
os: [ windows-latest, macOS-latest ]
# rid: [ fd-win-x64, win-x64, osx-x64, linux-x64,linux-arm64 ]
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
@@ -40,16 +41,24 @@ jobs:
if: matrix.os == 'windows-latest'
run: dotnet workload install macos
- name: Install Maui(Windows)
- 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 maui
run: dotnet workload install android
# - name: Install Maui(Windows)
# if: matrix.os == 'windows-latest'
# run: dotnet workload install maui
- name: Verify dotnet info
run: dotnet --info
- name: Checkout Credentials repository
if: ${{ matrix.os == 'windows-latest' && !startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' }}
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: SteamTools-Team/Credentials
token: ${{ secrets.REPO_TOKEN }}
@@ -86,9 +95,9 @@ jobs:
- name: Run ST.Client.Desktop.UnitTest
run: dotnet test ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj -c "${{ matrix.configuration }}"
# - name: dotnet ST.Client.Desktop.UnitTest test
# if: matrix.os != 'windows-latest'
# run: dotnet test ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj
- name: dotnet ST.Client.Desktop.UnitTest test
if: matrix.os != 'windows-latest'
run: dotnet test ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj
- name: Get Short CommitId
if: ${{ matrix.os == 'windows-latest' && !startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' }}
@@ -117,7 +126,7 @@ jobs:
- name: Upload fd-win-x64 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@v2
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_win_x64_fde_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_win_x64_fde_${{ env.GITHUB_SHA_SHORT }}.7z
@@ -125,7 +134,7 @@ jobs:
- name: Upload win-x64 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@v2
uses: actions/upload-artifact@v3
with:
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
@@ -133,7 +142,7 @@ jobs:
- 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' }}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_macos_x64_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_macos_x64_${{ env.GITHUB_SHA_SHORT }}.7z
@@ -141,7 +150,7 @@ jobs:
- name: Upload macos-arm64 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@v2
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_macos_arm64_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_macos_arm64_${{ env.GITHUB_SHA_SHORT }}.7z
@@ -149,7 +158,7 @@ jobs:
- name: Upload linux-x64 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@v2
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_linux_x64_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_linux_x64_${{ env.GITHUB_SHA_SHORT }}.tar.zst
@@ -157,7 +166,7 @@ jobs:
- name: Upload linux-arm64 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@v2
uses: actions/upload-artifact@v3
with:
name: '[${{ matrix.configuration }}]${{ env.ProjectName }}_linux_arm64_${{ env.GITHUB_SHA_SHORT }}'
path: src\ST.Client.Desktop.Avalonia.App\bin\${{ matrix.configuration }}\Publish\${{ env.ProjectName }}_linux_arm64_${{ env.GITHUB_SHA_SHORT }}.tar.zst
+7 -7
View File
@@ -22,13 +22,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
@@ -52,7 +52,7 @@ jobs:
- name: Checkout NSIS-Build repository
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: SteamTools-Team/NSIS-Build
token: ${{ secrets.REPO_TOKEN }}
@@ -60,7 +60,7 @@ jobs:
- name: Checkout Credentials repository
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: SteamTools-Team/Credentials
token: ${{ secrets.REPO_TOKEN }}
@@ -264,13 +264,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
@@ -314,7 +314,7 @@ jobs:
- name: Checkout Credentials repository
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: SteamTools-Team/Credentials
token: ${{ secrets.REPO_TOKEN }}
+2 -2
View File
@@ -18,13 +18,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
+277 -255
View File
@@ -1,295 +1,317 @@
<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.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.2" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.2" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.2" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.2" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.2" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.2" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.2" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.2" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="6.0.2" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.2" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.2" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('net5.0')) ">
<!-- Microsoft.Extensions.* & AspNetCore & EntityFrameworkCore(NET50) -->
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="5.0.12" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="5.0.12" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="5.0.12" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.12" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="5.0.14" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.14" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.14" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.14" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.14" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.14" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.14" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.14" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="5.0.14" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.14" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.14" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) Or $(TargetFramework.StartsWith('netcoreapp3.1'))">
<!-- Microsoft.Extensions.* & AspNetCore & EntityFrameworkCore(NETCOREAPP31) -->
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="3.1.22" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="3.1.22" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="3.1.22" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.22" />
<PackageVersion Include="Microsoft.Extensions.Logging.AzureAppServices" Version="3.1.22" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.22" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="3.1.22" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.22" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.22" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.22" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.22" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.22" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.22" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.22" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.22" />
</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.12" />
<ItemGroup Condition=" $(TargetFramework.StartsWith('net6.0')) ">
<!-- Microsoft.Extensions.* & AspNetCore & EntityFrameworkCore(NET60) -->
<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" />
</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" />
</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.18" />
<!-- AspNetCore 6 OpenId/OAuth -->
<PackageVersion Include="AspNet.Security.OpenId.Steam" Version="6.0.0" />
<PackageVersion Include="AspNet.Security.OAuth.QQ" Version="6.0.4" />
<PackageVersion Include="AspNet.Security.OAuth.Apple" Version="6.0.4" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net48' Or '$(TargetFramework)' == 'net472' Or '$(TargetFramework)' == 'net471' Or '$(TargetFramework)' == 'net46' Or '$(TargetFramework)' == 'net462' Or '$(TargetFramework)' == 'net461' Or '$(TargetFramework)' == 'net45' Or '$(TargetFramework)' == 'net452' Or '$(TargetFramework)' == 'net451' ">
<!-- WindowsRuntime(NETFX) & PowerShell 5 -->
<PackageVersion Include="System.Runtime.WindowsRuntime" Version="4.7.0" />
<PackageVersion Include="System.Runtime.WindowsRuntime.UI.Xaml" Version="4.7.0" />
<PackageVersion Include="Microsoft.PowerShell.5.ReferenceAssemblies" Version="1.1.0" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) Or $(TargetFramework.StartsWith('net5.0')) Or $(TargetFramework.StartsWith('netcoreapp3.1')) Or $(TargetFramework.StartsWith('netcoreapp3.0')) Or $(TargetFramework.StartsWith('netcoreapp2.2')) Or $(TargetFramework.StartsWith('netcoreapp2.1')) Or $(TargetFramework.StartsWith('netcoreapp2.0')) ">
<!-- .NET Platform Extensions 5 -->
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) ">
<!-- BCL(NETSTANDARD) -->
<PackageVersion Include="System.Text.Json" Version="6.0.2" />
<PackageVersion Include="System.Text.Encodings.Web" Version="6.0.0" />
<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.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.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" />
<!-- AspNetCore 6 OpenId/OAuth -->
<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" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net48' Or '$(TargetFramework)' == 'net472' Or '$(TargetFramework)' == 'net471' Or '$(TargetFramework)' == 'net46' Or '$(TargetFramework)' == 'net462' Or '$(TargetFramework)' == 'net461' Or '$(TargetFramework)' == 'net45' Or '$(TargetFramework)' == 'net452' Or '$(TargetFramework)' == 'net451' ">
<!-- WindowsRuntime(NETFX) & PowerShell 5 -->
<PackageVersion Include="System.Runtime.WindowsRuntime" Version="4.7.0" />
<PackageVersion Include="System.Runtime.WindowsRuntime.UI.Xaml" Version="4.7.0" />
<PackageVersion Include="Microsoft.PowerShell.5.ReferenceAssemblies" Version="1.1.0" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) Or $(TargetFramework.StartsWith('net5.0')) Or $(TargetFramework.StartsWith('netcoreapp3.1')) Or $(TargetFramework.StartsWith('netcoreapp3.0')) Or $(TargetFramework.StartsWith('netcoreapp2.2')) Or $(TargetFramework.StartsWith('netcoreapp2.1')) Or $(TargetFramework.StartsWith('netcoreapp2.0')) ">
<!-- .NET Platform Extensions 5 -->
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) ">
<!-- BCL(NETSTANDARD) -->
<PackageVersion Include="System.Text.Json" Version="6.0.2" />
<PackageVersion Include="System.Text.Encodings.Web" Version="6.0.0" />
<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.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.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" />
<!-- 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="nor0x.AppCenter" Version="4.4.0-XMAC" />
<!-- 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="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" />
<!-- .NET Platform Extensions 6 -->
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="6.0.0" />
<!-- Xamarin -->
<PackageVersion Include="Xamarin.Essentials" Version="1.7.1" />
<!-- Xamarin.Forms -->
<PackageVersion Include="Xamarin.Forms" Version="5.0.0.2337" />
<PackageVersion Include="Xamarin.Forms.Visual.Material" Version="5.0.0.2337" />
<PackageVersion Include="Xam.Plugins.Forms.ImageCircle" Version="3.1.1.1-beta" />
<!-- Xamarin -->
<PackageVersion Include="Xamarin.Essentials" Version="1.7.2" />
<!-- Xamarin.Forms -->
<PackageVersion Include="Xamarin.Forms" Version="5.0.0.2401" />
<PackageVersion Include="Xamarin.Forms.Visual.Material" Version="5.0.0.2401" />
<PackageVersion Include="Xam.Plugins.Forms.ImageCircle" Version="3.1.1.1-beta" />
<!-- NUnit & NUnit.Xamarin & Moq -->
<PackageVersion Include="NUnit" Version="3.13.2" />
<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.1" />
<!-- 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" />
<!-- NLog -->
<PackageVersion Include="NLog" Version="4.7.14" />
<PackageVersion Include="NLog.Extensions.Logging" Version="1.7.4" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="4.14.0" />
<!-- 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" />
<!-- ReactiveUI -->
<PackageVersion Include="System.Reactive" Version="5.0.0" />
<PackageVersion Include="Splat" Version="14.1.45" />
<PackageVersion Include="DynamicData" Version="7.5.4" />
<PackageVersion Include="ReactiveUI" Version="17.1.50" />
<!--<PackageVersion Include="ReactiveUI.Fody" Version="17.1.50" /> -->
<PackageVersion Include="ReactiveUI.XamForms" Version="17.1.50" />
<PackageVersion Include="ReactiveUI.AndroidX" Version="17.1.50" />
<!-- ReactiveUI -->
<PackageVersion Include="System.Reactive" Version="5.0.0" />
<PackageVersion Include="Splat" Version="14.2.8" />
<PackageVersion Include="DynamicData" Version="7.7.1" />
<PackageVersion Include="ReactiveUI" Version="18.0.10" />
<!--<PackageVersion Include="ReactiveUI.Fody" Version="17.1.50" /> -->
<PackageVersion Include="ReactiveUI.XamForms" Version="18.0.10" />
<PackageVersion Include="ReactiveUI.AndroidX" Version="18.0.10" />
<!-- SkiaSharp & HarfBuzzSharp -->
<PackageVersion Include="HarfBuzzSharp" Version="2.8.2-preview.187" />
<PackageVersion Include="HarfBuzzSharp.NativeAssets.Linux" Version="2.8.2-preview.187" />
<PackageVersion Include="SkiaSharp" Version="2.88.0-preview.187" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.0-preview.187" />
<!-- SkiaSharp & HarfBuzzSharp -->
<!-- https://github.com/AvaloniaUI/Avalonia/blob/master/build/HarfBuzzSharp.props -->
<PackageVersion Include="HarfBuzzSharp" Version="2.8.2-preview.254" />
<PackageVersion Include="HarfBuzzSharp.NativeAssets.Linux" Version="2.8.2-preview.254" />
<!-- https://github.com/AvaloniaUI/Avalonia/blob/master/build/SkiaSharp.props -->
<PackageVersion Include="SkiaSharp" Version="2.88.0-preview.254" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.0-preview.254" />
<!-- 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.3" />
<PackageVersion Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
<!-- 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" />
<!-- QRCode -->
<!--<PackageVersion Include="QRCoder" Version="1.4.2" />-->
<PackageVersion Include="Net.Codecrete.QrCodeGenerator" Version="2.0.1" />
<!-- QRCode -->
<!--<PackageVersion Include="QRCoder" Version="1.4.2" />-->
<PackageVersion Include="Net.Codecrete.QrCodeGenerator" Version="2.0.1" />
<!-- 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" />-->
<!-- 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" />-->
<!-- Compression -->
<PackageVersion Include="SharpZipLib" Version="1.3.3" />
<PackageVersion Include="Squid-Box.SevenZipSharp.Lite" Version="1.5.0.366" />
<PackageVersion Include="ZstdNet" Version="1.4.5" />
<!-- Compression -->
<PackageVersion Include="SharpZipLib" Version="1.3.3" />
<PackageVersion Include="Squid-Box.SevenZipSharp.Lite" Version="1.5.0.366" />
<PackageVersion Include="ZstdNet" Version="1.4.5" />
<!-- Algorithm -->
<PackageVersion Include="Crc32.NET" Version="1.2.0" />
<PackageVersion Include="gfoidl.Base64" Version="1.1.1" />
<!-- Algorithm -->
<PackageVersion Include="Crc32.NET" Version="1.2.0" />
<PackageVersion Include="gfoidl.Base64" Version="1.1.1" />
<!--Command Line Tools-->
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta1.21308.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" />
<!-- Pinyin -->
<PackageVersion Include="TinyPinyin.Net" Version="1.0.2" />
<!-- Pinyin -->
<PackageVersion Include="TinyPinyin.Net" Version="1.0.2" />
<PackageVersion Include="XAB.TinyPinyin" Version="2.0.4.4" />
<!-- Win32/Windows -->
<PackageVersion Include="TaskScheduler" Version="2.10.1" />
<!-- Win32/Windows -->
<PackageVersion Include="TaskScheduler" Version="2.10.1" />
<!-- Swagger -->
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.2.3" />
<!-- 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" />
<!-- Pay -->
<!--<PackageVersion Include="AlipaySDKNet.Standard" Version="4.6.109" />-->
<!-- Pay -->
<!--<PackageVersion Include="AlipaySDKNet.Standard" Version="4.6.109" />-->
<!-- Excel -->
<PackageVersion Include="NPOI" Version="2.5.5" />
<!-- Excel -->
<PackageVersion Include="NPOI" Version="2.5.6" />
<!-- Github API -->
<PackageVersion Include="Octokit" Version="0.50.0" />
<!-- Github API -->
<PackageVersion Include="Octokit" Version="0.51.0" />
<!-- ORM -->
<PackageVersion Include="sqlite-net-pcl" Version="1.8.116" />
<PackageVersion Include="SQLitePCLRaw.bundle_green" Version="2.0.7" />
<!-- ORM -->
<PackageVersion Include="sqlite-net-pcl" Version="1.8.116" />
<PackageVersion Include="SQLitePCLRaw.bundle_green" Version="2.1.0-pre20220427180151" />
<!-- MonoMac(NETSTANDARD) -->
<PackageVersion Include="MonoMac.NetStandard" Version="0.0.4" />
<!-- 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.2.1" />
<!-- .NET Compat -->
<PackageVersion Include="OperatingSystem2" Version="1.4.3" />
<PackageVersion Include="JustArchiNET.Madness" Version="3.5.2" />
<!-- Serialize -->
<PackageVersion Include="MessagePack" Version="2.3.85" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
<!-- Serialize -->
<PackageVersion Include="MessagePack" Version="2.3.85" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
<!-- Html Parser -->
<PackageVersion Include="HtmlAgilityPack" Version="1.11.42" />
<!-- Html Parser -->
<PackageVersion Include="HtmlAgilityPack" Version="1.11.42" />
<!-- Clipboard -->
<PackageVersion Include="TextCopy" Version="6.1.0" />
<!-- Clipboard -->
<PackageVersion Include="TextCopy" Version="6.1.0" />
<!-- Nito.* -->
<PackageVersion Include="Nito.Comparers" Version="6.2.2" />
<!--<PackageVersion Include="Nito.Disposables" Version="2.2.1" />-->
<!-- Nito.* -->
<PackageVersion Include="Nito.Comparers" Version="6.2.2" />
<!--<PackageVersion Include="Nito.Disposables" Version="2.2.1" />-->
<!-- Valve Data File -->
<!--<PackageVersion Include="Gameloop.Vdf" Version="0.6.1" />-->
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
<PackageVersion Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
<!-- Valve Data File -->
<!--<PackageVersion Include="Gameloop.Vdf" Version="0.6.1" />-->
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
<PackageVersion Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
<!-- WebSocket -->
<PackageVersion Include="Fleck" Version="1.2.0" />
<!-- WebSocket -->
<PackageVersion Include="Fleck" Version="1.2.0" />
<!-- DNS -->
<PackageVersion Include="DnsClient" Version="1.6.0" />
<!-- DNS -->
<PackageVersion Include="DnsClient" Version="1.6.0" />
<!-- Cryptographic Algorithms & Protocols -->
<PackageVersion Include="Portable.BouncyCastle" Version="1.9.0" />
<!-- Cryptographic Algorithms & Protocols -->
<PackageVersion Include="Portable.BouncyCastle" Version="1.9.0" />
<!-- Resilience & Transient Fault Handling -->
<PackageVersion Include="Polly" Version="7.2.3" />
<!-- Resilience & Transient Fault Handling -->
<PackageVersion Include="Polly" Version="7.2.3" />
<!--Avalonia Start-->
<PackageVersion Include="Avalonia" Version="0.10.12" />
<PackageVersion Include="Avalonia.Desktop" Version="0.10.12" />
<PackageVersion Include="Avalonia.Skia" Version="0.10.12" />
<PackageVersion Include="Avalonia.Diagnostics" Version="0.10.12" />
<PackageVersion Include="Avalonia.ReactiveUI" Version="0.10.12" />
<!--<PackageVersion Include="Avalonia.Direct2D1" Version="0.10.12" />-->
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="0.10.12" />
<PackageVersion Include="Avalonia.Xaml.Behaviors" Version="0.10.12.2" />
<!--<PackageVersion Include="Avalonia.AvaloniaEdit" Version="0.10.4" />-->
<!--<PackageVersion Include="CefNet.Avalonia" Version="93.1.21240.857" />-->
<!--<PackageVersion Include="LibVLCSharp.Avalonia" Version="3.5.1" />-->
<!--<PackageVersion Include="FluentAvaloniaUI" Version="1.1.8" />-->
<PackageVersion Include="JumpLists.Win32.Avalonia" Version="1.0.0" />
<!--Avalonia End-->
<!--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.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="JumpLists.Win32.Avalonia" Version="1.0.0" />
<PackageVersion Include="Avalonia.Native" Version="0.10.13" />
<PackageVersion Include="Avalonia.Win32" Version="0.10.13" />
<PackageVersion Include="Avalonia.X11" Version="0.10.13" />
<!--Avalonia End-->
<!-- Xamarin.Android -->
<PackageVersion Include="Xamarin.Google.Dagger" Version="2.39.1" />
<PackageVersion Include="Xamarin.Google.MLKit.BarcodeScanning" Version="116.1.2.3" />
<PackageVersion Include="Plugin.CurrentActivity" Version="2.1.0.4" />
<PackageVersion Include="de.hdodenhof.circleimageview" Version="3.1.0.1" />
<PackageVersion Include="Square.OkHttp3" Version="4.9.2" />
<PackageVersion Include="Square.Picasso" Version="2.71828.0" />
<!--<PackageVersion Include="LeakCanaryBinding" Version="1.5.1.1" />-->
<!--<PackageVersion Include="TencentOpenApiSDK.Android" Version="3.5.4.11" />-->
<PackageVersion Include="XAB.FlexboxLayout" Version="3.0.0" />
<!-- V2Ray -->
<PackageVersion Include="XAB.AndroidLibV2rayLite" Version="1.0.0.1" />
<PackageVersion Include="Karamunting.KotlinX.Coroutines.Core" Version="1.4.2" />
<PackageVersion Include="Naxam.RxJava.Droid" Version="1.3.8-pre1" />
<!-- Xamarin.AndroidX -->
<PackageVersion Include="Xamarin.AndroidX.Migration" Version="1.0.8" />
<PackageVersion Include="Xamarin.AndroidX.AppCompat" Version="1.3.1.5" />
<PackageVersion Include="Xamarin.AndroidX.Emoji.AppCompat" Version="1.1.0.7" />
<PackageVersion Include="Xamarin.AndroidX.Fragment" Version="1.3.6.5" />
<PackageVersion Include="Xamarin.AndroidX.Navigation.Fragment" Version="2.3.5.5" />
<PackageVersion Include="Xamarin.AndroidX.RecyclerView" Version="1.2.1.5" />
<PackageVersion Include="Xamarin.Google.Android.Material" Version="1.4.0.6" />
<PackageVersion Include="Xamarin.AndroidX.SwipeRefreshLayout" Version="1.1.0.7" />
<PackageVersion Include="Xamarin.AndroidX.ConstraintLayout" Version="2.1.2.2" />
<PackageVersion Include="Xamarin.AndroidX.Navigation.UI" Version="2.3.5.5" />
<PackageVersion Include="Xamarin.AndroidX.ViewPager2" Version="1.0.0.14" />
<PackageVersion Include="Xamarin.AndroidX.Activity" Version="1.4.0.1" />
<PackageVersion Include="Xamarin.AndroidX.Biometric" Version="1.1.0.8" />
<PackageVersion Include="Xamarin.AndroidX.ExifInterface" Version="1.3.3.4" />
<PackageVersion Include="Xamarin.AndroidX.Legacy.Support.Core.UI" Version="1.0.0.13" />
<PackageVersion Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.4.0.2" />
<PackageVersion Include="Xamarin.AndroidX.Camera.Camera2" Version="1.0.2.3" />
<PackageVersion Include="Xamarin.AndroidX.Camera.Lifecycle" Version="1.0.2.3" />
<PackageVersion Include="Xamarin.AndroidX.Camera.View" Version="1.0.0.5-alpha20" />
<!--<PackageVersion Include="Xamarin.AndroidX.Window" Version="1.0.0.3-beta02" />-->
<!-- Xamarin.Android -->
<PackageVersion Include="Xamarin.Build.Download" Version="0.11.1" />
<PackageVersion Include="Xamarin.Google.Dagger" Version="2.39.1" />
<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" />
<PackageVersion Include="Square.OkHttp3" Version="4.9.3" />
<PackageVersion Include="Square.Picasso" Version="2.71828.0" />
<!--<PackageVersion Include="LeakCanaryBinding" Version="1.5.1.1" />-->
<!--<PackageVersion Include="TencentOpenApiSDK.Android" Version="3.5.4.11" />-->
<PackageVersion Include="XAB.FlexboxLayout" Version="3.0.0.2" />
<!-- Xamarin.iOS -->
<PackageVersion Include="Toast.iOS" Version="1.2.0" />
<!-- 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" />
</ItemGroup>
<!-- 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" />-->
<!-- Xamarin.iOS -->
<PackageVersion Include="Toast.iOS" Version="1.2.0" />
<!-- UWP -->
<PackageVersion Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.2" />
<!-- Code Style -->
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.406" />
</ItemGroup>
</Project>
+18 -13
View File
@@ -4,7 +4,7 @@
English | [简体中文](./README.md)
「Steam++」is a toolkit that contains a variety of Steam tools, most of which require you to download and install Steam in order to use them.
"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.
![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)
@@ -32,19 +32,24 @@ English | [简体中文](./README.md)
- [GitHub Releases](https://github.com/BeyondDimension/SteamTools/releases)
- [Gitee Releases](https://gitee.com/rmbgame/SteamTools/releases)
- [Official WebSite](https://steampp.net)
- [![Microsoft Store](./resources/MSStore_English.png)](https://www.microsoft.com/store/apps/9MTCFHS560NG)
- [Arch Linux Package](https://aur.archlinux.org/packages/steam%2B%2B-bin)(By [zhanghua000](https://github.com/zhanghua000))
## ✨ Functions
1. Local reverse proxy for Steam's community webpage to enable normal access in **the Chinese Mainland, Mainland of China**
2. Quickly switch the Steam account that the current PC has remembered to log into
- This feature is to read the local user login records stored under the Steam path to directly display the operation, you can switch between multiple accounts without re-entering passwords and tokens.
3. Achievement stat modifications for Steam games
- Function reference SteamAchievementManager for secondary development, modified the game list loading and operation ease of use.
4. Steam Local Two-Step Authenticator
- The function reference [WinAuth](https://github.com/winauth/winauth) is developed to enable you to view your token without launching the mobile version of Steam App, similar function software are [WinAuth](https://github.com/winauth/winauth), [SteamDesktopAuthenticator](https://github.com/Jessecar96/SteamDesktopAuthenticator).
5. Some game tools
- Currently there is a forced game borderless windowing.
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)
- 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)
- 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)
- 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)
- 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)
- 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
@@ -57,7 +62,7 @@ OS | Version | Architectures
[Windows Server][Windows-Server] | 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+
**\*** 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
@@ -117,7 +122,7 @@ OS | Version | Architectures
OS | Version | Architectures |
------------------------------|---------------------------|-------------------|
[macOS][macOS] | 10.14+ | x64 |
[macOS][macOS] | 10.15+ | x64, Arm64 |
[macOS]: https://support.apple.com/macos
+20 -20
View File
@@ -4,7 +4,7 @@
[English](./README.en.md) | 简体中文
「Steam++」是一个包含多种Steam工具功能的工具箱,此工具的大部分功能都是需要您下载安装Steam才能使用。
「Steam++」是一个开源跨平台的多功能游戏工具箱,此工具的大部分功能都是需要您下载安装 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)
@@ -33,26 +33,24 @@
- [GitHub Releases](https://github.com/BeyondDimension/SteamTools/releases)
- [Gitee Releases](https://gitee.com/rmbgame/SteamTools/releases)
- [Official WebSite](https://steampp.net)
- [![Microsoft Store](./resources/MSStore_English.png)](https://www.microsoft.com/store/apps/9MTCFHS560NG)
- [Arch Linux Package](https://aur.archlinux.org/packages/steam%2B%2B-bin)(By [zhanghua000](https://github.com/zhanghua000))
## ✨ 功能
1. 反代 Steam 的社区网页使其能正常访问
- 功能类似羽翼城大佬的 [steamcommunity_302](https://www.dogfight360.com/blog/686/)
- 使用 [Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy) 开源项目进行本地反代,使国内用户可以正常访问 Steam 社区页
- 相比 **302工具** 具有更快的启动速度,以及支持简单的脚本注入(还顺便支持了Pixiv、Discord、Twitch等网站的反代支持)
2. 快速切换当前设备已记住登陆的 Steam 账号
- 该功能是读取 Steam 路径下存储的本地用户登录记录直接展示操作,可以多账号切换无需重新输入密码和令牌
3. Steam游戏的成就统计管理功能
- 功能参考 [SteamAchievementManager](https://github.com/gibbed/SteamAchievementManager) 进行二次开发,修改了游戏列表的加载和操作易用性
4. Steam本地两步身份验证器
- 功能参考 [WinAuth](https://github.com/winauth/winauth) 开发,可以使您不用启动移动版 Steam App 也能查看您的令牌
- 本地令牌交易市场报价确认
- 功能类似的软件例如:
- [WinAuth](https://github.com/winauth/winauth)
- [SteamDesktopAuthenticator](https://github.com/Jessecar96/SteamDesktopAuthenticator)
5. 其他游戏工具
- 目前已有强制游戏无边框窗口化
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)
- 通过加速服务拦截网络请求将一些 JS 脚本注入在网页中,提供类似网页插件的功能。
3. 账号切换 (Windows / Linux / macOS Only)
- 一键切换已在当前 PC 上登录过的 Steam 账号,与管理家庭共享库排序等功能。
4. 库存管理 (Windows / Linux / macOS Only)
- 让您直接管理到 Steam 游戏库存,不仅能够下载老版本的 Steam 游戏,也能够对 Steam 游戏成就进行直接管理,支持解锁成就以及反解锁成就。
5. 本地令牌 (Support Windows / Linux / macOS / Android)
- 让您的手机令牌统一保存在电脑中,目前仅支持 Steam 令牌,后续会开发支持更多的令牌种类与云同步令牌。
6. 自动挂卡 (Support Windows / Linux / macOS / Android)
- 集成 [ArchiSteamFarm](https://github.com/JustArchiNET/ArchiSteamFarm) 在应用内提供 挂机掉落 Steam 集换式卡牌 等功能。
7. 游戏工具 (Windows Only)
- 强制游戏窗口使用无边框窗口化
<!--发布配置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)-->
@@ -66,7 +64,7 @@ OS | Version | Architectures
[Windows Server][Windows-Server] | 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+
**\*** 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
@@ -126,10 +124,12 @@ OS | Version | Architectures
OS | Version | Architectures |
------------------------------|---------------------------|-------------------|
[macOS][macOS] | 10.14+ | x64 |
[macOS][macOS] | 10.15+ | x64, Arm64 |
[macOS]: https://support.apple.com/macos
### Android
OS | Version | Architectures |
------------------------------|-------------------------|--------------------------------------------------------------------|
[Android][Android] | 5.0(API 21)+ | [x64][Android-x64], [Arm64][Android-Arm64], [Arm32][Android-Arm32] |
+5 -5
View File
@@ -15,19 +15,18 @@
"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.Droid\\Common.ClientLib.Droid.csproj",
"src\\Common.ClientLib.iOS\\Common.ClientLib.iOS.csproj",
"src\\Common.ClientLib\\Common.ClientLib.csproj",
"src\\Common.CoreLib\\Common.CoreLib.csproj",
"src\\Common.PinyinLib\\Common.PinyinLib.csproj",
"src\\Common.PinyinLib.ChnCharInfo\\Common.PinyinLib.ChnCharInfo.csproj",
"src\\Repositories.sqlite-net-pcl\\Repositories.sqlite-net-pcl.csproj",
"src\\ST.Client.Android\\ST.Client.Android.csproj",
"src\\ST.Client.Desktop.Linux\\ST.Client.Linux.csproj",
"src\\ST.Client.Mobile.Droid.App\\ST.Client.Android.App.csproj",
"src\\ST.Client.XamarinForms\\ST.Client.XamarinForms.csproj",
"src\\ST.Client.Desktop.Avalonia\\ST.Client.Avalonia.csproj",
"src\\ST.Client.Desktop.Avalonia.App\\ST.Client.Avalonia.App.csproj",
"src\\ST.Client.iOS\\ST.Client.iOS.csproj",
"src\\ST.Client\\ST.Client.csproj",
"src\\ST.Services.CloudService.Models\\ST.Services.CloudService.Models.csproj",
"src\\ST.Services.CloudService.ViewModels\\ST.Services.CloudService.ViewModels.csproj",
@@ -38,6 +37,7 @@
"src\\ST.Tools.OpenSourceLibraryList\\ST.Tools.OpenSourceLibraryList.csproj",
"src\\ST.Tools.Translate\\ST.Tools.Translate.csproj",
"src\\ST\\ST.csproj",
"src\\ST.Client.ResSecrets\\ST.Client.ResSecrets.csproj",
"tests\\Common.UnitTest.Droid.App\\ST.Client.UnitTest.Droid.App.csproj",
"tests\\Common.UnitTest.Droid\\ST.Client.UnitTest.Droid.csproj",
"tests\\Common.UnitTest\\Common.UnitTest.csproj",
+8 -1
View File
@@ -15,11 +15,14 @@
"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.Droid\\Common.ClientLib.Droid.csproj",
"src\\Common.ClientLib.iOS\\Common.ClientLib.iOS.csproj",
"src\\Common.ClientLib\\Common.ClientLib.csproj",
"src\\Common.CoreLib\\Common.CoreLib.csproj",
"src\\Common.PinyinLib\\Common.PinyinLib.csproj",
"src\\Common.PinyinLib.CFStringTransform\\Common.PinyinLib.CFStringTransform.csproj",
"src\\Repositories.sqlite-net-pcl\\Repositories.sqlite-net-pcl.csproj",
"src\\ST.Client.Android\\ST.Client.Android.csproj",
"src\\ST.Client.Desktop.Mac\\ST.Client.Mac.csproj",
@@ -38,6 +41,10 @@
"src\\ST.Tools.OpenSourceLibraryList\\ST.Tools.OpenSourceLibraryList.csproj",
"src\\ST.Tools.Translate\\ST.Tools.Translate.csproj",
"src\\ST\\ST.csproj",
"src\\ST.Client.ResSecrets\\ST.Client.ResSecrets.csproj",
"src\\ST.Client.iOS.ResSecrets\\ST.Client.iOS.ResSecrets.csproj",
"src\\ST.Client.Android.ResSecrets\\ST.Client.Android.ResSecrets.csproj",
"src\\ST.Client.Mac.ResSecrets\\ST.Client.Mac.ResSecrets.csproj",
"tests\\Common.UnitTest.Droid.App\\ST.Client.UnitTest.Droid.App.csproj",
"tests\\Common.UnitTest.Droid\\ST.Client.UnitTest.Droid.csproj",
"tests\\Common.UnitTest\\Common.UnitTest.csproj",
+251 -32
View File
@@ -152,8 +152,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Github", "_Github", "{B114
.github\workflows\xamarin.yml = .github\workflows\xamarin.yml
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib.Droid", "src\Common.ClientLib.Droid\Common.ClientLib.Droid.csproj", "{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib.iOS", "src\Common.ClientLib.iOS\Common.ClientLib.iOS.csproj", "{4658B02A-CB1A-4561-AD9C-3B3FF969D7F0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.UnitTest.Droid", "tests\Common.UnitTest.Droid\ST.Client.UnitTest.Droid.csproj", "{80E6762E-AB43-41E2-BDB4-7A3E24713977}"
@@ -174,6 +172,24 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Android.V2Ray", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gameloop.Vdf", "references\Gameloop.Vdf\Gameloop.Vdf\Gameloop.Vdf.csproj", "{DFC341E8-5290-428C-8D2B-6DE2AA163FFE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Android.Shadowsocks", "src\ST.Client.Android.Shadowsocks\ST.Client.Android.Shadowsocks.csproj", "{920EF29F-406F-43A9-B002-29DD6B0B4FBF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Android.App.Modern", "src\ST.Client.Android.App.Modern\ST.Client.Android.App.Modern.csproj", "{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ResSecrets", "ResSecrets", "{17667B53-1A09-45A6-855A-0F07F9AE044F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Android.ResSecrets", "src\ST.Client.Android.ResSecrets\ST.Client.Android.ResSecrets.csproj", "{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}"
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("{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("{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("{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
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1592,34 +1608,6 @@ Global
{29DE5086-0690-4AE7-9BA9-840F54B249DC}.Release|x64.Build.0 = Release|Any CPU
{29DE5086-0690-4AE7-9BA9-840F54B249DC}.Release|x86.ActiveCfg = Release|Any CPU
{29DE5086-0690-4AE7-9BA9-840F54B249DC}.Release|x86.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|ARM.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|ARM64.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|iPhone.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|x64.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Debug|x86.Build.0 = Debug|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|Any CPU.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|ARM.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|ARM.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|ARM64.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|ARM64.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|iPhone.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|iPhone.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|x64.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|x64.Build.0 = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|x86.ActiveCfg = Release|Any CPU
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C}.Release|x86.Build.0 = Release|Any CPU
{4658B02A-CB1A-4561-AD9C-3B3FF969D7F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4658B02A-CB1A-4561-AD9C-3B3FF969D7F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4658B02A-CB1A-4561-AD9C-3B3FF969D7F0}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -1886,6 +1874,230 @@ Global
{DFC341E8-5290-428C-8D2B-6DE2AA163FFE}.Release|x64.Build.0 = Release|Any CPU
{DFC341E8-5290-428C-8D2B-6DE2AA163FFE}.Release|x86.ActiveCfg = Release|Any CPU
{DFC341E8-5290-428C-8D2B-6DE2AA163FFE}.Release|x86.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|ARM.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|ARM64.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|iPhone.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|x64.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|x64.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|x86.ActiveCfg = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Debug|x86.Build.0 = Debug|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|Any CPU.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|ARM.ActiveCfg = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|ARM.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|ARM64.ActiveCfg = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|ARM64.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|iPhone.ActiveCfg = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|iPhone.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|x64.ActiveCfg = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|x64.Build.0 = Release|Any CPU
{920EF29F-406F-43A9-B002-29DD6B0B4FBF}.Release|x86.ActiveCfg = Release|Any CPU
{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|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
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|ARM64.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|iPhone.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|x64.ActiveCfg = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|x64.Build.0 = Debug|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Debug|x86.ActiveCfg = Debug|Any CPU
{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|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
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|ARM64.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|iPhone.ActiveCfg = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|iPhone.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|x64.ActiveCfg = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|x64.Build.0 = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|x86.ActiveCfg = Release|Any CPU
{5E2ABB4A-FDD6-47B0-946D-FAAD31301B82}.Release|x86.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|ARM.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|ARM.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|ARM64.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|iPhone.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|x64.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|x64.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|x86.ActiveCfg = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Debug|x86.Build.0 = Debug|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|Any CPU.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|ARM.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|ARM.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|ARM64.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|ARM64.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|iPhone.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|iPhone.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|x64.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|x64.Build.0 = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|x86.ActiveCfg = Release|Any CPU
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277}.Release|x86.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|ARM.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|ARM64.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|iPhone.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|x64.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|x64.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|x86.ActiveCfg = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Debug|x86.Build.0 = Debug|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|Any CPU.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|ARM.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|ARM.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|ARM64.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|ARM64.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|iPhone.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|iPhone.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|x64.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|x64.Build.0 = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|x86.ActiveCfg = Release|Any CPU
{089D4418-975B-455D-9AE1-B9DEC20FF4B1}.Release|x86.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|ARM.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|ARM64.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|iPhone.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|x64.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|x64.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|x86.ActiveCfg = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Debug|x86.Build.0 = Debug|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|Any CPU.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|ARM.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|ARM.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|ARM64.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|ARM64.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|iPhone.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|iPhone.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|x64.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|x64.Build.0 = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|x86.ActiveCfg = Release|Any CPU
{872B65EB-E9DF-4357-B541-DD4A39B281A0}.Release|x86.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|ARM.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|ARM64.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|iPhone.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|x64.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Debug|x86.Build.0 = Debug|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|Any CPU.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|ARM.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|ARM.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|ARM64.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|ARM64.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|iPhone.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|iPhone.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|x64.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|x64.Build.0 = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|x86.ActiveCfg = Release|Any CPU
{3950554F-7219-4AB9-9BE8-9B5EBDBCA88C}.Release|x86.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|ARM.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|ARM64.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|iPhone.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|x64.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|x64.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|x86.ActiveCfg = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Debug|x86.Build.0 = Debug|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|Any CPU.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|ARM.ActiveCfg = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|ARM.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|ARM64.ActiveCfg = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|ARM64.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|iPhone.ActiveCfg = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|iPhone.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{058F9955-8EFE-4BF3-A8F9-44C57B1F812E}.Release|x64.ActiveCfg = Release|Any CPU
{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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1942,7 +2154,6 @@ Global
{E85E92BA-202F-42D3-8C5E-96DA452501B7} = {910D6A0F-42AB-4B65-B532-852E864EC006}
{21C392C5-AE41-421A-A127-1A03C4ACA2AD} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{29DE5086-0690-4AE7-9BA9-840F54B249DC} = {E448F863-4C9D-47A4-BC4A-4A1381B54DA4}
{3C7200C7-8C2D-46F0-BD7D-0A59D915B83C} = {83186945-EC14-4B3F-8C6F-B205AA184CA4}
{4658B02A-CB1A-4561-AD9C-3B3FF969D7F0} = {83186945-EC14-4B3F-8C6F-B205AA184CA4}
{80E6762E-AB43-41E2-BDB4-7A3E24713977} = {CC46B486-00D7-49E6-ABA3-FDF8F4868D2B}
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA} = {CC46B486-00D7-49E6-ABA3-FDF8F4868D2B}
@@ -1953,9 +2164,17 @@ Global
{80EBD601-28AC-4840-B9B8-E6064816A443} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{4A79264D-5BF5-4F89-8066-44E154BF557F} = {80EBD601-28AC-4840-B9B8-E6064816A443}
{DFC341E8-5290-428C-8D2B-6DE2AA163FFE} = {673FF8CD-9E85-4FA1-ABFC-D1149675E138}
{920EF29F-406F-43A9-B002-29DD6B0B4FBF} = {80EBD601-28AC-4840-B9B8-E6064816A443}
{17667B53-1A09-45A6-855A-0F07F9AE044F} = {327FDEE7-C4C8-4AA4-A7B0-8BCE3D75346F}
{68DD3E9C-A96C-4128-8D95-DCD65D1FA277} = {17667B53-1A09-45A6-855A-0F07F9AE044F}
{089D4418-975B-455D-9AE1-B9DEC20FF4B1} = {17667B53-1A09-45A6-855A-0F07F9AE044F}
{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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
RESX_NeutralResourcesLanguage = zh-Hans
SolutionGuid = {9313F2B4-10DA-43AA-A481-CAA7571C740C}
RESX_NeutralResourcesLanguage = zh-Hans
EndGlobalSection
EndGlobal
+14 -10
View File
@@ -1,23 +1,27 @@
# 下载指南
- Desktop(桌面端)
- Windows
- 如果你使用 Intel、AMD 的 x64 芯片的 PC(较为**普遍**),则下载文件名中带有 **win_x64** 的文件
- 如果你已安装了 [ASP.NET Core Runtime 6.0.1](https://dotnet.microsoft.com/download/dotnet/6.0) 则下载文件名中带有 **fde** 的文件,可减少磁盘占用空间
- [在 Windows 上安装 .NET](https://docs.microsoft.com/en-us/dotnet/core/install/windows)
- 在 Windows 上不需要 Hosting Bundle 和 IIS support
- [下载安装程序并手动安装(aspnetcore-runtime-6.0.1-win-x64.exe)](https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-aspnetcore-6.0.1-windows-x64-installer)
- [使用 PowerShell 自动化安装](https://docs.microsoft.com/en-us/dotnet/core/install/windows?tabs=net60#install-with-powershell-automation)
- 如果你使用 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)
- macOS
- 如果你使用 Intel、AMD 的 x64 芯片的 Mac(较为**普遍**),则下载文件名中带有 **macos_x64** 的文件
- 如果你使用 ARM64 芯片的 Mac(较为**稀有**),例如 **M1**,则下载文件名中带有 **macos_arm64** 的文件
- 如果你使用 Intel 的 x64(x86-64) 芯片的 Mac,则下载文件名中带有 **macos_x64** 的文件
- 如果你使用 ARM64(Apple Silicon) 芯片的 Mac,例如 **Apple M1**,则下载文件名中带有 **macos_arm64** 的文件
- Linux
- 如果你使用 Intel、AMD 的 x64 芯片的 PC(较为**普遍**)则下载文件名中带有 **linux_x64** 的文件
- 如果你使用 ARM64 芯片的 PC(较为**稀有**)例如 **Raspberry Pi Model 3+**,则下载文件名中带有 **linux_arm64** 的文件
- 如果你使用 Intel、AMD 的 x64(x86-64) 芯片的 PC 则下载文件名中带有 **linux_x64** 的文件
- 如果你使用 ARM64 芯片的 PC 例如 **Raspberry Pi Model 3+**,则下载文件名中带有 **linux_arm64** 的文件
<!--
- Mobile(移动端)
- Android
- 如果你使用 ARM64 芯片的设备(较为**普遍**)则下载文件名中带有 **android_arm64_v8a** 的文件
- 如果你使用 ARM32 芯片的设备(较为**稀有**)通常为 **14** 年下半年之前生产的设备,则下载文件名中带有 **android_armeabi_v7a** 的文件
- 如果你使用 Intel、AMD 的 x64 芯片的设备(较为**稀有**)则下载文件名中带有 **android_x64** 的文件
-->
<!--
- 如果你使用 ARM64 芯片的 PC(极为**稀有**),例如 **Surface Pro X**,则下载文件名中带有 **win_x64** 的文件可通过 Win11 x86 模拟运行
+3 -2
View File
@@ -1,8 +1,9 @@
{
"msbuild-sdks": {
"MSBuild.Sdk.Extras": "3.0.44"
"MSBuild.Sdk.Extras": "3.0.44",
"Xamarin.Legacy.Sdk": "0.1.2-alpha6"
},
"sdk": {
"version": "6.0.200"
"version": "6.0.202"
}
}
+3 -3
View File
@@ -7,11 +7,11 @@
<key>CFBundleIdentifier</key>
<string>net.steampp.app</string>
<key>CFBundleShortVersionString</key>
<string>2.4.10</string>
<string>2.7.1</string>
<key>CFBundleVersion</key>
<string>2.4.10.0</string>
<string>2.7.1.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.14</string>
<string>10.15</string>
<key>CFBundleDevelopmentRegion</key>
<string>zh_CN</string>
<key>CFBundleInfoDictionaryVersion</key>
+12 -18
View File
@@ -1,7 +1,7 @@
create_app_structure() {
APPNAME=$1
APPDIR="$APPNAME.app/Contents"
APPICONS="/Users/mossimo/bin/logo.icns"
APPICONS="${{ Steam++_IcnsFile }}"
if [ ! -d "$APPDIR" ]; then
echo "creating app structure $APPDIR"
@@ -33,19 +33,19 @@ emit_plist() {
<key>CFBundleIdentifier</key>
<string>net.steampp.app</string>
<key>CFBundleShortVersionString</key>
<string>2.6.8</string>
<string>${{ Steam++_ShortVersion }}</string>
<key>CFBundleVersion</key>
<string>2.6.8.0</string>
<string>${{ Steam++_Version }}</string>
<key>LSMinimumSystemVersion</key>
<string>10.14</string>
<string>10.15</string>
<key>CFBundleDevelopmentRegion</key>
<string>zh_CN</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleExecutable</key>
<string>$PLIST_APPNAME</string>
<string>${{ Steam++_RunName }}</string>
<key>CFBundleGetInfoString</key>
<string>$PLIST_APPNAME</string>
<string>${{ Steam++_RunName }}</string>
<key>CFBundleIconFile</key>
<string>$PLIST_APPNAME</string>
<key>CFBundlePackageType</key>
@@ -64,10 +64,10 @@ EOF
fi
}
cd "/Users/mossimo/bin"
cd "${{ Steam++_OutPutFilePath }}"
BINARYNAME="Steam++"
BINARYNAME="${{ Steam++_AppName }}"
echo "Building Avalonia demo..."
@@ -80,14 +80,8 @@ rm -rf "$APPDIR"
create_app_structure "$APPNAME"
emit_plist "$APPNAME" "$APPDIR" true
cd "$APPDIR/Frameworks"
mv -f "${{ Steam++_APPDIR }}" "$APPDIR/MacOS"
chmod +x "$APPDIR/MacOS/Steam++"
APPNAME="$BINARYNAME Helper"
APPDIR="$APPNAME.app/Contents"
create_app_structure "$APPNAME"
emit_plist "$APPNAME" "$APPDIR"
cp -R "../../../steampp/" "../MacOS"
ln -s "../../MacOS" "Frameworks/$APPDIR/MacOS"
chmod +x "../MacOS/$BINARYNAME"
cp "../MacOS/$BINARYNAME" "../MacOS/$APPNAME"
chmod +x "../MacOS/$APPNAME"
mkdir "${{ Steam++_APPDIR }}"
mv -f "${{ Steam++_OutPutFilePath }}/$BINARYNAME.app" "${{ Steam++_APPDIR }}/$BINARYNAME.app"
+7
View File
@@ -0,0 +1,7 @@
[*.cs]
# IDE0055: 修正格式
dotnet_diagnostic.IDE0055.severity = suggestion
# IDE1006: 命名样式
dotnet_diagnostic.IDE1006.severity = suggestion
+7
View File
@@ -0,0 +1,7 @@
# 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.
+98
View File
@@ -0,0 +1,98 @@
DU'LAN 都兰
ZHA'SHUI 柞水
LU'HE 六合
JUN'LIAN 筠连
JIANG'DU 江都
BAI'XIANG 柏乡
CHANG'YANG 长阳
CHANG'CHUN 长春
CHANG'BAI 长白
CHENG'DU 成都
MIN'HANG 闵行
XIN'DU 新都
TIAN'CHANG 天长
PAN'YU 番禺
DU'YUN 都匀
CHANG'YUAN 长垣
CHANG'ZHI'XIAN 长治县
WU'DU 武都
CHEN'QIU 沈丘
WEN'XIU 温宿
BENG'BU 蚌埠
CHANG'SHUN 长顺
BI'YANG 泌阳
SHEN'XIAN 莘县
DA'BU 大埔
TA'SHI'KU'ER'GAN 塔什库尔干
SAN'DU 三都
YAN'DU 盐都
ZI'CHANG 子长
YU'DU 于都
MIN'YUE 民乐
HUA'DU 花都
SHANG'DU 商都
DU'CHANG 都昌
KE'SHI'KE'TENG'QI 克什克腾旗
YAN'CHANG 延长
CHANG'BAI'SHAN 长白山
NING'DU 宁都
ZENG'MU'AN'SHA 曾母暗沙
NAN'YUE 南乐
CHANG'WU 长武
CHANG'NING 长宁
CHANG'AN 长安
CHONG'QING 重庆
HANG'TANG 行唐
GA'SHI 伽师
CHANG'SHOU 长寿
SUI'LING 绥棱
CHANG'TING 长汀
FAN'SHI 繁峙
CHANG'SHA 长沙
CHANG'DAO 长岛
XIA'MEN 厦门
CHANG'LING 长岭
CHANG'TAI 长泰
YU'LI 尉犁
LU'AN 六安
BA'XIU 八宿
CHANG'HAI 长海
MU'PING 牟平
A'TU'SHI 阿图什
CHANG'ZHI'SHI 长治市
CHANG'QING 长清
CHANG'FENG 长丰
CHANG'LE 长乐
FENG'DU 丰都
KA'SHI 喀什
TONG'BAI 桐柏
YUE'QING 乐清
ZHONG'MU 中牟
SHI'FANG 什邡
WU'SHI 乌什
DU'AN 都安
LAO'TING 乐亭
WU'BU 吴堡
NA'QU 那曲
SHAN'XIAN 单县
NA'PO 那坡
JU'MO 且末
CHANG'XING 长兴
GONG'CHANG'LING 弓长岭
CHANG'DU 昌都
XIAO'TING 猇亭
GUO'YANG 涡阳
QIAN'WEI 犍为
WANG'DU 望都
LUE'YANG 略阳
SHUANG'BAI 双柏
CHANG'SHA'XIAN 长沙县
XIN'YUE 新乐
CHANG'GE 长葛
CUO'NA 错那
DU'JIANG'YAN 都江堰
LANG'QIA'ZI 浪卡子
XING'YANG 荥阳
LU'QU 碌曲
HUANG'PI 黄陂
@@ -0,0 +1,8 @@
# Android Native Library
[Xamarin.Android 支持通过标准 PInvoke 机制使用本机库。 你还可以将不属于 OS 的其他本机库绑定到你的 .apk。](https://docs.microsoft.com/zh-cn/xamarin/android/platform/native-libraries)
## libgojni.so & libtun2socks.so
Source code compilation by https://github.com/2dust/v2rayNG
## shadowsocks-android\libtun2socks.so
Apk extraction by https://github.com/shadowsocks/shadowsocks-android/releases/tag/v5.2.6
+3 -2
View File
@@ -3,5 +3,6 @@ using static System.Properties.ThisAssembly;
[assembly: SuppressIldasm]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Mobile" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Desktop" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Avalonia" + PublicKey)]
[assembly: InternalsVisibleTo("Xamarin.Forms.Platform.Android.UnitTests" + PublicKey)]
[assembly: InternalsVisibleTo("Assembly-CSharp" + PublicKey)]
+7
View File
@@ -0,0 +1,7 @@
# Windows/macOS/Linux x64 Native Library & General C# Source Code & Third Party Projects
## 7z.dll
21.07 (2021-12-26) by https://www.7-zip.org
## libzstd.dll
https://github.com/facebook/zstd/releases/tag/v1.5.2
+4
View File
@@ -0,0 +1,4 @@
# Windows/macOS/Linux x86(32 bit) Native Library
## 7z.dll
21.07 (2021-12-26) by https://www.7-zip.org
+63 -44
View File
@@ -1,27 +1,45 @@
### 版本亮点
1. ASF 升级至 **V5.2.2.5**
2. ASF 配置 中新增 设置自定义密钥(ASF_CRYPTKEY) 与 导入 Bot 文件
3. Linux 发行压缩包由 7z 格式更改为 tar.zst
4. 网络加速 支持 IPv6 网络访问 Steam 讨论/留言相关功能
6. 网络加速 支持 Steam 商店 访问被限制的游戏页面
7. 网络加速 新增了部分被限制的CDN加速,支持访问stackoverflow
8. 账号切换 家庭库共享管理新增暂时禁用启用指定账号的功能 可在排序失效时使用
<!--
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. 修复 Android 端 程序启动时自动运行 网络加速 与 ASF 服务
2. 修复 Android 端 网络加速 VPN 模式
3. 修复 Android 端 切换系统语言时可能导致的闪退
4. 修复 Android 端 拒绝授予存储权限导致的闪退
5. 改进 网络加速 中的代理证书生成
6. 改进 账号切换 中读取 Vdf 配置操作
7. 修复 Desktop 端 家庭共享库管理 在 Steam Beta 版上不能正常使用
8. 修复 网络加速 Twitch聊天服务链接不上的问题
9. 修复 网络加速 github.io 加速影响部分仓库访问404的问题
10. 修复 网络加速 Steam社区加速后会出现【请重新输入下方验证码中的字符来验证此为人工操作】的问题
11. 暂时移除了网络加速中部分失效的加速项目
12. 修复 令牌交易 登录状态失效时刷新应该回到登录界面
13. 改进 本地令牌 移除令牌时的提示
14. 修复 网络加速 滚动条错误滚动的问题
1. 修复 库存游戏中挂时长失效
2. 修复 Steam 库存游戏在 Steam 账号切换后自动刷新失败的问题
3. 修复 Steam 库存游戏编辑带有本地化名称的游戏无效的问题
4. 修复 Android 上登录后出现两个退出登录按钮
5. 改进 Android 上第三方快速登录使用系统默认浏览器
6. 修复 一些图片加载失败不显示的问题
7. 改进 从本地加载图片减少不必要的内存分配
<!--
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 时,程序内打开网页端口号值不正确
-->
### 已知问题
- 除 Windows 之外的平台此软件自动更新尚不可用
@@ -29,7 +47,6 @@
- macOS
- [尚未公证](https://support.apple.com/zh-cn/guide/mac-help/mh40616/10.15/mac/10.15),这会影响 macOS Catalina(版本 10.15)以上版本
- Linux
- **Hosts 代理模式**可能无法配置成功,推荐使用**系统代理模式**
- 窗口弹出位置不正确
- 鼠标指针浮动样式不正确
- Windows
@@ -42,19 +59,20 @@
- 需要安装 Extended Security Update
- 在不符合先决条件的情况下运行可能导致
- 程序无法正常运行
- **解决方案**
- 使用 Windows Update 更新系统补丁
- 运行程序时提示 计算机中丢失 api-ms-win-core-winrt-l1-1-0.dll
- **解决方案**
- 因 [Windows 7 延长结束日期](https://support.microsoft.com/zh-cn/windows/windows-7-%E6%94%AF%E6%8C%81%E4%BA%8E-2020-%E5%B9%B4-1-%E6%9C%88-14-%E6%97%A5%E7%BB%88%E6%AD%A2-b75d4580-2cc7-895a-2c9c-1466d9a53962)以于 2020 年 1 月 14 日结束支持
- 所以必须安装 [Extended Security Update](https://docs.microsoft.com/zh-cn/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq) 支持,在安装第三年的补丁后[结束支持日期](https://docs.microsoft.com/zh-cn/lifecycle/products/windows-7)可延长至 2023 年 1 月 10 日
- 可安装 *第三方* 补丁整合包例如 **[UpdatePack7R2](https://cn.bing.com/search?q=UpdatePack7R2)** *或* 购买官方 ESU 产品密钥 解决
- 下载 api-ms-win-core-winrt-l1-1-0.dll 文件放入程序根目录(Steam++.exe 所在文件夹)
- [从 Github 上直接下载](https://github.com/BeyondDimension/SteamTools/raw/develop/references/runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/api-ms-win-core-winrt-l1-1-0.dll)
- [从 Gitee 上直接下载](https://gitee.com/rmbgame/SteamTools/raw/develop/references/runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/api-ms-win-core-winrt-l1-1-0.dll)
- [从 NuGet 上下载后提取](https://www.nuget.org/api/v2/package/runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/1.0.1)
- .nupkg 文件可使用解压工具打开或解压,找到此文件复制即可
- **解决方案**
- 下载 api-ms-win-core-winrt-l1-1-0.dll 文件放入程序根目录(Steam++.exe 所在文件夹)
- [从 Github 上直接下载](https://github.com/BeyondDimension/SteamTools/raw/develop/references/runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/api-ms-win-core-winrt-l1-1-0.dll)
- [从 Gitee 上直接下载](https://gitee.com/rmbgame/SteamTools/raw/develop/references/runtime.win7-x64.Microsoft.NETCore.Windows.ApiSets/api-ms-win-core-winrt-l1-1-0.dll)
- Android
- 本地加速
- 因 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.6.8](https://img.shields.io/badge/Steam++-v2.6.8-brightgreen.svg?style=flat-square&color=512bd4)]()
[![Steam++ v2.7.1](https://img.shields.io/badge/Steam++-v2.7.1-brightgreen.svg?style=flat-square&color=512bd4)]()
##### [不知道该下载哪个文件?](./download-guide.md)
@@ -63,21 +81,22 @@
### 文件校验
| File | Checksum (SHA256) |
| ---- | ---- |
| Steam++_win_x64_v2.6.8.7z | SHA256 |
| Steam++_win_x64_fde_v2.6.8.7z | SHA256 |
| Steam++_win_x64_v2.7.1.7z | SHA256 |
| Steam++_win_x64_fde_v2.7.1.7z | SHA256 |
| | |
| Steam++_win_x64_v2.6.8.exe | SHA256 |
| Steam++_win_x64_fde_v2.6.8.exe | SHA256 |
| Steam++_win_x64_v2.7.1.exe | SHA256 |
| Steam++_win_x64_fde_v2.7.1.exe | SHA256 |
| | |
| Steam++_linux_x64_v2.6.8.7z | SHA256 |
| Steam++_linux_arm64_v2.6.8.7z | SHA256 |
| Steam++_linux_x64_v2.7.1.7z | SHA256 |
| Steam++_linux_arm64_v2.7.1.7z | SHA256 |
| | |
| Steam++_linux_x64_v2.6.8.deb | SHA256 |
| Steam++_linux_arm64_v2.6.8.deb | SHA256 |
| Steam++_linux_x64_v2.7.1.deb | SHA256 |
| Steam++_linux_arm64_v2.7.1.deb | SHA256 |
| | |
| Steam++_linux_x64_v2.6.8.rpm | SHA256 |
| Steam++_linux_arm64_v2.6.8.rpm | SHA256 |
| Steam++_linux_x64_v2.7.1.rpm | SHA256 |
| Steam++_linux_arm64_v2.7.1.rpm | SHA256 |
| | |
| Steam++_macos_x64_v2.6.8.dmg | SHA256 |
| Steam++_macos_x64_v2.7.1.dmg | SHA256 |
| Steam++_macos_arm64_v2.7.1.dmg | SHA256 |
| | |
| Steam++_android_v2.6.8.apk | SHA256 |
| Steam++_android_v2.7.1.apk | SHA256 |
+4 -1
View File
@@ -28,7 +28,7 @@ namespace System
public const string MainDllPath_ =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\{0}\Steam++.dll";
[Obsolete("use DirPublishWinX86_", true)]
[Obsolete("use DirPublishWinX86_")]
public const string DirPublishWinX86 =
@"\src\" + ProjectDir_AvaloniaApp + @"\bin\Release\Publish\win-x86";
@@ -46,6 +46,9 @@ namespace System
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";
Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 686 KiB

After

Width:  |  Height:  |  Size: 829 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 657 KiB

After

Width:  |  Height:  |  Size: 660 KiB

+51 -12
View File
@@ -151,6 +151,24 @@ namespace System.Application.UI
b.Append(platformService.IsInstall.ToLowerString());
b.AppendLine();
#if WINDOWS10_0_17763_0_OR_GREATER
if (OperatingSystem2.IsWindows10AtLeast)
{
try
{
#pragma warning disable CA1416 // 验证平台兼容性
var currentPackage = global::Windows.ApplicationModel.Package.Current;
var familyName = currentPackage.Id.FamilyName;
b.Append("[app.pkg] ");
b.Append(familyName);
b.AppendLine();
#pragma warning restore CA1416 // 验证平台兼容性
}
catch
{
}
}
#endif
b.Append("[memory.usage] ");
#if __ANDROID__
@@ -179,6 +197,7 @@ namespace System.Application.UI
b.Append(RuntimeInformation.ProcessArchitecture);
b.AppendLine();
#if MONOANDROID
b.Append("[clr.ver] ");
string? clrVersion;
try
@@ -194,9 +213,16 @@ namespace System.Application.UI
else
b.Append(clrVersion);
b.AppendLine();
#endif
#if __ANDROID__
#if V2RAY
b.Append("[v2ray.ver] ");
b.Append(Libv2ray.Libv2ray.CheckVersionX());
b.AppendLine();
#endif
//if (_ThisAssembly.Debuggable)
//{
// b.Append("[app.multi] ");
@@ -243,18 +269,25 @@ namespace System.Application.UI
static void GetStartTime(StringBuilder b)
{
string startTimeStr;
const string f = "yy-MM-dd HH:mm:ss";
const string f2 = "HH:mm:ss";
const string f3 = "dd HH:mm:ss";
var starttime = Process.GetCurrentProcess().StartTime;
starttime = starttime.ToLocalTime();
var utc_time = starttime.ToUniversalTime();
var local = TimeZoneInfo.Local;
startTimeStr = utc_time.Hour == starttime.Hour
? starttime.ToString(starttime.Year >= 2100 ? DateTimeFormat.Standard : f)
: utc_time.Day == starttime.Day
? $"{utc_time.ToString(f)}({starttime.ToString(f2)} {local.StandardName})"
: $"{utc_time.ToString(f)}({starttime.ToString(f3)} {local.StandardName})";
try
{
const string f = "yy-MM-dd HH:mm:ss";
const string f2 = "HH:mm:ss";
const string f3 = "dd HH:mm:ss";
var starttime = ArchiSteamFarm.Core.OS.ProcessStartTime;
starttime = starttime.ToLocalTime();
var utc_time = starttime.ToUniversalTime();
var local = TimeZoneInfo.Local;
startTimeStr = utc_time.Hour == starttime.Hour
? starttime.ToString(starttime.Year >= 2100 ? DateTimeFormat.Standard : f)
: utc_time.Day == starttime.Day
? $"{utc_time.ToString(f)}({starttime.ToString(f2)} {local.StandardName})"
: $"{utc_time.ToString(f)}({starttime.ToString(f3)} {local.StandardName})";
}
catch (Exception)
{
startTimeStr = string.Empty;
}
b.Append(startTimeStr);
}
b.AppendLine();
@@ -362,9 +395,15 @@ namespace System.Application.UI
b.Append(GetJavaSystemGetProperty("java.vm.version"));
b.AppendLine();
#if MONOANDROID
b.Append("[mono.ver] ");
b.Append(Mono.Runtime.GetDisplayName());
b.AppendLine();
#else
b.Append("[clr.ver] ");
b.Append(Environment.Version);
b.AppendLine();
#endif
b.Append("[kernel.ver] ");
b.Append(GetJavaSystemGetProperty("os.version"));
@@ -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,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.1;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-->
</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>
@@ -14,4 +14,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();
}
}
}
@@ -14,4 +14,12 @@
<PackageReference Include="Avalonia.Skia" Aliases="AvaloniaSkia" />
</ItemGroup>
<ItemGroup>
<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.");
}
}
}
}
@@ -9,6 +9,7 @@ namespace Avalonia.Skia
public sealed class SKTypefaceCollection
{
readonly @this @this;
internal SKTypefaceCollection(@this @this)
{
this.@this = @this;
@@ -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,62 @@
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
{
public static SKCodec Create(Stream stream)
{
if (stream is IFileStreamWrapper fileStreamWrapper)
{
return SKCodec.Create(fileStreamWrapper.Name);
}
else if (stream is FileStream fileStream)
{
var filename = fileStream.Name;
return SKCodec.Create(filename);
}
else
{
using var skStream = new SKManagedStream(stream);
return SKCodec.Create(skStream);
}
}
public static SKImage FromEncodedData(Stream stream)
{
if (stream is IFileStreamWrapper fileStreamWrapper)
{
return SKImage.FromEncodedData(fileStreamWrapper.Name);
}
else if (stream is FileStream fileStream)
{
var filename = fileStream.Name;
return SKImage.FromEncodedData(filename);
}
else
{
using var skStream = new SKManagedStream(stream);
using var data = SKData.Create(skStream);
return SKImage.FromEncodedData(data);
}
}
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();
}
}
+4
View File
@@ -14,4 +14,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();
}
}
}
+4
View File
@@ -14,4 +14,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();
}
}
}
+4
View File
@@ -37,4 +37,8 @@
<LastGenOutput>SR.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
</ItemGroup>
</Project>
@@ -118,19 +118,19 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ExitCode_IsEmulator" xml:space="preserve">
<value>이 앱은 에뮬레이터에서 실행을 지원하지 않습니다</value>
<value>이 앱은 에뮬레이터에서 실행을 지원하지 않습니다.</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="ExitCode_IsRoot" xml:space="preserve">
<value>이 앱은 ROOT 권한이 있는 장치에서 실행을 지원하지 않습니다</value>
<value>이 응용 프로그램은 루트 권한이있는 장치에서 실행할 수 없습니다</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="ExitCode_IsVirtualApk" xml:space="preserve">
<value>이 응용 프로그램은 멀티 오픈을 지원하지 않습니다</value>
<value>이 응용 프로그램은 멀티 오픈을 지원하지 않습니다.</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="ExitCode_IsXposedExists" xml:space="preserve">
<value>이 앱은 Xposed 프레임워크가 설치된 장치에서 실행을 지원하지 않습니다</value>
<value>이 응용 프로그램은 Xposed 프레임 워크가 설치된 장치에서 실행을 지원하지 않습니다.</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
</root>
@@ -118,19 +118,19 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ExitCode_IsEmulator" xml:space="preserve">
<value>Это приложение не поддерживает запуск в эмуляторе</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Это приложение невозможно запустить через эмулятор</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="ExitCode_IsRoot" xml:space="preserve">
<value>Это приложение не поддерживается для запуска на устройствах с привилегиями ROOT</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Это приложение невозможно запустить на устройствах с root правами</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="ExitCode_IsVirtualApk" xml:space="preserve">
<value>Это приложение не поддерживает мультиоткрытие</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Это приложение не поддерживает несколько окон</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="ExitCode_IsXposedExists" xml:space="preserve">
<value>Это приложение не поддерживает запуск на устройствах с установленной платформой Xposed</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Это приложение невозможно запустить на устройствах с установленным Xposed Framework</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
</root>
@@ -55,9 +55,9 @@ namespace System.Application.Services.Implementation
Log.Error(TAG, e, "ShowDroidToast Error, text: {0}, IsMainThread: {1}", text, IsMainThread);
// 解决在子线程中调用Toast的异常情况处理
Looper.Prepare();
var _toast = AndroidToast.MakeText(context, text, duration2)
var toast_ = AndroidToast.MakeText(context, text, duration2)
?? throw new NullReferenceException("toast markeText Fail(2)");
SetTextAndShow(_toast, text);
SetTextAndShow(toast_, text);
Looper.Loop();
}
@@ -2,33 +2,62 @@ using Android.Runtime;
using Java.Security.Cert;
using System.IO;
using Xamarin.Android.Net;
using X509Certificate2 = System.Security.Cryptography.X509Certificates.X509Certificate2;
// 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抓包
/// 添加可信任证书,可用于调试时 HTTPS 抓包
/// </summary>
/// <param name="handler"></param>
/// <param name="certificateFileData">证书文件数据(文件流,内嵌资源流)</param>
/// <param name="certificateFileType">证书文件类型,默认使用X.509</param>
public static void AddTrustedCert(
this AndroidClientHandler handler,
Stream certificateFileData,
string certificateFileType = "X.509")
Stream certificateFileData)
{
var certificateFactory = CertificateFactory.GetInstance(certificateFileType);
if (certificateFactory == null)
throw new NullReferenceException(
$"CertificateFactory.GetInstance Fail, Type: {certificateFileType}");
var certificate = certificateFactory.GenerateCertificate(certificateFileData);
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>();
}
}
}
@@ -22,4 +22,8 @@
<ProjectReference Include="..\Common.ClientLib\Common.ClientLib.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
</ItemGroup>
</Project>
@@ -1,125 +1,126 @@
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;
//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
{
[DebuggerDisplay("{DebuggerDisplay(),nq}")]
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
public sealed class AppClientAttribute : Attribute
{
string DebuggerDisplay() => $"type: {type}";
//namespace System.Application
//{
// [Obsolete]
// [DebuggerDisplay("{DebuggerDisplay(),nq}")]
// [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
// public sealed class AppClientAttribute : Attribute
// {
// string DebuggerDisplay() => $"type: {type}";
readonly Type? type;
string? str;
// readonly Type? type;
// string? str;
[NotNull, DisallowNull] // C# 8 not null
public object? Value { get; private set; }
// [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));
}
// public AppClientAttribute(Type type, string str)
// {
// this.type = type;
// this.str = str;
// init();
// if (Value == null) throw new ArgumentNullException(nameof(Value));
// }
#pragma warning disable IDE1006 // 命名样式
//#pragma warning disable IDE1006 // 命名样式
void init()
#pragma warning restore IDE1006 // 命名样式
{
ctor();
// void init()
//#pragma warning restore IDE1006 // 命名样式
// {
// 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
}
}
// 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)
{
#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;
}
// [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 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;
}
}
}
// 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;
// }
// }
//}
@@ -11,6 +11,8 @@ namespace System.Application
public const string Prefix_MSStore = "ms-windows-store://";
public const string Prefix_Email = "mailto:";
/// <summary>
/// 判断字符串是否为 Http Url
/// </summary>
@@ -27,5 +29,12 @@ namespace System.Application
/// <param name="url"></param>
/// <returns></returns>
public static bool IsStoreUrl([NotNullWhen(true)] string? url) => url != null && url.StartsWith(Prefix_MSStore, StringComparison.OrdinalIgnoreCase);
/// <summary>
/// 判断字符串是否为 Email Url
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static bool IsEmailUrl([NotNullWhen(true)] string? url) => url != null && url.StartsWith(Prefix_Email, StringComparison.OrdinalIgnoreCase);
}
}
@@ -52,7 +52,7 @@ namespace System.Application
static OpenResultCode OpenAnalysis(string? url)
{
if (IsStoreUrl(url))
if (IsStoreUrl(url) || IsEmailUrl(url))
{
return OpenCoreByProcess(url);
}
@@ -9,6 +9,7 @@ namespace System.Application
public static class DeviceInfo2
{
static readonly Lazy<IDeviceInfoPlatformService?> @interface = new(DI.Get_Nullable<IDeviceInfoPlatformService>);
static IDeviceInfoPlatformService? Interface => @interface.Value;
/// <inheritdoc cref="DeviceInfo.Model"/>
@@ -160,6 +161,10 @@ namespace System.Application
{
return OSNames.Value.WSA;
}
else if (Interface != null && Interface.IsChromeOS)
{
return OSNames.Value.ChromeOS;
}
else
{
if (DeviceType == DeviceType.Virtual)
@@ -201,6 +206,7 @@ namespace System.Application
}
return default;
});
public static OSNames.Value OSNameValue => _OSNameValue.Value;
/// <inheritdoc cref="DeviceInfo.DeviceType"/>
@@ -94,6 +94,7 @@ namespace System.Application
}
static bool mIsFirstLaunchEver;
/// <summary>
/// 获取一个值,该值指示此应用是否首次在此设备上启动。
/// </summary>
@@ -110,6 +111,7 @@ namespace System.Application
return mIsFirstLaunchEver;
}
}
private set
{
mIsFirstLaunchEver = value;
@@ -117,6 +119,7 @@ namespace System.Application
}
static bool mIsFirstLaunchForCurrentVersion;
/// <summary>
/// 获取一个值,该值指示这是否是当前版本号的应用程序的首次启动。
/// </summary>
@@ -133,6 +136,7 @@ namespace System.Application
return mIsFirstLaunchForCurrentVersion;
}
}
private set
{
mIsFirstLaunchForCurrentVersion = value;
@@ -13,10 +13,11 @@ namespace System.Application.Services
string VersionString { get; }
DeviceType DeviceType { get; }
bool IsChromeOS { get; }
}
}
namespace System.Application.Services.Implementation
{
public abstract class DeviceInfoPlatformServiceImpl : IDeviceInfoPlatformService
@@ -30,5 +31,7 @@ namespace System.Application.Services.Implementation
public /*virtual*/ string VersionString => DeviceInfo.VersionString;
public virtual DeviceType DeviceType => DeviceInfo.DeviceType;
public virtual bool IsChromeOS => false;
}
}
@@ -1,53 +0,0 @@
namespace System.Application.Services
{
/// <summary>
/// 通知栏服务
/// </summary>
/// <typeparam name="TNotificationType"></typeparam>
/// <typeparam name="TEntrance"></typeparam>
public interface INotificationService<TNotificationType, TEntrance, TNotificationService>
where TNotificationType : notnull, Enum
where TEntrance : notnull, Enum
where TNotificationService : INotificationService<TNotificationType, TEntrance, TNotificationService>
{
/// <summary>
/// 获取是否有通知权限
/// </summary>
/// <returns></returns>
bool AreNotificationsEnabled();
/// <summary>
/// 显示通知
/// </summary>
/// <param name="text">通知内容</param>
/// <param name="notificationType">通知类型</param>
/// <param name="autoCancel"></param>
/// <param name="title">通知标题</param>
/// <param name="entrance">点击通知的入口点</param>
void Notify(
string text,
TNotificationType notificationType,
bool autoCancel = true,
string? title = default,
TEntrance? entrance = default);
/// <summary>
/// 取消通知
/// </summary>
/// <param name="notificationType"></param>
void Cancel(TNotificationType notificationType);
/// <summary>
/// 取消所有通知
/// </summary>
void CancelAll();
/// <summary>
/// 下载进度通知
/// </summary>
Progress<float> NotifyDownload(
Func<string> text,
TNotificationType notificationType,
string? title = default);
}
}
@@ -29,7 +29,7 @@ namespace System.Application.Services
if ((!string.IsNullOrWhiteSpace(value)) &&
(string.IsNullOrWhiteSpace(textBoxText) ||
(textBoxText.Length < value.Length &&
value.Substring(0, textBoxText.Length) == textBoxText)))
value[..textBoxText.Length] == textBoxText)))
{
return value;
}
@@ -9,10 +9,16 @@ namespace System.Application.Services.Implementation
/// <inheritdoc cref="ILocalDataProtectionProvider"/>
public abstract class LocalDataProtectionProviderBase : ILocalDataProtectionProvider
{
readonly Lazy<Aes> _aes;
#pragma warning disable IDE1006 // 命名样式
#pragma warning disable SA1309 // Field names should not begin with underscore
readonly Lazy<Aes> _aes;
#pragma warning disable SA1300 // Element should begin with upper-case letter
protected Aes aes => _aes.Value;
#pragma warning restore SA1300 // Element should begin with upper-case letter
#pragma warning restore SA1309 // Field names should not begin with underscore
#pragma warning restore IDE1006 // 命名样式
protected readonly LocalDataProtectionType defaultELocalDataProtectionType;
protected readonly IProtectedData protectedData;
protected readonly IDataProtectionProvider dataProtectionProvider;
@@ -24,6 +24,7 @@ namespace System.Application.Services.Implementation
if (sharedName == null) return GetId(key);
return $"{key}_{sharedName}_S";
}
public void PlatformClear(string? sharedName)
{
conn.Execute(Sql_Delete_Where_SharedName_Equals, sharedName ?? string.Empty);
@@ -47,8 +47,8 @@ namespace System.Application.Services.Implementation
void Show_()
{
if (intercept.OnShowExecuting(text)) return;
var _duration = duration ?? CalcDurationByStringLength(text.Length);
PlatformShow(text, _duration);
var duration_ = duration ?? CalcDurationByStringLength(text.Length);
PlatformShow(text, duration_);
}
}
catch (Exception e)
@@ -7,6 +7,7 @@ namespace System.Application.UI.ViewModels
protected virtual bool IgnoreIcon { get; }
protected TId? id;
/// <summary>
/// 唯一键
/// </summary>
@@ -28,6 +29,7 @@ namespace System.Application.UI.ViewModels
}
protected string title = string.Empty;
/// <summary>
/// 标题文本
/// </summary>
@@ -38,6 +40,7 @@ namespace System.Application.UI.ViewModels
}
protected TIcon? icon;
/// <summary>
/// 图标
/// </summary>
@@ -31,4 +31,8 @@
<ProjectReference Include="..\Repositories.sqlite-net-pcl\Repositories.sqlite-net-pcl.csproj" />
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
</ItemGroup>
</Project>
@@ -28,10 +28,8 @@ namespace System.Application.Models
if (mDataSource == null) mDataSource = new List<T>();
return mDataSource;
}
set
{
mDataSource = value;
}
set => mDataSource = value;
}
[MPKey(1)]
+7 -1
View File
@@ -92,6 +92,11 @@ namespace System.Application
/// Android 模拟器
/// </summary>
AndroidVirtual,
/// <summary>
/// https://github.com/chromeos
/// </summary>
ChromeOS,
}
public static string ToDisplayName(this Value value) => value == default ? string.Empty :
@@ -119,7 +124,8 @@ namespace System.Application
Value.AndroidDesktop or
Value.AndroidTV or
Value.AndroidWatch or
Value.AndroidVirtual => true,
Value.AndroidVirtual or
Value.ChromeOS => true,
_ => false,
};
}
@@ -120,7 +120,8 @@ namespace System.Application
/// <summary>
/// 黑名单
/// </summary>
public static readonly byte[] Blacklist = new byte[] {
public static readonly byte[] Blacklist = new byte[]
{
148, 149, 146, // 物联网号段
};
}
@@ -70,7 +70,6 @@ namespace System.Application.Services
/// <param name="requestUri"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[Obsolete("use cached")]
Task<Stream?> GetImageStreamAsync(string requestUri, CancellationToken cancellationToken = default);
static string GetImagesCacheDirectory(string? channelType)
@@ -13,7 +13,7 @@ namespace System.Application.Services.Implementation
static readonly IDictionary<Type, object> validators = new Dictionary<Type, object>();
public static void AddColumnValidate<T>(Func<T, string?> validate)
=> validators.Add(typeof(T), validate);
=> validators.TryAdd(typeof(T), validate);
const string I = "I";
const string IReadOnly = "IReadOnly";
@@ -68,7 +68,7 @@ namespace System.Application.Settings
stream.Position = 0;
}
var data = Serializable.SMP(_settings);
stream.Write(data, 0, data.Length);
stream.Write(data);
//XamlServices.Save(stream, this._settings);
}
}
@@ -41,6 +41,7 @@ namespace System.Application.Settings
return _cached ? _value : Default;
}
set
{
if (_cached && Equals(_value, value)) return;
@@ -181,6 +182,7 @@ namespace System.Application.Settings
if (value == null) return;
ValueChanged += _handlers[value] = (sender, args) => value(sender, new PropertyChangedEventArgs(nameof(Value)));
}
remove
{
if (value == null) return;
@@ -22,6 +22,7 @@ namespace System.Application.Settings
protected static string GetLocalFilePath(string configName) => Path.Combine(IOPath.AppDataDirectory, configName);
static readonly Lazy<string> _LocalFilePath = new(() => GetLocalFilePath(ConfigName));
public static string LocalFilePath => _LocalFilePath.Value;
public static ISerializationProvider Local { get; } = new FileSettingsProvider(LocalFilePath);
@@ -81,6 +82,7 @@ namespace System.Application.Settings
}
static readonly Lazy<string> _CategoryName = new(() => typeof(TSettings).Name);
public static new string CategoryName => _CategoryName.Value;
static string GetKey(string propertyName) => $"{CategoryName}.{propertyName}";
@@ -3,6 +3,7 @@ namespace System.Application.Settings
public sealed class ValueChangedEventArgs<T> : EventArgs where T : notnull
{
public T? OldValue { get; }
public T? NewValue { get; }
public ValueChangedEventArgs(T? oldValue, T? newValue)
+4
View File
@@ -54,4 +54,8 @@
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
</ItemGroup>
</Project>
@@ -10,8 +10,8 @@ namespace System
{
public static sbyte[] ToSByteArray(this byte[] buffer)
{
ReadOnlySpan<byte> _buffer = buffer;
return _buffer.ToSByteArray();
ReadOnlySpan<byte> buffer_ = buffer;
return buffer_.ToSByteArray();
}
public static sbyte[] ToSByteArray(this ReadOnlySpan<byte> buffer)
@@ -19,8 +19,8 @@ namespace System
public static byte[] ToByteArray(this sbyte[] buffer)
{
ReadOnlySpan<sbyte> _buffer = buffer;
return _buffer.ToByteArray();
ReadOnlySpan<sbyte> buffer_ = buffer;
return buffer_.ToByteArray();
}
public static byte[] ToByteArray(this ReadOnlySpan<sbyte> buffer)
@@ -113,5 +113,16 @@ namespace System
return new(stream, encoding, bufferSize, leaveOpen);
}
}
public static byte[] ToByteArray2(this Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(bytes, 0, bytes.Length);
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
}
}
@@ -37,7 +37,7 @@ namespace System
yield break;
}
}
if (isDian || item >= '0' && item <= '9')
if (isDian || (item >= '0' && item <= '9'))
{
findChar = true;
yield return item;
@@ -52,12 +52,14 @@ namespace System
}
#region TryParse
/// <summary>
/// 尝试将数字的字符串表示形式转换为 双精度浮点型
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static decimal? TryParseDecimal(this string value) => decimal.TryParse(value, out var temp) ? temp : null;
/// <summary>
/// 尝试将数字的字符串表示形式转换为 双精度浮点型
/// </summary>
@@ -106,7 +106,6 @@ namespace System
Exception = exception;
}
public static readonly EventHandler<TaskLog> Occured = (sender, e) =>
{
const string format = @"Unhandled Exception occured from Task.Forget()
+10
View File
@@ -117,6 +117,16 @@ namespace System
public const string maFile = ".maFile";
public static readonly string[] ImageFileExtensions = new string[]
{
FileEx.BMP,
FileEx.JPG,
FileEx.JPEG,
FileEx.PNG,
FileEx.GIF,
FileEx.WEBP,
};
public static bool IsSupportedTextReader(string extension) =>
string.Equals(extension, JSON, StringComparison.OrdinalIgnoreCase) ||
string.Equals(extension, TXT, StringComparison.OrdinalIgnoreCase) ||
@@ -19,7 +19,7 @@ namespace System
/// </summary>
public static partial class VideoFormatEnumExtensions
{
static readonly Lazy<IReadOnlyDictionary<VideoFormat, string>> _enum_mime = new(() =>
static readonly Lazy<IReadOnlyDictionary<VideoFormat, string>> mEnumMime = new(() =>
{
var value = new Dictionary<VideoFormat, string>()
{
@@ -28,31 +28,33 @@ namespace System
};
return value;
});
static readonly Lazy<IReadOnlyDictionary<string, VideoFormat>> _mime_enum = new(() =>
static readonly Lazy<IReadOnlyDictionary<string, VideoFormat>> mMimeEnum = new(() =>
{
var value = enum_mime.ToDictionary(x => x.Value, x => x.Key, StringComparer.OrdinalIgnoreCase);
var value = EnumMime.ToDictionary(x => x.Value, x => x.Key, StringComparer.OrdinalIgnoreCase);
return value;
});
static IReadOnlyDictionary<VideoFormat, string> enum_mime => _enum_mime.Value;
static IReadOnlyDictionary<string, VideoFormat> mime_enum => _mime_enum.Value;
static IReadOnlyDictionary<VideoFormat, string> EnumMime => mEnumMime.Value;
static IReadOnlyDictionary<string, VideoFormat> MimeEnum => mMimeEnum.Value;
/// <summary>
/// 获取MIME
/// </summary>
/// <param name="imageFormat"></param>
/// <param name="videoFormat"></param>
/// <returns></returns>
/// <exception cref="ArgumentOutOfRangeException"></exception>
public static string GetMIME(this VideoFormat videoFormat)
{
if (enum_mime.ContainsKey(videoFormat)) return enum_mime[videoFormat];
if (EnumMime.ContainsKey(videoFormat)) return EnumMime[videoFormat];
throw new ArgumentOutOfRangeException(nameof(videoFormat), videoFormat, null);
}
public static VideoFormat? GetFormat(string? mime)
{
if (mime == null) return null;
if (mime_enum.ContainsKey(mime)) return mime_enum[mime];
if (MimeEnum.ContainsKey(mime)) return MimeEnum[mime];
return null;
}
}
@@ -0,0 +1,50 @@
namespace System.IO
{
public sealed class FileStreamWrapper : Stream, IFileStreamWrapper
{
FileStreamWrapper(string path)
{
Name = path;
}
public string Name { get; set; }
public override bool CanRead => throw new NotImplementedException();
public override bool CanSeek => throw new NotImplementedException();
public override bool CanWrite => throw new NotImplementedException();
public override long Length => throw new NotImplementedException();
public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public override void Flush()
{
}
public override int Read(byte[] buffer, int offset, int count)
{
throw new NotImplementedException();
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotImplementedException();
}
public override void SetLength(long value)
{
throw new NotImplementedException();
}
public override void Write(byte[] buffer, int offset, int count)
{
throw new NotImplementedException();
}
public static FileStreamWrapper? Parse(string? filePath) => filePath == null ? null : new(filePath);
public static implicit operator FileStreamWrapper?(string? filePath) => Parse(filePath);
}
}
@@ -0,0 +1,25 @@
namespace System.IO
{
public interface IFileStreamWrapper
{
/// <inheritdoc cref="FileStream.Name"/>
string? Name { get; }
FileStream? FileStream => IOPath.OpenRead(Name);
/// <inheritdoc cref="FileStream(string, FileMode)"/>
FileStream GetFileStream(FileMode mode) => new(Name, mode);
/// <inheritdoc cref="FileStream(string, FileMode, FileAccess)"/>
FileStream GetFileStream(FileMode mode, FileAccess access) => new(Name, mode, access);
/// <inheritdoc cref="FileStream(string, FileMode, FileAccess, FileShare)"/>
FileStream GetFileStream(FileMode mode, FileAccess access, FileShare share) => new(Name, mode, access, share);
/// <inheritdoc cref="FileStream(string, FileMode, FileAccess, FileShare, int)"/>
FileStream GetFileStream(FileMode mode, FileAccess access, FileShare share, int bufferSize) => new(Name, mode, access, share, bufferSize);
/// <inheritdoc cref="FileStream(string, FileMode, FileAccess, FileShare, int, FileOptions)"/>
FileStream GetFileStream(FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options) => new(Name, mode, access, share, bufferSize, options);
}
}
+161 -8
View File
@@ -3,6 +3,7 @@ using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
#if !NET35 && !NOT_XE
using System.Threading.Tasks;
@@ -40,14 +41,16 @@ namespace System
/// </summary>
/// <param name="dirPath"></param>
/// <param name="noRecursive"></param>
public static void DirTryDelete(string dirPath, bool noRecursive = false)
public static bool DirTryDelete(string dirPath, bool noRecursive = false)
{
try
{
Directory.Delete(dirPath, !noRecursive);
return true;
}
catch
{
return false;
}
}
@@ -99,14 +102,16 @@ namespace System
/// <para>通常用于删除缓存</para>
/// </summary>
/// <param name="filePath"></param>
public static void FileTryDelete(string filePath)
public static bool FileTryDelete(string filePath)
{
try
{
File.Delete(filePath);
return true;
}
catch
{
return false;
}
}
@@ -158,7 +163,7 @@ namespace System
}
/// <summary>
/// (可选)初始化文件系统
/// 初始化文件系统
/// </summary>
/// <param name="getAppDataDirectory">获取应用目录文件夹</param>
/// <param name="getCacheDirectory">获取缓存目录文件夹</param>
@@ -168,31 +173,119 @@ namespace System
IOPath.getCacheDirectory = getCacheDirectory;
}
/// <summary>
/// 带迁移的初始化文件系统,使用 <see cref="Directory.Move(string, string)"/> 或 xcopy 进行移动,如果迁移失败则回退源目录
/// </summary>
/// <param name="destAppDataPath">新的 AppData 文件夹路径</param>
/// <param name="destCachePath">新的 Cache 文件夹路径</param>
/// <param name="sourceAppDataPath">旧的 AppData 文件夹路径</param>
/// <param name="sourceCachePath">旧的 Cache 文件夹路径</param>
protected static void InitFileSystemWithMigrations(
string destAppDataPath, string destCachePath,
string sourceAppDataPath, string sourceCachePath)
{
bool ExistsNotEmptyDir(string path)
{
var exists = Directory.Exists(path);
if (DesktopBridge.IsRunningAsUwp)
{
if (path == destCachePath || path == sourceCachePath)
{
return false;
}
}
return exists && Directory.EnumerateFileSystemEntries(path).Any(); // 文件夹存在且不为空文件夹
}
var paths = new[] { destAppDataPath, destCachePath, };
var dict_paths = paths.ToDictionary(x => x, x => Directory.Exists(x) && Directory.EnumerateFileSystemEntries(x).Any());
var dict_paths = paths.ToDictionary(x => x, x => ExistsNotEmptyDir(x));
if (dict_paths.Values.All(x => !x))
{
var old_paths = new[] { sourceAppDataPath, sourceCachePath, };
if (old_paths.All(x => Directory.Exists(x) && Directory.EnumerateFileSystemEntries(x).Any())) // 迁移之前根目录上的文件夹
{
var isNotFirst = false;
for (int i = 0; i < old_paths.Length; i++)
{
var path = paths[i];
var old_path = old_paths[i];
try
{
Directory.Move(old_path, path);
if (!isNotFirst)
{
try
{
// 尝试搜索之前版本的进程将其结束
var currentProcess = Process.GetCurrentProcess();
var query = from x in Process.GetProcessesByName(currentProcess.ProcessName)
where x != currentProcess
let m = x.TryGetMainModule()
where m != null && m.FileName != currentProcess.TryGetMainModule()?.FileName
select x;
var process = query.ToArray();
foreach (var proces in process)
{
try
{
#if NETCOREAPP3_0_OR_GREATER
proces.Kill(true);
#else
proces.Kill();
#endif
}
catch
{
}
}
}
catch
{
}
isNotFirst = true;
}
try
{
Directory.Move(old_path, path);
}
catch
{
try
{
CopyDirectory(old_path, path);
}
catch
{
if (OperatingSystem2.IsWindows)
{
var psi = new ProcessStartInfo
{
FileName = "cmd.exe",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardInput = true,
};
var p = Process.Start(psi);
p.Start();
p.StandardInput.WriteLine($"xcopy \"{old_path}\" \"{path}\" /y &exit");
p.WaitForExit(10000);
p.Kill();
}
else
{
throw;
}
}
}
dict_paths[path] = true;
}
catch
{
// 跨卷移动失败或其他原因失败,使用旧的目录,并尝试删除创建的空文件夹
DirTryDelete(path);
if (!DesktopBridge.IsRunningAsUwp)
{
// 跨卷移动失败或其他原因失败,使用旧的目录,并尝试删除创建的空文件夹
DirTryDelete(path);
}
paths[i] = old_path;
}
}
@@ -211,6 +304,34 @@ namespace System
string GetAppDataDirectory() => paths[0];
string GetCacheDirectory() => paths[1];
}
/// <summary>
/// 初始化文件系统,但优先使用旧目录上的文件夹,如果存在的话(允许空文件夹),不会进行文件迁移
/// </summary>
/// <param name="destAppDataPath">新的 AppData 文件夹路径</param>
/// <param name="destCachePath">新的 Cache 文件夹路径</param>
/// <param name="sourceAppDataPath">旧的 AppData 文件夹路径</param>
/// <param name="sourceCachePath">旧的 Cache 文件夹路径</param>
protected static void InitFileSystemUseDestFirst(
string destAppDataPath, string destCachePath,
string sourceAppDataPath, string sourceCachePath)
{
var paths = new[] { destAppDataPath, destCachePath, };
var old_paths = new[] { sourceAppDataPath, sourceCachePath, };
for (int i = 0; i < old_paths.Length; i++)
{
var item = old_paths[i];
if (Directory.Exists(item))
{
paths[i] = item;
}
}
InitFileSystem(GetAppDataDirectory, GetCacheDirectory);
string GetAppDataDirectory() => paths[0];
string GetCacheDirectory() => paths[1];
}
}
/// <summary>
@@ -316,7 +437,6 @@ namespace System
public static FileStream? OpenRead(string? filePath)
{
if (filePath == null) return null;
//var fileStream = OpenReadCore(filePath);
TryOpenRead(filePath, out var stream, out var ex);
if (ex != null)
Log.Error(nameof(OpenRead), ex, "OpenRead Error");
@@ -460,5 +580,38 @@ namespace System
public const char UnixDirectorySeparatorChar = '/';
public const char WinDirectorySeparatorChar = '\\';
public static void CopyDirectory(string sourceDir, string destinationDir, bool recursive = true)
{
// Get information about the source directory
var dir = new DirectoryInfo(sourceDir);
// Check if the source directory exists
if (!dir.Exists)
throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}");
// Cache directories before we start copying
DirectoryInfo[] dirs = dir.GetDirectories();
// Create the destination directory
Directory.CreateDirectory(destinationDir);
// Get the files in the source directory and copy to the destination directory
foreach (FileInfo file in dir.GetFiles())
{
string targetFilePath = Path.Combine(destinationDir, file.Name);
file.CopyTo(targetFilePath);
}
// If recursive and copying subdirectories, recursively call this method
if (recursive)
{
foreach (DirectoryInfo subDir in dirs)
{
string newDestinationDir = Path.Combine(destinationDir, subDir.Name);
CopyDirectory(subDir.FullName, newDestinationDir, true);
}
}
}
}
}
@@ -25,6 +25,7 @@ namespace System.Net.Http
#endif
return UseWebProxy(proxy) ? proxy : null;
}
set
{
#if NETSTANDARD
@@ -62,9 +63,13 @@ namespace System.Net.Http
sealed class HttpNoProxy : IWebProxy
{
public static readonly HttpNoProxy Instance = new();
private HttpNoProxy() { }
public ICredentials? Credentials { get; set; }
public Uri? GetProxy(Uri destination) => null;
public bool IsBypassed(Uri host) => true;
}
@@ -75,14 +80,13 @@ namespace System.Net.Http
{
try
{
#if !NETSTANDARD
if (handler is SocketsHttpHandler s)
{
s.Proxy = proxy;
if (useProxy && s.UseProxy != useProxy) s.UseProxy = useProxy; // 仅启用代理时修改开关
}
else
#if NETCOREAPP2_1_OR_GREATER
if (handler is SocketsHttpHandler s)
{
s.Proxy = proxy;
if (useProxy && s.UseProxy != useProxy) s.UseProxy = useProxy; // 仅启用代理时修改开关
return;
}
#endif
if (handler is HttpClientHandler h)
{
+10 -5
View File
@@ -1,4 +1,3 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
@@ -134,12 +133,16 @@ namespace System.Net.Sockets
tcpTableRecords.Add(new TcpProcessRecord(
new IPAddress(tcpRow.localAddr),
new IPAddress(tcpRow.remoteAddr),
BitConverter.ToUInt16(new byte[2] {
BitConverter.ToUInt16(new byte[2]
{
tcpRow.localPort[1],
tcpRow.localPort[0] }, 0),
BitConverter.ToUInt16(new byte[2] {
tcpRow.localPort[0]
}, 0),
BitConverter.ToUInt16(new byte[2]
{
tcpRow.remotePort[1],
tcpRow.remotePort[0] }, 0),
tcpRow.remotePort[0]
}, 0),
tcpRow.owningPid, tcpRow.state));
tableRowPtr = (IntPtr)((long)tableRowPtr + Marshal.SizeOf(tcpRow));
}
@@ -235,6 +238,7 @@ namespace System.Net.Sockets
public MibTcpState State { get; set; }
int _ProcessId;
[DisplayName("Process ID")]
public int ProcessId
{
@@ -258,6 +262,7 @@ namespace System.Net.Sockets
}
Lazy<Process?>? _Process;
[DisplayName("Process")]
public Process? Process => _Process?.Value;
@@ -6,4 +6,5 @@ using static System.Properties.ThisAssembly;
[assembly: InternalsVisibleTo("System.Common.UnitTest.Droid" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.UnitTest" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Desktop.UnitTest" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Droid.UnitTest" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Droid.UnitTest" + PublicKey)]
[assembly: InternalsVisibleTo("System.Application.SteamTools.Client.Droid.UnitTest.App" + PublicKey)]
+8 -8
View File
@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Age_" xml:space="preserve">
<value>{0}</value>
<value>{0}세</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="DayOfWeek_L0" xml:space="preserve">
@@ -178,27 +178,27 @@
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="Female" xml:space="preserve">
<value>여성</value>
<value>여자</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="He" xml:space="preserve">
<value>그는</value>
<value>그</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="Male" xml:space="preserve">
<value>남성</value>
<value>남자</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="NotSupported_FixedSizeCollection" xml:space="preserve">
<value>Collection was of a fixed size.</value>
<value>컬렉션은 고정 된 크기였습니다.</value>
<comment>Comment=https://github.com/dotnet/runtime/blob/v5.0.0-rc.1.20451.14/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx#L2893;Author=MicrosoftTranslator</comment>
</data>
<data name="She" xml:space="preserve">
<value>그녀는</value>
<value>그녀</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="Unknown" xml:space="preserve">
<value>알 수 없습니다</value>
<value>알려지지 않은</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="UnsupportedPhoneNumberSegment_" xml:space="preserve">
@@ -206,7 +206,7 @@
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
<data name="OpenCoreByProcess_Win32Exception_" xml:space="preserve">
<value>웹 링크를 열지 못한 경우 0x{0} 시스템 기본 브라우저를 설정한 다음 다시 시도하십시오</value>
<value>웹 링크 열기 실패 0x{0}, 시도하기 전에 시스템 기본 브라우저를 설정하십시오.</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
</data>
</root>
+32 -32
View File
@@ -118,95 +118,95 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Age_" xml:space="preserve">
<value>{0} лет</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Возраст: {0}</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L0" xml:space="preserve">
<value>Воскресенье</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L1" xml:space="preserve">
<value>Понедельник</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L2" xml:space="preserve">
<value>Вторник</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L3" xml:space="preserve">
<value>Среда</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L4" xml:space="preserve">
<value>Четверг</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L5" xml:space="preserve">
<value>Пятница</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_L6" xml:space="preserve">
<value>Суббота</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S0" xml:space="preserve">
<value>Воскресенье</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S1" xml:space="preserve">
<value>Понедельник</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S2" xml:space="preserve">
<value>Вторник</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S3" xml:space="preserve">
<value>Среда</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S4" xml:space="preserve">
<value>Четверг</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S5" xml:space="preserve">
<value>Пятница</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="DayOfWeek_S6" xml:space="preserve">
<value>Суббота</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="Female" xml:space="preserve">
<value>женщина</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Женщина</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="He" xml:space="preserve">
<value>он</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Он</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="Male" xml:space="preserve">
<value>мужчина</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Мужчина</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="NotSupported_FixedSizeCollection" xml:space="preserve">
<value>Коллекция была фиксированного размера.</value>
<comment>Comment=https://github.com/dotnet/runtime/blob/v5.0.0-rc.1.20451.14/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx#L2893;Author=MicrosoftTranslator</comment>
<value>Коллекция имела фиксированный размер.</value>
<comment>Comment=https://github.com/dotnet/runtime/blob/v5.0.0-rc.1.20451.14/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx#L2893;Author=vanja-san</comment>
</data>
<data name="She" xml:space="preserve">
<value>она</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Она</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="Unknown" xml:space="preserve">
<value>Неизвестный</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Неизвестно</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="UnsupportedPhoneNumberSegment_" xml:space="preserve">
<value>Сегмент неподдерживаемых номеров мобильных телефонов ({0})</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Неподдерживаемые номера телефонов ({0})</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
<data name="OpenCoreByProcess_Win32Exception_" xml:space="preserve">
<value>Открыть веб-ссылку не удалось 0x{0}, пожалуйста, установите системный браузер по умолчанию перед попыткой</value>
<comment>Comment=;Author=MicrosoftTranslator</comment>
<value>Невозможно открыть ссылку 0x{0}, повторите снова, после установки браузер по умолчанию.</value>
<comment>Comment=;Author=vanja-san</comment>
</data>
</root>
@@ -0,0 +1,7 @@
namespace System.Properties
{
partial class ThisAssembly
{
public static string DisplayTrademark => /*DesktopBridge.IsRunningAsUwp ? $"蒸汽++" :*/ AssemblyTrademark;
}
}
@@ -26,9 +26,11 @@ namespace System.Properties
#if NETSTANDARD2_1 || NETCOREAPP2_1_OR_GREATER
static readonly Lazy<bool> mIsBetaRelease = new(() => DynamicVersion.Contains(beta, StringComparison.Ordinal));
public static bool IsBetaRelease => mIsBetaRelease.Value;
static readonly Lazy<bool> mIsAlphaRelease = new(() => DynamicVersion.Contains(alpha, StringComparison.Ordinal));
public static bool IsAlphaRelease => mIsAlphaRelease.Value;
static readonly Lazy<string> mVersionDisplay = new(() =>
@@ -36,6 +38,7 @@ namespace System.Properties
Version version = new(Version);
return $"{version.ToString(3)}{(IsAlphaRelease ? " α" : (IsBetaRelease ? " β" : ""))}{(version.Revision <= 0 ? "" : " rev." + version.Revision)}";
});
public static string VersionDisplay => mVersionDisplay.Value;
#endif
}
@@ -12,7 +12,7 @@ namespace System.Properties
/// <item> macOS:\packaging\build-osx-app.sh &lt;CFBundleVersion&gt; &lt;CFBundleShortVersionString&gt; </item>
/// </list>
/// </summary>
public const string Version = "2.6.8";
public const string Version = "2.7.1";
//public const string InfoVersion = Version + "-beta";
}
@@ -15,7 +15,7 @@ namespace System.Properties
/// <summary>
/// 提供程序集的文本说明
/// </summary>
public const string AssemblyDescription = "「Steam++」是一个包含多种Steam工具功能的工具箱。";
public const string AssemblyDescription = "「Steam++ 工具箱」是一个开源跨平台的多功能游戏工具箱。";
/// <summary>
/// 定义程序集清单的版权自定义属性
@@ -0,0 +1,19 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/IsExternalInit.cs
// https://stackoverflow.com/questions/64749385/predefined-type-system-runtime-compilerservices-isexternalinit-is-not-defined
// https://stackoverflow.com/questions/62648189/testing-c-sharp-9-0-in-vs2019-cs0518-isexternalinit-is-not-defined-or-imported
// https://github.com/dotnet/roslyn/issues/45510
// https://docs.microsoft.com/zh-cn/dotnet/api/system.runtime.compilerservices.isexternalinit?view=net-6.0
#if NETSTANDARD2_1
using System.ComponentModel;
namespace System.Runtime.CompilerServices
{
[EditorBrowsable(EditorBrowsableState.Never)]
public class IsExternalInit
{
}
}
#endif
@@ -560,9 +560,9 @@ namespace System.Security.Cryptography
{
var uint16 = BitConverter.ToUInt16(data, 0);
var flags = (Flags)uint16;
var IVByteArray = data.Skip(2).Take(16).ToArray();
var KeyByteArray = data.Skip(18).Reverse().ToArray();
return new Parameters(KeyByteArray, IVByteArray, flags);
var mIVByteArray = data.Skip(2).Take(16).ToArray();
var mKeyByteArray = data.Skip(18).Reverse().ToArray();
return new Parameters(mKeyByteArray, mIVByteArray, flags);
}
public static Parameters Create(string data)
+3 -2
View File
@@ -126,8 +126,9 @@ namespace System
var formatting = writeIndented ? Formatting.Indented : Formatting.None;
var settings = ignoreNullValues ? new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
} : null;
NullValueHandling = NullValueHandling.Ignore,
}
: null;
return SerializeObject(value, inputType, formatting, settings);
#endif
}

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