Browse Source

Merge pull request #1470 from colinin/abp-10-2-0

feat: Upgrade abp framework to 10.2.0
pull/1473/head
yx lin 6 months ago
committed by GitHub
parent
commit
5dd7a3766d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 106
      .changes/Migration 10.0.2 - 10.2.0.md
  2. 35
      Directory.Packages.props
  3. 11
      apps/vben5/apps/app-antd/.env.development
  4. 3
      apps/vben5/apps/app-antd/package.json
  5. 21
      apps/vben5/apps/app-antd/src/layouts/basic.vue
  6. 17
      apps/vben5/apps/app-antd/src/store/auth.ts
  7. 9
      apps/vben5/apps/app-antd/src/timezone-init.ts
  8. 6
      apps/vben5/apps/app-antd/src/views/blob-management/blobs/index.vue
  9. 15
      apps/vben5/apps/app-antd/src/views/blob-management/containers/index.vue
  10. 8
      apps/vben5/apps/app-antd/src/views/caching/caches/index.vue
  11. 1
      apps/vben5/packages/@abp/account/src/utils/auth.ts
  12. 50
      apps/vben5/packages/@abp/blob-management/package.json
  13. 2
      apps/vben5/packages/@abp/blob-management/src/api/index.ts
  14. 52
      apps/vben5/packages/@abp/blob-management/src/api/useBlobContainersApi.ts
  15. 79
      apps/vben5/packages/@abp/blob-management/src/api/useBlobsApi.ts
  16. 411
      apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFilePreviewModal.vue
  17. 301
      apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFileTable.vue
  18. 339
      apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFileUploadModal.vue
  19. 65
      apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFolderModal.vue
  20. 283
      apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFolderTree.vue
  21. 45
      apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobViewPage.vue
  22. 59
      apps/vben5/packages/@abp/blob-management/src/components/containers/BlobContainerModal.vue
  23. 189
      apps/vben5/packages/@abp/blob-management/src/components/containers/BlobContainerTable.vue
  24. 2
      apps/vben5/packages/@abp/blob-management/src/components/index.ts
  25. 57
      apps/vben5/packages/@abp/blob-management/src/global.d.ts
  26. 3
      apps/vben5/packages/@abp/blob-management/src/index.ts
  27. 78
      apps/vben5/packages/@abp/blob-management/src/types/blobs.ts
  28. 24
      apps/vben5/packages/@abp/blob-management/src/types/containers.ts
  29. 2
      apps/vben5/packages/@abp/blob-management/src/types/index.ts
  30. 6
      apps/vben5/packages/@abp/blob-management/tsconfig.json
  31. 37
      apps/vben5/packages/@abp/cache-management/package.json
  32. 1
      apps/vben5/packages/@abp/cache-management/src/api/index.ts
  33. 93
      apps/vben5/packages/@abp/cache-management/src/api/useCacheManagementApi.ts
  34. 147
      apps/vben5/packages/@abp/cache-management/src/components/CacheEditModal.vue
  35. 291
      apps/vben5/packages/@abp/cache-management/src/components/CacheKeyTable.vue
  36. 121
      apps/vben5/packages/@abp/cache-management/src/components/CacheRefreshModal.vue
  37. 1
      apps/vben5/packages/@abp/cache-management/src/components/index.ts
  38. 8
      apps/vben5/packages/@abp/cache-management/src/constants/permissions.ts
  39. 3
      apps/vben5/packages/@abp/cache-management/src/index.ts
  40. 48
      apps/vben5/packages/@abp/cache-management/src/types/index.ts
  41. 6
      apps/vben5/packages/@abp/cache-management/tsconfig.json
  42. 10
      apps/vben5/packages/@abp/core/src/utils/date.ts
  43. 18
      apps/vben5/packages/@abp/features/src/api/useFeatureDefinitionsApi.ts
  44. 32
      apps/vben5/packages/@abp/features/src/components/definitions/features/FeatureDefinitionModal.vue
  45. 56
      apps/vben5/packages/@abp/features/src/components/definitions/features/FeatureDefinitionTable.vue
  46. 32
      apps/vben5/packages/@abp/features/src/components/features/FeatureGroup.vue
  47. 133
      apps/vben5/packages/@abp/features/src/components/features/FeatureInput.vue
  48. 47
      apps/vben5/packages/@abp/features/src/components/features/FeatureTreeNode.vue
  49. 188
      apps/vben5/packages/@abp/features/src/components/features/FeaturesModal2.vue
  50. 9
      apps/vben5/packages/@abp/features/src/components/features/tree.ts
  51. 167
      apps/vben5/packages/@abp/features/src/components/features/useFeatureTree.ts
  52. 6
      apps/vben5/packages/@abp/features/src/types/definitions.ts
  53. 18
      apps/vben5/packages/@abp/permissions/src/api/usePermissionDefinitionsApi.ts
  54. 23
      apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionModal.vue
  55. 13
      apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue
  56. 8
      apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/types.ts
  57. 9
      apps/vben5/packages/@abp/request/src/hooks/useErrorFormat.ts
  58. 29
      apps/vben5/packages/@abp/request/src/hooks/useWrapperResult.ts
  59. 18
      apps/vben5/packages/@abp/settings/src/api/useDefinitionsApi.ts
  60. 29
      apps/vben5/packages/@abp/settings/src/components/definitions/SettingDefinitionModal.vue
  61. 2
      apps/vben5/packages/effects/hooks/src/use-app-config.ts
  62. 2
      apps/vben5/packages/types/global.d.ts
  63. 5
      apps/vben5/pnpm-workspace.yaml
  64. 2629
      aspnet-core/LINGYUN.MicroService.All.sln
  65. 528
      aspnet-core/LINGYUN.MicroService.All.slnx
  66. 2903
      aspnet-core/LINGYUN.MicroService.Aspire.sln
  67. 65
      aspnet-core/LINGYUN.MicroService.Aspire.slnx
  68. 1246
      aspnet-core/LINGYUN.MicroService.Common.sln
  69. 2301
      aspnet-core/LINGYUN.MicroService.SingleProject.sln
  70. 426
      aspnet-core/LINGYUN.MicroService.SingleProject.slnx
  71. 123
      aspnet-core/LINGYUN.MicroService.Startup.sln
  72. 578
      aspnet-core/LINGYUN.MicroService.TaskManagement.sln
  73. 547
      aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln
  74. 423
      aspnet-core/LINGYUN.MicroService.WechatManagement.sln
  75. 616
      aspnet-core/LINGYUN.MicroService.Workflow.sln
  76. 34
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/AIServiceModule.Configure.cs
  77. 40
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs
  78. 7
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs
  79. 2
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/appsettings.Development.json
  80. 2
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/AdminServiceMigrationsDbContext.cs
  81. 4
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/AdminServiceMigrationsEntityFrameworkCoreModule.cs
  82. 2
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore.csproj
  83. 1086
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/Migrations/20260403034826_Upgrade-Abp-Framework-To-10-2-0.Designer.cs
  84. 109
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/Migrations/20260403034826_Upgrade-Abp-Framework-To-10-2-0.cs
  85. 55
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/Migrations/AdminServiceMigrationsDbContextModelSnapshot.cs
  86. 34
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.Configure.cs
  87. 2
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.cs
  88. 70
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Controllers/SettingMergeController.cs
  89. 45
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Controllers/UserSettingMergeController.cs
  90. 1
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/LINGYUN.Abp.MicroService.AdminService.csproj
  91. 40
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs
  92. 7
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs
  93. 6
      aspnet-core/aspire/LINGYUN.Abp.MicroService.ApiGateway/ApiGatewayModule.cs
  94. 4
      aspnet-core/aspire/LINGYUN.Abp.MicroService.ApiGateway/yarp.json
  95. 10
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AppHost/AppHost.cs
  96. 23
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/DataSeeds/OpenIddictDataSeeder.cs
  97. 1361
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/Migrations/20260402040021_Upgrade-Abp-Framework-To-10-2-0.Designer.cs
  98. 91
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/Migrations/20260402040021_Upgrade-Abp-Framework-To-10-2-0.cs
  99. 112
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/Migrations/AuthServerMigrationsDbContextModelSnapshot.cs
  100. 13
      aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer/AuthServerModule.Configure.cs

106
.changes/Migration 10.0.2 - 10.2.0.md

@ -0,0 +1,106 @@
# 10.0.2 - 10.2.0
## 模块变更
1. [权限管理模块] abp官方新增 [ConfigurationFeatureValueProvider](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.Features/Volo/Abp/Features/ConfigurationFeatureValueProvider.cs), 此提供者使用简称为 `C` 的功能提供者, 与本项目中客户端功能提供者 `ClientFeatureValueProvider` 重名, 因此 `ClientFeatureValueProvider`简称将变更为 `CT`
> *需要手动执行数据库语句以适配此变更:*
```postgresql
update "AbpFeatureValues" afv set "ProviderName" = 'CT' where afv."ProviderName" = 'C'
```
2. [权限管理模块] 增加 [资源权限](https://github.com/abpframework/abp/tree/dev/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/Resources) 自定义接口.
3. [缓存管理模块] 增加批量删除缓存功能.
4. [缓存管理模块] 修复模糊查询时数据为空问题.
5. [缓存管理模块] 增加缓存管理页面.
6. [多语言管理模块] 修复动态本地化
7. [权限管理模块] 增加组织机构资源权限提供者 `OrganizationUnitResourcePermissionValueProvider`
8. [对象存储模块] 重构领域层, 增加持久化层, 存储对象引用、私有文件访问权限, 实现层通过对象引用访问Oss
9. [单体应用服务] 重构数据种子, 解决部分与abp框架冲突种子数据, 造成新租户事件执行失败
10. [Elsa工作量模块] 由于Elsa2.x版本依赖Swashbuckle 6.x版本, 而abp依赖10.x版本, 暂时在Swagger配置中移除Elsa相关接口
11. [EFCoreMySql] 由于 `Pomelo.EntityFrameworkCore.MySql` 太长时间未适配.NET 10, 使用 `Microting.EntityFrameworkCore.MySql` 替换, 详情见: https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/issues/2007
12. [单体应用服务] 新增缺失的MySql数据库迁移脚本, 由于MySql InnoDB 引擎对索引有长度限制, abp 资源权限索引需要限制长度, 暂时移除资源名称加入索引中
13. [解决方案变更] 解决方案文件从 `sln` 格式变更为 `slnx` 格式
14. [数据导出模块] 增加 `IExcelExporterProvider`、`IExcelImporterProvider`、`IWordExporterProvider` 接口, 原 `IExporterProvider`、`IImporterProvider` 标记为弃用
15. [数据导出模块] 增加 `AbpExporterMiniSoftwareModule` 模块, 集成 `MiniExcel`、`MiniWord` 实现 `IExcelExporterProvider`、`IExcelImporterProvider`、`IWordExporterProvider` 接口
16. [解决方案优化] 合并Task、Webhook、Wechat、Workflow解决方案到All中,移除多余的解决方案文件
## 依赖项变更
| 库名称 | 原版本 | 现版本 |
| -------------------------------------------- | --------- | ------ |
| Volo.Abp.* | 10.0.2 | 10.2.0 |
| Elsa2 | 2.16.0 | 2.16.1 |
| Elsa3 | 3.3.5 | 3.6.0 |
| Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite | 5.0.2 | 5.2.0 |
| Microsoft.Bcl.AsyncInterfaces | 10.0.0 | 10.0.2 |
| MySql.EntityFrameworkCore | 10.0.0-rc | 10.0.1 |
| Microting.EntityFrameworkCore.MySql | | 10.0.3 |
| Serilog.Extensions.Logging | 9.0.1 | 9.0.2 |
| DocumentFormat.OpenXml | | 3.5.1 |
| MiniExcel | 1.42.0 | 1.43.0 |
| MiniWord | | 0.9.2 |
| Scriban | 6.3.0 | 7.0.0 |
| Swashbuckle.AspNetCore | 9.0.4 | 10.0.1 |
## 数据库迁移
| Project Name | Database Provider | Scripts | EF Core Version |
| ------------------------ | ----------------- | ---------------------------------------------- | --------------- |
| aspire/AdminService | PostgreSQL | 20260403034826_Upgrade-Abp-Framework-To-10-2-0 | 10.0.2 |
| aspire/AuthServer | PostgreSQL | 20260402040021_Upgrade-Abp-Framework-To-10-2-0 | 10.0.2 |
| aspire/PlatformService | PostgreSQL | 20260411023117_Add-Blob-Management-Module | 10.0.2 |
| services/Single | MySQL | 20260421022905_Upgrade-Abp-Framework-To-10-2-0 | 10.0.3 |
| services/Single | PostgreSQL | 20260403035350_Upgrade-Abp-Framework-To-10-2-0 | 10.0.2 |
| services/Single | PostgreSQL | 20260421023019_Add-Blob-Management-Module | 10.0.2 |
| services/Single | SqlServer | 20260403035440_Upgrade-Abp-Framework-To-10-2-0 | 10.0.2 |
| services/Single | SqlServer | 20260421023044_Add-Blob-Management-Module | 10.0.2 |
| services/AuthServer | MySQL | 20260420064613_Upgrade-Abp-Framework-To-10-0-2 | 10.0.3 |
| services/BackendAdmin | MySQL | 20260420064540_Upgrade-Abp-Framework-To-10-0-2 | 10.0.3 |
| services/Platform | MySQL | 20260424033808_Add-Blob-Management-Module | 10.0.3 |
| services/IdentityServer | MySQL | 20260420065028_Upgrade-Abp-Framework-To-10-0-2 | 10.0.3 |
| services/RealtimeMessage | MySQL | 20260420065252_Upgrade-Abp-Framework-To-10-0-2 | 10.0.3 |
| services/TaskManagement | MySQL | 20260420073543_Upgrade-Abp-Framework-To-10-0-2 | 10.0.3 |
## 数据库连接字符串
| Module Name | ConnectionString Name | Example(MySQL) |
| ----------------------------- | ---------------------------- | ------------------------------------------------------------ |
| Default | Default | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/Identity | AbpIdentity | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/IdentityServer | AbpIdentityServer | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/OpenIddict | AbpOpenIddict | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/TenantManagement | AbpTenantManagement(AbpSaas) | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/FeatureManagement | AbpFeatureManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/SettingManagement | AbpSettingManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| abp/PermissionManagement | AbpPermissionManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/AIManagement | AbpAIManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/BlobManagement | AbpBlobManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/DataProtectionManagement | AbpDataProtectionManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/Gdpr | AbpGdpr | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/Saas | AbpSaas | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/LocalizationManagement | AbpLocalizationManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/TextTemplating | AbpTextTemplating | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/Platform | AppPlatform | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/MessageService | MessageService | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/NotificationService | Notifications | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/TaskManagement | TaskManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/WebhooksManagement | WebhooksManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |
| labp/Elsa | Workflow | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None |

35
Directory.Packages.props

@ -1,19 +1,19 @@
<Project>
<PropertyGroup>
<DotNetCoreCAPPackageVersion>10.0.0</DotNetCoreCAPPackageVersion>
<ElsaPackageVersion>2.16.0</ElsaPackageVersion>
<ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion>
<VoloAbpPackageVersion>10.0.2</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>10.0.2</LINGYUNAbpPackageVersion>
<MicrosoftExtensionsPackageVersion>10.0.0</MicrosoftExtensionsPackageVersion>
<MicrosoftAspNetCorePackageVersion>10.0.0</MicrosoftAspNetCorePackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>10.0.0</MicrosoftEntityFrameworkCorePackageVersion>
<ElsaPackageVersion>2.16.1</ElsaPackageVersion>
<ElsaNextPackageVersion>3.6.0</ElsaNextPackageVersion>
<VoloAbpPackageVersion>10.2.0</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>10.2.0</LINGYUNAbpPackageVersion>
<MicrosoftExtensionsPackageVersion>10.0.2</MicrosoftExtensionsPackageVersion>
<MicrosoftAspNetCorePackageVersion>10.0.2</MicrosoftAspNetCorePackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>10.0.2</MicrosoftEntityFrameworkCorePackageVersion>
<AspirePackageVersion>13.1.0</AspirePackageVersion>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<!-- Abp Framework -->
<ItemGroup>
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="5.0.2" />
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="5.2.0" />
<PackageVersion Include="Volo.Abp.AI" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" />
@ -164,7 +164,7 @@
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.0" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.2" />
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" />
@ -183,9 +183,10 @@
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
<PackageVersion Include="MySql.EntityFrameworkCore" Version="10.0.0-rc" />
<PackageVersion Include="MySql.EntityFrameworkCore" Version="10.0.1" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="9.0.0" />
<PackageVersion Include="Microting.EntityFrameworkCore.MySql" Version="10.0.3" />
</ItemGroup>
<!-- Aspire -->
<ItemGroup>
@ -234,6 +235,10 @@
<PackageVersion Include="Elsa.Studio.Login.BlazorWasm" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Elsa.Studio.Translations" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Elsa.Studio.Agents" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Elsa.Scheduling" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Elsa.Expressions.CSharp" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Elsa.Expressions.Liquid" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Elsa.Http" Version="$(ElsaNextPackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(MicrosoftAspNetCorePackageVersion)" />
@ -261,7 +266,7 @@
<PackageVersion Include="Serilog.Enrichers.Process" Version="3.0.0" />
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.1" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.2" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="10.0.0" />
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
@ -330,6 +335,7 @@
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
<PackageVersion Include="AgileConfig.Client" Version="1.8.0" />
<PackageVersion Include="CommonMark.NET" Version="0.15.1" />
<PackageVersion Include="DocumentFormat.OpenXml" Version="3.5.1" />
<PackageVersion Include="Elastic.Apm.NetCoreAll" Version="1.34.1" />
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageVersion Include="Dapr.Client" Version="1.16.0" />
@ -344,7 +350,8 @@
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.2" />
<PackageVersion Include="Magicodes.IE.Excel" Version="2.8.2" />
<PackageVersion Include="Markdig" Version="0.44.0" />
<PackageVersion Include="MiniExcel" Version="1.42.0" />
<PackageVersion Include="MiniExcel" Version="1.43.0" />
<PackageVersion Include="MiniWord" Version="0.9.2" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="NEST" Version="7.17.5" />
<PackageVersion Include="Elastic.Clients.Elasticsearch" Version="8.19.4" />
@ -360,7 +367,7 @@
<PackageVersion Include="Quartz.Serialization.Json" Version="3.15.0" />
<PackageVersion Include="Rebus.RabbitMq" Version="10.0.1" />
<PackageVersion Include="RulesEngine" Version="5.0.5" />
<PackageVersion Include="Scriban" Version="6.3.0" />
<PackageVersion Include="Scriban" Version="7.0.0" />
<PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" />
<PackageVersion Include="SkyApm.Agent.Hosting" Version="2.2.0" />
<PackageVersion Include="SkyApm.Diagnostics.AspNetCore" Version="2.2.0" />
@ -369,7 +376,7 @@
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.7" />
<PackageVersion Include="StackExchange.Redis" Version="2.9.17" />
<PackageVersion Include="Spire.XLS" Version="15.12.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.4" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.0.1" />
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageVersion Include="System.Threading.Channels" Version="10.0.0" />
<PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.37" />

11
apps/vben5/apps/app-antd/.env.development

@ -16,12 +16,19 @@ VITE_DEVTOOLS=false
VITE_INJECT_APP_LOADING=true
# 是否仅允许OIDC登录
VITE_GLOB_AUTH_ONLY_OIDC=false
VITE_GLOB_AUTH_ONLY_OIDC=true
# 认证服务器
VITE_GLOB_AUTH_AUTHORITY="http://localhost:44385"
VITE_GLOB_AUTH_AUTHORITY="http://localhost:30000"
# 授权范围
VITE_GLOB_AUTH_AUDIENCE="openid email address phone profile offline_access lingyun-abp-application"
# 客户端Id
VITE_GLOB_AUTH_CLIENT_ID=vue-admin-client
# 客户端密钥【生产环境请勿设置此值,建议启用仅允许OIDC登录,将使用授权码类型登录】
VITE_GLOB_AUTH_CLIENT_SECRET=1q2w3e*
# 可选值: login、consent、select_account
# 取消注释登录时在多租户选择账户
# VITE_GLOB_AUTH_PROMPT=select_account
# 取消注释登录时强制用户在该请求上输入凭据,使单一登录无效
# VITE_GLOB_AUTH_PROMPT=login
# 取消注释登录时始终要求用户授权
# VITE_GLOB_AUTH_PROMPT=consent

3
apps/vben5/apps/app-antd/package.json

@ -29,6 +29,8 @@
"@abp/account": "workspace:*",
"@abp/ai-management": "workspace:*",
"@abp/auditing": "workspace:*",
"@abp/blob-management": "workspace:*",
"@abp/cache-management": "workspace:*",
"@abp/components": "workspace:*",
"@abp/core": "workspace:*",
"@abp/data-protection": "workspace:*",
@ -38,7 +40,6 @@
"@abp/localization": "workspace:*",
"@abp/notifications": "workspace:*",
"@abp/openiddict": "workspace:*",
"@abp/oss": "workspace:*",
"@abp/permissions": "workspace:*",
"@abp/platform": "workspace:*",
"@abp/request": "workspace:*",

21
apps/vben5/apps/app-antd/src/layouts/basic.vue

@ -95,14 +95,19 @@ watch(
<template>
<BasicLayout @clear-preferences-and-logout="handleLogout">
<template #user-dropdown>
<UserDropdown
:avatar
:description="description"
:menus
:tag-text="userInfo?.email"
:text="userInfo?.realName"
@logout="handleLogout"
/>
<div class="flex items-center pr-[4px]">
<UserDropdown
:avatar
:description="description"
:menus
:tag-text="userInfo?.email"
:text="userInfo?.realName"
@logout="handleLogout"
/>
<span class="mb-1 flex items-center text-sm font-medium">
{{ description }}
</span>
</div>
</template>
<template #notification>
<Notification

17
apps/vben5/apps/app-antd/src/store/auth.ts

@ -37,6 +37,12 @@ export const useAuthStore = defineStore('auth', () => {
if (user?.refresh_token) {
accessStore.setRefreshToken(user.refresh_token);
}
try {
const userInfo = await fetchUserInfo();
userStore.setUserInfo(userInfo);
} catch (error) {
console.warn('refresh user iinfo error', error);
}
return newToken;
}
}
@ -170,7 +176,6 @@ export const useAuthStore = defineStore('auth', () => {
userInfoRes = user.profile;
}
const abpConfig = await getConfigApi();
const picture = await getPictureApi();
userInfo = {
userId: userInfoRes.sub ?? abpConfig.currentUser.id,
username: userInfoRes.uniqueName ?? abpConfig.currentUser.userName,
@ -178,7 +183,7 @@ export const useAuthStore = defineStore('auth', () => {
userInfoRes.name ??
abpConfig.currentUser.name ??
abpConfig.currentUser.userName,
avatar: URL.createObjectURL(picture) ?? '',
avatar: '',
desc: userInfoRes.uniqueName ?? userInfoRes.name,
email: userInfoRes.email ?? userInfoRes.email,
emailVerified:
@ -191,6 +196,14 @@ export const useAuthStore = defineStore('auth', () => {
roles: abpConfig.currentUser.roles,
homePath: '/',
};
try {
const picture = await getPictureApi();
if (picture) {
userInfo.avatar = URL.createObjectURL(picture);
}
} catch (error) {
console.warn('Error in get user avatar:', error);
}
userStore.setUserInfo(userInfo);
abpStore.setApplication(abpConfig);
accessStore.setAccessCodes(Object.keys(abpConfig.auth.grantedPolicies));

9
apps/vben5/apps/app-antd/src/timezone-init.ts

@ -1,16 +1,21 @@
import { setTimezoneHandler } from '@vben/stores';
import { useAbpStore } from '@abp/core';
import { useTimeZoneSettingsApi } from '@abp/settings';
/**
* 初始化时区处理,通过API保存时区设置
*/
export function initTimezone() {
const abpStore = useAbpStore();
const { getMyTimezoneApi, getTimezonesApi, updateMyTimezoneApi } =
useTimeZoneSettingsApi();
setTimezoneHandler({
getTimezone() {
return getMyTimezoneApi();
async getTimezone() {
if (abpStore.application?.currentUser.isAuthenticated) {
return await getMyTimezoneApi();
}
return undefined;
},
setTimezone(timezone: string) {
return updateMyTimezoneApi(timezone);

6
apps/vben5/apps/app-antd/src/views/oss/containers/index.vue → apps/vben5/apps/app-antd/src/views/blob-management/blobs/index.vue

@ -1,15 +1,15 @@
<script lang="ts" setup>
import { Page } from '@vben/common-ui';
import { ContainerTable } from '@abp/oss';
import { BlobViewPage } from '@abp/blob-management';
defineOptions({
name: 'Vben5OssContainers',
name: 'Vben5BlobFiles',
});
</script>
<template>
<Page>
<ContainerTable />
<BlobViewPage />
</Page>
</template>

15
apps/vben5/apps/app-antd/src/views/blob-management/containers/index.vue

@ -0,0 +1,15 @@
<script lang="ts" setup>
import { Page } from '@vben/common-ui';
import { BlobContainerTable } from '@abp/blob-management';
defineOptions({
name: 'Vben5BlobContainers',
});
</script>
<template>
<Page>
<BlobContainerTable />
</Page>
</template>

8
apps/vben5/apps/app-antd/src/views/oss/objects/index.vue → apps/vben5/apps/app-antd/src/views/caching/caches/index.vue

@ -1,15 +1,15 @@
<script lang="ts" setup>
import { Page } from '@vben/common-ui';
import { ObjectPage } from '@abp/oss';
import { CacheKeyTable } from '@abp/cache-management';
defineOptions({
name: 'Vben5OssObjects',
name: 'Vben5CacheKeys',
});
</script>
<template>
<Page auto-content-height>
<ObjectPage />
<Page>
<CacheKeyTable />
</Page>
</template>

1
apps/vben5/packages/@abp/account/src/utils/auth.ts

@ -156,6 +156,7 @@ const oidcSettings: UserManagerSettings = {
silent_redirect_uri: `${window.location.origin}/silent-renew.html`,
automaticSilentRenew: true,
loadUserInfo: true,
prompt: auth.prompt,
userStore: new WebStorageStateStore({
store: import.meta.env.DEV
? localStorage

50
apps/vben5/packages/@abp/blob-management/package.json

@ -0,0 +1,50 @@
{
"name": "@abp/blob-management",
"version": "10.0.2",
"homepage": "https://github.com/colinin/abp-next-admin",
"bugs": "https://github.com/colinin/abp-next-admin/issues",
"repository": {
"type": "git",
"url": "git+https://github.com/colinin/abp-next-admin.git",
"directory": "packages/@abp/blob-management"
},
"license": "MIT",
"type": "module",
"sideEffects": [
"**/*.css"
],
"exports": {
".": {
"types": "./src/index.ts",
"default": "./src/index.ts"
},
"./global": {
"types": "./global.d.ts"
}
},
"dependencies": {
"@abp/components": "workspace:*",
"@abp/core": "workspace:*",
"@abp/features": "workspace:*",
"@abp/request": "workspace:*",
"@abp/ui": "workspace:*",
"@ant-design/icons-vue": "catalog:",
"@vben/access": "workspace:*",
"@vben/common-ui": "workspace:*",
"@vben/hooks": "workspace:*",
"@vben/icons": "workspace:*",
"@vben/layouts": "workspace:*",
"@vben/locales": "workspace:*",
"@vben/stores": "workspace:*",
"@vben/utils": "workspace:*",
"@vue-office/docx": "catalog:",
"@vue-office/excel": "catalog:",
"@vue-office/pdf": "catalog:",
"@vue-office/pptx": "catalog:",
"ant-design-vue": "catalog:",
"vue": "catalog:",
"vue-demi": "catalog:",
"vue-simple-uploader": "catalog:",
"vxe-table": "catalog:"
}
}

2
apps/vben5/packages/@abp/blob-management/src/api/index.ts

@ -0,0 +1,2 @@
export { useBlobContainersApi } from './useBlobContainersApi';
export { useBlobsApi } from './useBlobsApi';

52
apps/vben5/packages/@abp/blob-management/src/api/useBlobContainersApi.ts

@ -0,0 +1,52 @@
import type { PagedResultDto } from '@abp/core';
import type {
BlobContainerCreateDto,
BlobContainerDto,
BlobContainerGetPagedListInput,
} from '../types/containers';
import { useRequest } from '@abp/request';
export function useBlobContainersApi() {
const { cancel, request } = useRequest();
function deleteApi(id: string): Promise<void> {
return request(`/api/blob-management/containers/${id}`, {
method: 'DELETE',
});
}
function getApi(id: string): Promise<BlobContainerDto> {
return request<BlobContainerDto>(`/api/blob-management/containers/${id}`, {
method: 'GET',
});
}
function getPagedListApi(
input?: BlobContainerGetPagedListInput,
): Promise<PagedResultDto<BlobContainerDto>> {
return request<PagedResultDto<BlobContainerDto>>(
`/api/blob-management/containers`,
{
method: 'GET',
params: input,
},
);
}
function createApi(input: BlobContainerCreateDto): Promise<BlobContainerDto> {
return request<BlobContainerDto>(`/api/blob-management/containers`, {
method: 'POST',
data: input,
});
}
return {
cancel,
createApi,
deleteApi,
getApi,
getPagedListApi,
};
}

79
apps/vben5/packages/@abp/blob-management/src/api/useBlobsApi.ts

@ -0,0 +1,79 @@
import type { PagedResultDto } from '@abp/core';
import type {
BlobDto,
BlobFolderCreateDto,
BlobGetPagedListInput,
} from '../types/blobs';
import { useRequest } from '@abp/request';
import { BlobType } from '../types/blobs';
export function useBlobsApi() {
const { cancel, request } = useRequest();
function createFolderApi(input: BlobFolderCreateDto): Promise<BlobDto> {
return request<BlobDto>(`/api/blob-management/blobs/folder`, {
method: 'POST',
data: input,
});
}
function deleteApi(id: string): Promise<void> {
return request(`/api/blob-management/blobs/${id}`, {
method: 'DELETE',
});
}
function getApi(id: string): Promise<BlobDto> {
return request<BlobDto>(`/api/blob-management/blobs/${id}`, {
method: 'GET',
});
}
function getContentApi(id: string): Promise<Blob> {
return request<Blob>(`/api/blob-management/blobs/uid/${id}/content`, {
method: 'GET',
responseType: 'blob',
});
}
function getFolderPagedListApi(
input: BlobGetPagedListInput,
): Promise<PagedResultDto<BlobDto>> {
return getPagedListApi({
...input,
type: BlobType.Folder,
});
}
function getFilePagedListApi(
input: BlobGetPagedListInput,
): Promise<PagedResultDto<BlobDto>> {
return getPagedListApi({
...input,
type: BlobType.File,
});
}
function getPagedListApi(
input: BlobGetPagedListInput,
): Promise<PagedResultDto<BlobDto>> {
return request<PagedResultDto<BlobDto>>(`/api/blob-management/blobs`, {
method: 'GET',
params: input,
});
}
return {
cancel,
createFolderApi,
deleteApi,
getApi,
getContentApi,
getFolderPagedListApi,
getFilePagedListApi,
getPagedListApi,
};
}

411
apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFilePreviewModal.vue

@ -0,0 +1,411 @@
<script setup lang="ts">
import type { BlobDto } from '../../types/blobs';
import { defineAsyncComponent, ref, watch } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { downloadFileFromUrl } from '@vben/utils';
import { Button, Empty, message, Spin } from 'ant-design-vue';
import { useBlobsApi } from '../../api/useBlobsApi';
type FileType = 'excel' | 'image' | 'pdf' | 'ppt' | 'text' | 'word';
const VueOfficeDocx = defineAsyncComponent({
loader: async () => {
const res = await import('@vue-office/docx/lib/v3/index.js');
import('@vue-office/docx/lib/v3/index.css');
return res.default;
},
loadingComponent: Spin,
delay: 200,
});
const VueOfficeExcel = defineAsyncComponent({
loader: async () => {
const res = await import('@vue-office/excel/lib/v3/index.js');
import('@vue-office/excel/lib/v3/index.css');
return res.default;
},
loadingComponent: Spin,
delay: 200,
});
const VueOfficePdf = defineAsyncComponent({
loader: () => import('@vue-office/pdf/lib/v3/index.js'),
loadingComponent: Spin,
delay: 200,
});
const VueOfficePptx = defineAsyncComponent({
loader: () => import('@vue-office/pptx/lib/v3/index.js'),
loadingComponent: Spin,
delay: 200,
});
const Image = defineAsyncComponent({
loader: async () => {
const res = await import('ant-design-vue');
return res.Image;
},
loadingComponent: Spin,
delay: 200,
});
const modalTitle = ref('');
const isPreview = ref(false);
const isLoading = ref(false);
const blob = ref<BlobDto>();
const blobData = ref<string>();
const blobText = ref<string>();
const blobType = ref<FileType>();
const errorMessage = ref<string>('');
const excelComponentKey = ref(0); // 只对 Excel 组件使用 key
const { getContentApi } = useBlobsApi();
// 文件类型配置
const allowFiles: Record<FileType, string[]> = {
pdf: ['.pdf'],
word: ['.doc', '.docx'],
excel: ['.xls', '.xlsx'],
ppt: ['.ppt', '.pptx'],
text: ['.txt', '.text', '.log', '.md', '.json', '.xml', '.yaml', '.yml'],
image: [
'.bmp',
'.png',
'.jpg',
'.jpeg',
'.webp',
'.tif',
'.tiff',
'.gif',
'.svg',
],
};
// 文件大小限制(默认50MB)
const MAX_FILE_SIZE = 50 * 1024 * 1024;
// 判断文件类型
function getFileType(): FileType | undefined {
const fileName = blob.value!.name.toLocaleLowerCase();
for (const [type, extensions] of Object.entries(allowFiles)) {
if (extensions.some((ext) => fileName.endsWith(ext))) {
return type as FileType;
}
}
return undefined;
}
// 检查文件是否允许预览
function isAllowPreview(): boolean {
return !!getFileType();
}
// 检查文件大小
function isFileSizeValid(content: Blob): boolean {
if (content.size > MAX_FILE_SIZE) {
errorMessage.value = $t('BlobManagement.Blobs:FileTooLarge', {
size: MAX_FILE_SIZE / 1024 / 1024,
});
return false;
}
return true;
}
function onError(error?: string) {
message.error(`${$t('BlobManagement.Blobs:PreviewError')}: ${error}`);
}
// 清理资源
function cleanup() {
if (blobData.value) {
URL.revokeObjectURL(blobData.value);
blobData.value = undefined;
}
blobText.value = '';
blobType.value = undefined;
isPreview.value = false;
errorMessage.value = '';
}
const [Modal, modalApi] = useVbenModal({
showCancelButton: false,
showConfirmButton: false,
fullscreen: true,
fullscreenButton: false,
onCancel: () => {
cleanup();
},
onOpenChange: async (isOpen) => {
if (isOpen) {
await onInit();
} else {
cleanup();
}
},
});
async function onInit() {
try {
isLoading.value = true;
isPreview.value = false;
errorMessage.value = '';
modalApi.lock();
// 重置状态
cleanup();
// 获取数据
blob.value = modalApi.getData<BlobDto>();
if (!blob.value) {
errorMessage.value = $t('BlobManagement.Blobs:NoData');
return;
}
modalTitle.value = `${$t('BlobManagement.Blobs:Preview')} - ${blob.value.name}`;
// 检查是否支持预览
if (!isAllowPreview()) {
errorMessage.value = $t('BlobManagement.BlobCanNotPreviewMessage');
return;
}
// 获取文件内容
const content = await getContentApi(blob.value.id);
// 检查文件大小
if (!isFileSizeValid(content)) {
return;
}
// 创建对象URL
blobData.value = URL.createObjectURL(content);
// 设置文件类型并处理内容
blobType.value = getFileType();
await processFileContent(content);
isPreview.value = true;
} catch (error) {
console.error('Preview error:', error);
errorMessage.value = $t('BlobManagement.Blobs:PreviewError');
message.error(errorMessage.value);
} finally {
isLoading.value = false;
modalApi.unlock();
}
}
async function processFileContent(content: Blob) {
// 处理文本文件
if (blobType.value === 'text') {
try {
blobText.value = await content.text();
// 限制文本显示长度(避免大文件导致页面卡顿)
const maxLength = 100_000; // 10万字符
if (blobText.value.length > maxLength) {
blobText.value = `${blobText.value.slice(0, Math.max(0, maxLength))}\n\n... ${$t(
'BlobManagement.Blobs:TextTruncated',
)}`;
message.warning($t('BlobManagement.Blobs:TextTooLarge'));
}
} catch (error) {
console.error('Read text error:', error);
throw new Error('Failed to read text file');
}
}
}
// 下载原始文件
function handleDownload() {
if (!blob.value) return;
downloadFileFromUrl({
fileName: blob.value.name,
source: `/api/blob-management/blobs/uid/${blob.value.id}/content`,
});
}
// 监听blobData变化,确保资源清理
watch(blobData, (newVal, oldVal) => {
if (oldVal && oldVal !== newVal) {
URL.revokeObjectURL(oldVal);
}
});
</script>
<template>
<Modal :title="modalTitle">
<div class="preview-container">
<!-- 加载状态 -->
<div v-if="isLoading" class="flex h-96 items-center justify-center">
<Spin :tip="$t('AbpUi.LoadingWithThreeDot')" />
</div>
<!-- 错误提示 -->
<div v-else-if="errorMessage" class="error-message">
<Empty :description="errorMessage">
<template #image>
<span class="text-6xl">📄</span>
</template>
</Empty>
</div>
<!-- 预览内容 -->
<template v-else>
<!-- 不支持预览 -->
<Empty
v-if="!isPreview"
:description="$t('BlobManagement.BlobCanNotPreviewMessage')"
>
<template #image>
<span class="text-6xl">🔍</span>
</template>
</Empty>
<!-- Word预览 -->
<div v-else-if="blobType === 'word'" class="office-preview-wrapper">
<VueOfficeDocx :src="blobData" @error="onError" />
</div>
<!-- Excel预览 - 单独处理,添加key强制重新渲染 -->
<div v-else-if="blobType === 'excel'" class="excel-preview-wrapper">
<VueOfficeExcel
:key="excelComponentKey"
:src="blobData"
@error="onError"
/>
</div>
<!-- PDF预览 - 不做任何处理,保持原样 -->
<VueOfficePdf
v-else-if="blobType === 'pdf'"
:src="blobData"
@error="onError"
/>
<!-- PPT预览 -->
<div v-else-if="blobType === 'ppt'" class="office-preview-wrapper">
<VueOfficePptx :src="blobData" @error="onError" />
</div>
<!-- 图片预览 -->
<div v-else-if="blobType === 'image'" class="image-preview">
<Image
:src="blobData"
:alt="blob?.name"
class="max-h-[80vh] max-w-full object-contain"
/>
</div>
<!-- 文本预览 -->
<div v-else-if="blobType === 'text'" class="text-preview">
<div
class="whitespace-pre-wrap rounded bg-gray-50 p-4 font-mono text-sm dark:bg-gray-800"
>
{{ blobText }}
</div>
</div>
</template>
<!-- 下载按钮 -->
<div v-if="blob" class="download-button">
<Button type="primary" @click="handleDownload">
{{ $t('BlobManagement.Blobs:Download') }}
</Button>
</div>
</div>
</Modal>
</template>
<style scoped lang="scss">
.preview-container {
position: relative;
min-height: 400px;
.error-message {
padding: 40px 20px;
text-align: center;
}
.office-preview-wrapper {
width: 100%;
:deep(> div) {
width: 100%;
}
}
// Excel 单独包装器样式
.excel-preview-wrapper {
width: 100%;
min-height: 500px;
:deep(> div) {
width: 100%;
height: 100%;
min-height: 500px;
}
}
.image-preview {
display: flex;
align-items: center;
justify-content: center;
min-height: 400px;
overflow: auto;
background-color: #f5f5f5;
border-radius: 8px;
}
.text-preview {
max-height: 70vh;
overflow: auto;
:deep(.whitespace-pre-wrap) {
word-break: normal;
overflow-wrap: break-word;
white-space: pre-wrap;
}
}
.download-button {
position: sticky;
right: 20px;
bottom: 20px;
z-index: 10;
float: right;
margin-top: 20px;
}
}
</style>
<style lang="scss">
.vben-modal {
.vben-modal__body {
height: auto !important;
max-height: calc(90vh - 110px);
padding: 20px;
overflow-y: auto;
}
}
.excel-preview-wrapper {
.vue-office-excel {
width: 100% !important;
height: 100% !important;
min-height: 500px !important;
iframe,
canvas,
.office-viewer {
width: 100% !important;
height: 100% !important;
min-height: 500px !important;
}
}
}
</style>

301
apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFileTable.vue

@ -0,0 +1,301 @@
<script setup lang="ts">
import type { VxeGridListeners, VxeGridProps } from '@abp/ui';
import type { BlobDto } from '../../types/blobs';
import { defineAsyncComponent, h, nextTick, ref, watch } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { downloadFileFromUrl } from '@vben/utils';
import { formatToDateTime, isNullOrWhiteSpace } from '@abp/core';
import { useVbenVxeGrid } from '@abp/ui';
import {
DeleteOutlined,
DownloadOutlined,
EyeOutlined,
UploadOutlined,
} from '@ant-design/icons-vue';
import { Button, Card, message, Modal } from 'ant-design-vue';
import { useBlobsApi } from '../../api/useBlobsApi';
import { BlobType } from '../../types/blobs';
defineOptions({
name: 'FileList',
});
const props = defineProps<{
containerId: string;
folderId?: string;
}>();
const kbUnit = 1 * 1024;
const mbUnit = kbUnit * 1024;
const gbUnit = mbUnit * 1024;
const { deleteApi, getPagedListApi } = useBlobsApi();
const selectedKeys = ref<string[]>([]);
const gridOptions: VxeGridProps<BlobDto> = {
columns: [
{
align: 'left',
field: 'name',
minWidth: 150,
sortable: true,
title: $t('BlobManagement.DisplayName:Name'),
},
{
align: 'left',
field: 'type',
formatter: ({ row }) => {
if (row.type === BlobType.Folder) {
return $t('BlobManagement.BlobType:Folder');
}
return $t('BlobManagement.BlobType:File');
},
minWidth: 150,
sortable: true,
title: $t('BlobManagement.DisplayName:BlobType'),
},
{
align: 'left',
field: 'size',
formatter: ({ cellValue }) => {
const size = Number(cellValue);
if (size > gbUnit) {
let gb = Math.round(size / gbUnit);
if (gb < 1) {
gb = 1;
}
return `${gb} GB`;
}
if (size > mbUnit) {
let mb = Math.round(size / mbUnit);
if (mb < 1) {
mb = 1;
}
return `${mb} MB`;
}
let kb = Math.round(size / kbUnit);
if (kb < 1) {
kb = 1;
}
return `${kb} KB`;
},
minWidth: 150,
sortable: true,
title: $t('BlobManagement.DisplayName:Size'),
},
{
align: 'left',
field: 'creationTime',
formatter({ cellValue }) {
return cellValue ? formatToDateTime(cellValue) : '';
},
minWidth: 120,
sortable: true,
title: $t('BlobManagement.DisplayName:CreationTime'),
},
{
align: 'left',
field: 'lastModificationTime',
formatter({ cellValue }) {
return cellValue ? formatToDateTime(cellValue) : '';
},
minWidth: 120,
sortable: true,
title: $t('BlobManagement.DisplayName:LastModificationTime'),
},
{
field: 'action',
fixed: 'right',
slots: { default: 'action' },
title: $t('AbpUi.Actions'),
width: 260,
},
],
exportConfig: {},
keepSource: true,
proxyConfig: {
ajax: {
query: async ({ page, sort }) => {
const sorting = sort.order ? `${sort.field} ${sort.order}` : undefined;
return await getPagedListApi({
containerId: props.containerId,
maxResultCount: page.pageSize,
parentId: props.folderId,
sorting,
skipCount: (page.currentPage - 1) * page.pageSize,
});
},
},
autoLoad: false,
response: {
total: 'totalCount',
list: 'items',
},
},
sortConfig: {
remote: true,
},
toolbarConfig: {
custom: true,
export: false,
refresh: false,
zoom: true,
},
};
const gridEvents: VxeGridListeners<BlobDto> = {
checkboxAll: (params) => {
selectedKeys.value = params.records.map((record) => record.name);
},
checkboxChange: (params) => {
selectedKeys.value = params.records.map((record) => record.name);
},
sortChange: () => {
gridApi.query();
},
};
const [BlobFileUploadModal, uploadModalApi] = useVbenModal({
connectedComponent: defineAsyncComponent(
() => import('./BlobFileUploadModal.vue'),
),
});
const [BlobFilePreviewModal, previewModalApi] = useVbenModal({
connectedComponent: defineAsyncComponent(
() => import('./BlobFilePreviewModal.vue'),
),
});
const [Grid, gridApi] = useVbenVxeGrid({
gridEvents,
gridOptions,
});
function onUpload() {
uploadModalApi.setData({
containerId: props.containerId,
folderId: props.folderId,
});
uploadModalApi.open();
}
function onDownload(row: BlobDto) {
Modal.confirm({
centered: true,
content: $t('BlobManagement.BlobWellDownloadMessage', [row.name]),
onCancel: () => {},
onOk: () => {
downloadFileFromUrl({
fileName: row.name,
source: `/api/blob-management/blobs/uid/${row.id}/content`,
});
},
title: $t('AbpUi.AreYouSure'),
});
}
function onPreview(row: BlobDto) {
previewModalApi.setData(row);
previewModalApi.open();
}
function onDelete(row: BlobDto) {
Modal.confirm({
centered: true,
content: $t('AbpUi.ItemWillBeDeletedMessageWithFormat', [row.name]),
onCancel: () => {},
onOk: async () => {
await deleteApi(row.id);
message.success($t('AbpUi.DeletedSuccessfully'));
await gridApi.query();
},
title: $t('AbpUi.AreYouSure'),
});
}
watch(
() => props.containerId,
(containerId) => {
nextTick(() => {
gridApi.setGridOptions({
toolbarConfig: {
refresh: !isNullOrWhiteSpace(containerId),
},
});
if (!isNullOrWhiteSpace(containerId)) {
gridApi.query();
}
});
},
);
watch(
() => props.folderId,
(_) => {
nextTick(() => {
if (!isNullOrWhiteSpace(props.containerId)) {
gridApi.query();
}
});
},
);
</script>
<template>
<Card :title="$t('BlobManagement.Blobs:Files')">
<Grid>
<template #toolbar-tools>
<Button
v-if="props.containerId"
:icon="h(UploadOutlined)"
type="primary"
@click="onUpload"
>
{{ $t('BlobManagement.Blobs:UploadFile') }}
</Button>
</template>
<template #action="{ row }">
<div class="flex flex-row">
<Button
v-if="row.type === BlobType.File"
:icon="h(EyeOutlined)"
block
type="link"
@click="onPreview(row)"
>
{{ $t('BlobManagement.Blobs:Preview') }}
</Button>
<Button
v-if="row.type === BlobType.File"
:icon="h(DownloadOutlined)"
block
type="link"
@click="onDownload(row)"
>
{{ $t('BlobManagement.Blobs:Download') }}
</Button>
<Button
:icon="h(DeleteOutlined)"
danger
block
type="link"
@click="onDelete(row)"
>
{{ $t('AbpUi.Delete') }}
</Button>
</div>
</template>
</Grid>
</Card>
<BlobFilePreviewModal />
<BlobFileUploadModal @file-uploaded="() => gridApi.query()" />
</template>
<style lang="scss" scoped></style>

339
apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFileUploadModal.vue

@ -0,0 +1,339 @@
<script setup lang="ts">
import type { VxeComponentStyleType } from 'vxe-table';
import { h, ref, useTemplateRef, watch } from 'vue';
import uploader from 'vue-simple-uploader';
import 'vue-simple-uploader/dist/style.css';
import { useVbenModal } from '@vben/common-ui';
import { useRefresh } from '@vben/hooks';
import { $t } from '@vben/locales';
import { useAccessStore } from '@vben/stores';
import { isNullOrWhiteSpace } from '@abp/core';
import {
CaretRightOutlined,
DeleteOutlined,
PauseOutlined,
} from '@ant-design/icons-vue';
import { Button, Tag, Tooltip } from 'ant-design-vue';
import { VxeColumn, VxeTable } from 'vxe-table';
const emits = defineEmits<{
(event: 'fileUploaded', file: any): void;
}>();
const Uploader = uploader.Uploader;
const UploaderDrop = uploader.UploaderDrop;
const UploaderList = uploader.UploaderList;
const UploaderUnsupport = uploader.UploaderUnsupport;
interface ModalState {
containerId: string;
folderId?: string;
}
const selectBtn = useTemplateRef<any>('selectBtn');
const uploaderWrap = useTemplateRef<any>('uploaderWrap');
const { refresh } = useRefresh();
const accessStore = useAccessStore();
const [Modal, modalApi] = useVbenModal({
class: 'w-1/2',
closeOnClickModal: false,
closeOnPressEscape: false,
draggable: true,
footer: false,
onCancel: () => {
uploaderWrap.value?.uploader.cancel();
},
onOpenChange: (isOpen) => {
if (isOpen) {
onInit();
}
},
});
const options = ref({
chunkRetryInterval: null,
headers: {},
initialPaused: true,
maxChunkRetries: 3,
permanentErrors: [400, 401, 403, 404, 415, 500, 501],
processParams: (_params: any, _file: any) => {},
processResponse: (response: any, cb: any) => {
if (!isNullOrWhiteSpace(response)) {
const error = JSON.parse(response);
if (error.code !== '0') {
cb(true, error.message);
return;
}
}
cb(null, response);
},
successStatuses: [200, 201, 202, 204, 205],
target: '/api/blob-management/blobs/file/chunk',
testChunks: false,
withCredentials: false,
});
function onInit() {
const state = modalApi.getData<ModalState>();
options.value = {
...options.value,
headers: {
Authorization: accessStore.accessToken,
},
processParams: (params: any, file: any) => {
params.containerId = state.containerId;
params.name = file.name;
if (state.folderId) {
params.parentId = state.folderId;
}
return params;
},
};
}
function onSelectFiles() {
selectBtn.value?.click();
}
function onResume(file: any) {
if (file.error) {
file.errorMsg = '';
file.retry();
} else {
file.resume();
}
}
function onPause(file: any) {
file.pause();
}
function onDelete(file: any) {
file.cancel();
}
function onFileSubmitted(_: any, files: any[]) {
files.forEach((f) => {
f.paused = true;
f.completed = false;
f.progress = 0;
f.progressText = '0 %';
});
}
function onUploadProgress(_: any, file: any) {
if (file._prevUploadedSize) {
const progress = Math.floor((file._prevUploadedSize / file.size) * 100);
file.progress = progress;
file.progressText = `${progress} %`;
file.completed = progress === 100;
}
}
function onUploadError(_rootFile: any, file: any, message: any, chunk: any) {
if (chunk?.xhr?.status === 401) {
// 401 错误代码刷新页面, 由axios拦截器刷新token
refresh();
} else {
file.errorMsg = message;
}
}
function onUploadSuccess(_rootFile: any, file: any) {
emits('fileUploaded', file);
}
function formatSize(size: number) {
if (size < 1024) {
return `${size.toFixed(0)} bytes`;
} else if (size < 1024 * 1024) {
return `${(size / 1024).toFixed(0)} KB`;
} else if (size < 1024 * 1024 * 1024) {
return `${(size / 1024 / 1024).toFixed(1)} MB`;
} else {
return `${(size / 1024 / 1024 / 1024).toFixed(1)} GB`;
}
}
function rowStyle(params: any): VxeComponentStyleType {
if (params.row.error) {
return {
background: '#fff1f0',
color: '#f5222d',
fontWeight: '500',
};
}
const progress = Math.min(100, Math.max(0, params.row.progress || 0));
const getGradientByProgress = (progress: number) => {
if (progress === 0) {
return {
start: 'rgba(64, 169, 255, 0.1)',
end: 'rgba(64, 169, 255, 0.05)',
};
}
if (progress <= 30) {
return {
start: 'rgba(24, 144, 255, 0.15)',
end: 'rgba(24, 144, 255, 0.05)',
};
}
if (progress <= 70) {
return {
start: 'rgba(0, 199, 228, 0.15)',
end: 'rgba(0, 199, 228, 0.05)',
};
}
if (progress < 100) {
return {
start: 'rgba(82, 196, 26, 0.2)',
end: 'rgba(82, 196, 26, 0.05)',
};
}
return {
start: 'rgba(82, 196, 26, 0.25)',
end: 'rgba(82, 196, 26, 0.1)',
};
};
const { start, end } = getGradientByProgress(progress);
if (progress === 100 && !params.row.error) {
return {
background:
'linear-gradient(135deg, rgba(82, 196, 26, 0.15) 0%, rgba(82, 196, 26, 0.05) 100%)',
position: 'relative',
transition: 'all 0.3s ease',
};
}
return {
background: `linear-gradient(
90deg,
${start} 0%,
${end} ${progress}%,
transparent ${progress}%,
transparent 100%
)`,
backgroundSize: '100% 100%',
transition: 'background 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
position: 'relative',
};
}
watch(
() => [selectBtn.value, uploaderWrap.value],
([button, wrap]) => {
if (button && wrap) {
wrap.uploader.assignBrowse(button);
}
},
);
</script>
<template>
<Modal :title="$t('BlobManagement.Blobs:UploadFile')">
<Uploader
:options="options"
ref="uploaderWrap"
@file-error="onUploadError"
@file-progress="onUploadProgress"
@file-success="onUploadSuccess"
@files-submitted="onFileSubmitted"
>
<UploaderUnsupport />
<UploaderDrop>
<div class="flex flex-row gap-2">
<input ref="selectBtn" style="display: none" />
<Button type="primary" @click="onSelectFiles">
{{ $t('BlobManagement.Blobs:SelectFile') }}
</Button>
</div>
</UploaderDrop>
<UploaderList>
<template #default="{ fileList }">
<VxeTable :data="fileList" :row-style="rowStyle">
<VxeColumn type="seq" width="70" />
<VxeColumn
field="name"
:title="$t('BlobManagement.DisplayName:Name')"
/>
<VxeColumn
field="size"
:title="$t('BlobManagement.DisplayName:Size')"
width="100"
>
<template #default="{ row }">
<span>{{ formatSize(row.size) }}</span>
</template>
</VxeColumn>
<VxeColumn
field="status"
:title="$t('BlobManagement.DisplayName:UploadStatus')"
width="180"
>
<template #default="{ row }">
<Tooltip v-if="row.error" :title="row.errorMsg">
<Tag color="red">
{{ $t('BlobManagement.UploadStatus:Error') }}
</Tag>
</Tooltip>
<Tag v-else-if="row.paused" color="orange">
{{ $t('BlobManagement.UploadStatus:Pause') }}
</Tag>
<Tag v-else-if="row.completed" color="green">
{{ $t('BlobManagement.UploadStatus:Completed') }}
</Tag>
<span v-else>{{
`${row.progressText} ${formatSize(row.averageSpeed)}/s`
}}</span>
</template>
</VxeColumn>
<VxeColumn
fixed="right"
field="action"
:title="$t('AbpUi.Actions')"
width="100"
>
<template #default="{ row }">
<div class="flex flex-row">
<div v-if="!row.completed">
<Button
v-if="row.paused || row.error"
:icon="h(CaretRightOutlined)"
@click="onResume(row)"
type="link"
/>
<Button
v-else
:icon="h(PauseOutlined)"
@click="onPause(row)"
type="link"
/>
</div>
<Button
:icon="h(DeleteOutlined)"
@click="onDelete(row)"
type="link"
danger
/>
</div>
</template>
</VxeColumn>
</VxeTable>
</template>
</UploaderList>
</Uploader>
</Modal>
</template>
<style scoped></style>

65
apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFolderModal.vue

@ -0,0 +1,65 @@
<script setup lang="ts">
import type { BlobDto } from '../../types/blobs';
import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { message } from 'ant-design-vue';
import { useBlobsApi } from '../../api/useBlobsApi';
interface ModalState {
containerId: string;
parentId?: string;
}
const emits = defineEmits<{
(event: 'change', data: BlobDto): void;
}>();
const { createFolderApi } = useBlobsApi();
const [Form, formApi] = useVbenForm({
handleSubmit: onSubmit,
schema: [
{
component: 'Input',
fieldName: 'name',
label: $t('BlobManagement.DisplayName:Name'),
rules: 'required',
},
],
showDefaultActions: false,
});
const [Modal, modalApi] = useVbenModal({
onConfirm: async () => {
await formApi.validateAndSubmitForm();
},
});
async function onSubmit(values: Record<string, any>) {
try {
const state = modalApi.getData<ModalState>();
modalApi.setState({ submitting: true });
const dto = await createFolderApi({
containerId: state.containerId,
parentId: state.parentId,
name: values.name,
});
message.success($t('AbpUi.SavedSuccessfully'));
emits('change', dto);
modalApi.close();
} finally {
modalApi.setState({ submitting: false });
}
}
</script>
<template>
<Modal :title="$t('BlobManagement.Blobs:CreateFolder')">
<Form />
</Modal>
</template>
<style scoped></style>

283
apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobFolderTree.vue

@ -0,0 +1,283 @@
<script setup lang="ts">
import type { EventDataNode, Key } from 'ant-design-vue/es/vc-tree/interface';
import type { TreeProps } from 'ant-design-vue/es/vc-tree/props';
import type { BlobDto } from '../../types';
import type { BlobContainerDto } from '../../types/containers';
import { defineAsyncComponent, nextTick, onMounted, ref, watch } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { Button, Card, DirectoryTree, Empty, Select } from 'ant-design-vue';
import { useBlobContainersApi } from '../../api/useBlobContainersApi';
import { useBlobsApi } from '../../api/useBlobsApi';
const emits = defineEmits<{
(event: 'containerChange', id: string): void;
(event: 'folderChange', id?: string): void;
}>();
interface Folder {
children?: Folder[];
id: string;
isLeaf?: boolean;
key: string;
name: string;
path: string;
title: string;
}
const { getPagedListApi: getContainersApi } = useBlobContainersApi();
const { getFolderPagedListApi: getFoldersApi } = useBlobsApi();
const rootFolder: Folder = {
id: '',
isLeaf: false,
key: './',
name: './',
path: '/',
title: $t('BlobManagement.Blobs:RootFolder'),
children: [],
};
const containerId = ref<string>('');
const loadedFolders = ref<string[]>([]);
const expandedFolders = ref<string[]>([]);
const selectedFolders = ref<string[]>([]);
const containers = ref<BlobContainerDto[]>([]);
const folders = ref<Folder[]>([
{
...rootFolder,
},
]);
const isLoadingContainers = ref(false);
const isLoadingFolders = ref(false);
const [BlobFolderModal, modalApi] = useVbenModal({
connectedComponent: defineAsyncComponent(
() => import('./BlobFolderModal.vue'),
),
});
const clearTreeState = () => {
folders.value = [
{
...rootFolder,
},
];
loadedFolders.value = [];
expandedFolders.value = [];
selectedFolders.value = [];
isLoadingFolders.value = false;
};
const onLoadChildFolders: TreeProps['loadData'] = async (treeNode) => {
if (isLoadingContainers.value || !containerId.value) {
return;
}
const nodeKey = treeNode.key?.toString();
if (!nodeKey) return;
if (loadedFolders.value.includes(nodeKey)) {
return;
}
try {
isLoadingFolders.value = true;
const children = await getFolders(containerId.value, treeNode.dataRef?.id);
if (treeNode.dataRef && containerId.value) {
treeNode.dataRef.children = children;
folders.value = [...folders.value];
loadedFolders.value = [...loadedFolders.value, nodeKey];
}
} catch (error) {
console.error('Failed to load folders:', error);
if (treeNode.dataRef) {
treeNode.dataRef.children = [];
}
} finally {
isLoadingFolders.value = false;
}
};
async function onInit() {
try {
isLoadingContainers.value = true;
const { items } = await getContainersApi({
maxResultCount: 1000,
});
containers.value = items;
} catch (error) {
console.error('Failed to load containers:', error);
} finally {
isLoadingContainers.value = false;
}
}
async function getFolders(containerId: string, parentId?: string) {
if (!containerId) {
return [];
}
try {
const { items } = await getFoldersApi({
containerId,
parentId,
});
return items.map((folder) => {
return {
isLeaf: false,
id: folder.id,
key: folder.id,
name: folder.name,
path: folder.path,
title: folder.name,
children: [],
};
});
} catch (error) {
console.error('Failed to get folders:', error);
return [];
}
}
function onFolderExpand(
_: Key[],
info: {
expanded: boolean;
node: EventDataNode;
},
) {
if (!info.expanded) {
const keys = [...loadedFolders.value];
const findIndex = keys.lastIndexOf(info.node?.key?.toString());
if (findIndex !== -1) {
keys.splice(findIndex, 1);
loadedFolders.value = keys;
}
}
}
function onFolderChange(folderId?: string) {
emits('folderChange', folderId);
}
async function onContainerChange(newContainerId: string) {
clearTreeState();
emits('containerChange', newContainerId);
await nextTick();
}
function onCreate() {
if (!containerId.value) {
return;
}
modalApi.setData({
containerId: containerId.value,
parentId: selectedFolders.value[0],
});
modalApi.open();
}
function onFolderCreated(blob: BlobDto) {
const parentId = selectedFolders.value[0];
if (parentId) {
const index = loadedFolders.value.indexOf(parentId);
if (index !== -1) {
loadedFolders.value.splice(index, 1);
}
if (expandedFolders.value.includes(parentId)) {
const parentNode = findNodeById(folders.value, parentId);
if (parentNode && parentNode.children) {
parentNode.children = [];
folders.value = [...folders.value];
}
}
}
emits('folderChange', blob.id);
}
function findNodeById(nodes: Folder[], id: string): Folder | null {
for (const node of nodes) {
if (node.id === id) {
return node;
}
if (node.children) {
const found = findNodeById(node.children, id);
if (found) return found;
}
}
return null;
}
watch(containerId, (newVal, oldVal) => {
if (newVal !== oldVal && newVal) {
onContainerChange(newVal);
}
});
onMounted(onInit);
</script>
<template>
<Card :title="$t('BlobManagement.Blobs:Folder')" class="h-full">
<div class="flex h-full flex-col gap-2">
<Select
:placeholder="$t('BlobManagement.Blobs:SelectContainer')"
:options="containers"
:field-names="{ label: 'name', value: 'id' }"
:loading="isLoadingContainers"
v-model:value="containerId"
@change="(e) => onContainerChange(e!.toString())"
/>
<Button
v-if="containerId"
block
type="primary"
ghost
:disabled="isLoadingFolders"
@click="onCreate"
>
{{ $t('BlobManagement.Blobs:CreateFolder') }}
</Button>
<div class="h-[calc(100%-100px)] overflow-auto">
<!-- 添加 key 属性强制重新渲染树组件 -->
<DirectoryTree
v-if="containerId"
:key="containerId"
block-node
:expand-action="false"
v-model:expanded-keys="expandedFolders"
v-model:selected-keys="selectedFolders"
:loaded-keys="loadedFolders"
:tree-data="folders"
:load-data="onLoadChildFolders"
@select="(_, info) => onFolderChange(info.node?.dataRef?.id)"
@expand="onFolderExpand"
/>
<Empty v-else />
</div>
</div>
</Card>
<BlobFolderModal @change="onFolderCreated" />
</template>
<style scoped lang="scss">
:deep(.ant-tree) {
.ant-tree-title {
white-space: normal;
}
}
:deep(.ant-card-body) {
height: calc(100% - 56px);
}
</style>

45
apps/vben5/packages/@abp/blob-management/src/components/blobs/BlobViewPage.vue

@ -0,0 +1,45 @@
<script setup lang="ts">
import { reactive, ref } from 'vue';
import { ColPage } from '@vben/common-ui';
import BlobFileTable from './BlobFileTable.vue';
import BlobFolderTree from './BlobFolderTree.vue';
const containerId = ref<string>('');
const folderId = ref<string>();
const props = reactive({
leftCollapsible: false,
leftMaxWidth: 30,
leftMinWidth: 20,
leftWidth: 30,
resizable: true,
rightWidth: 70,
splitHandle: true,
splitLine: true,
});
function onContainerChange(val: string) {
containerId.value = val;
folderId.value = undefined;
}
function onFolderChange(val?: string) {
folderId.value = val;
}
</script>
<template>
<ColPage auto-content-height v-bind="props">
<template #left>
<BlobFolderTree
@container-change="onContainerChange"
@folder-change="onFolderChange"
/>
</template>
<BlobFileTable :container-id="containerId" :folder-id="folderId" />
</ColPage>
</template>
<style scoped></style>

59
apps/vben5/packages/@abp/blob-management/src/components/containers/BlobContainerModal.vue

@ -0,0 +1,59 @@
<script setup lang="ts">
import type { BlobContainerDto } from '../../types/containers';
import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { message } from 'ant-design-vue';
import { useBlobContainersApi } from '../../api/useBlobContainersApi';
defineOptions({
name: 'BlobContainerModal',
});
const emits = defineEmits<{
(event: 'change', data: BlobContainerDto): void;
}>();
const { cancel, createApi } = useBlobContainersApi();
const [Form, formApi] = useVbenForm({
handleSubmit: onSubmit,
schema: [
{
component: 'Input',
fieldName: 'name',
label: $t('BlobManagement.DisplayName:Name'),
rules: 'required',
},
],
showDefaultActions: false,
});
const [Modal, modalApi] = useVbenModal({
onCancel: cancel,
onConfirm: async () => {
await formApi.validateAndSubmitForm();
},
});
async function onSubmit(values: Record<string, any>) {
try {
modalApi.setState({ submitting: true });
const dto = await createApi({ name: values.name });
message.success($t('AbpUi.SavedSuccessfully'));
emits('change', dto);
modalApi.close();
} finally {
modalApi.setState({ submitting: false });
}
}
</script>
<template>
<Modal :title="$t('BlobManagement.BlobContainers:Create')">
<Form />
</Modal>
</template>
<style scoped></style>

189
apps/vben5/packages/@abp/blob-management/src/components/containers/BlobContainerTable.vue

@ -0,0 +1,189 @@
<script setup lang="ts">
import type { VxeGridListeners, VxeGridProps } from '@abp/ui';
import type { VbenFormProps } from '@vben/common-ui';
import type { BlobContainerDto } from '../../types/containers';
import { defineAsyncComponent, h, ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { formatToDateTime } from '@abp/core';
import { useVbenVxeGrid } from '@abp/ui';
import { DeleteOutlined, PlusOutlined } from '@ant-design/icons-vue';
import { Button, message, Modal } from 'ant-design-vue';
import { useBlobContainersApi } from '../../api/useBlobContainersApi';
defineOptions({
name: 'BlobContainerTable',
});
const { cancel, deleteApi, getPagedListApi } = useBlobContainersApi();
const selectedKeys = ref<string[]>([]);
const formOptions: VbenFormProps = {
collapsed: true,
collapsedRows: 2,
commonConfig: {
componentProps: {
class: 'w-full',
},
},
schema: [
{
component: 'Input',
componentProps: {
allowClear: true,
},
fieldName: 'filter',
formItemClass: 'col-span-3 items-baseline',
label: $t('AbpUi.Search'),
},
],
// 控制表单是否显示折叠按钮
showCollapseButton: true,
// 按下回车时是否提交表单
submitOnEnter: true,
};
const gridOptions: VxeGridProps<BlobContainerDto> = {
columns: [
{
align: 'left',
field: 'name',
minWidth: 150,
sortable: true,
title: $t('BlobManagement.DisplayName:Name'),
},
{
align: 'left',
field: 'creationTime',
formatter({ cellValue }) {
return cellValue ? formatToDateTime(cellValue) : '';
},
minWidth: 120,
sortable: true,
title: $t('BlobManagement.DisplayName:CreationTime'),
},
{
align: 'left',
field: 'lastModificationTime',
formatter({ cellValue }) {
return cellValue ? formatToDateTime(cellValue) : '';
},
minWidth: 120,
sortable: true,
title: $t('BlobManagement.DisplayName:LastModificationTime'),
},
{
field: 'action',
fixed: 'right',
slots: { default: 'action' },
title: $t('AbpUi.Actions'),
width: 150,
},
],
exportConfig: {},
keepSource: true,
proxyConfig: {
ajax: {
query: async ({ page, sort }, formValues) => {
const sorting = sort.order ? `${sort.field} ${sort.order}` : undefined;
return await getPagedListApi({
sorting,
maxResultCount: page.pageSize,
skipCount: (page.currentPage - 1) * page.pageSize,
...formValues,
});
},
},
response: {
total: 'totalCount',
list: 'items',
},
},
toolbarConfig: {
custom: true,
export: true,
refresh: {
code: 'query',
},
zoom: true,
},
};
const gridEvents: VxeGridListeners<BlobContainerDto> = {
checkboxAll: (params) => {
selectedKeys.value = params.records.map((record) => record.name);
},
checkboxChange: (params) => {
selectedKeys.value = params.records.map((record) => record.name);
},
sortChange: () => {
gridApi.query();
},
};
const [Grid, gridApi] = useVbenVxeGrid({
formOptions,
gridEvents,
gridOptions,
});
const [BlobContainerModal, modalApi] = useVbenModal({
connectedComponent: defineAsyncComponent(
() => import('./BlobContainerModal.vue'),
),
});
function onCreate() {
modalApi.setData({});
modalApi.open();
}
function onDelete(row: BlobContainerDto) {
Modal.confirm({
centered: true,
content: $t('AbpUi.ItemWillBeDeletedMessageWithFormat', [row.name]),
onCancel: () => {
cancel();
},
onOk: async () => {
await deleteApi(row.id);
message.success($t('AbpUi.DeletedSuccessfully'));
await gridApi.query();
},
title: $t('AbpUi.AreYouSure'),
});
}
</script>
<template>
<Grid :table-title="$t('BlobManagement.BlobContainers')">
<template #toolbar-tools>
<Button :icon="h(PlusOutlined)" type="primary" @click="onCreate">
{{ $t('BlobManagement.BlobContainers:Create') }}
</Button>
</template>
<template #action="{ row }">
<div class="flex flex-row">
<Button
:icon="h(DeleteOutlined)"
danger
block
type="link"
@click="onDelete(row)"
>
{{ $t('AbpUi.Delete') }}
</Button>
</div>
</template>
</Grid>
<BlobContainerModal @change="() => gridApi.query()" />
</template>
<style lang="scss" scoped></style>

2
apps/vben5/packages/@abp/blob-management/src/components/index.ts

@ -0,0 +1,2 @@
export { default as BlobViewPage } from './blobs/BlobViewPage.vue';
export { default as BlobContainerTable } from './containers/BlobContainerTable.vue';

57
apps/vben5/packages/@abp/blob-management/src/global.d.ts

@ -0,0 +1,57 @@
declare module 'vue-simple-uploader';
declare module '@vue-office/docx' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/docx/lib/v3/index.js' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/excel' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/excel/lib/v3/index.js' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/pdf' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/pdf/lib/v3/index.js' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/pptx' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}
declare module '@vue-office/pptx/lib/v3/index.js' {
import { DefineComponent } from 'vue';
const component: DefineComponent<any>;
export default component;
}

3
apps/vben5/packages/@abp/blob-management/src/index.ts

@ -0,0 +1,3 @@
export * from './api';
export * from './components';
export * from './types';

78
apps/vben5/packages/@abp/blob-management/src/types/blobs.ts

@ -0,0 +1,78 @@
import type {
ExtensibleAuditedEntityDto,
PagedAndSortedResultRequestDto,
} from '@abp/core';
export enum BlobType {
File = 1,
Folder = 0,
}
interface BlobDto extends ExtensibleAuditedEntityDto<string> {
contentType?: string;
downloadCount: number;
expirationTime?: Date;
name: string;
path: string;
size: number;
type: BlobType;
}
interface BlobFolderCreateBaseDto {
name: string;
parentId?: string;
}
interface BlobFileCreateBaseDto {
compareMd5?: string;
file: Blob | File;
name: string;
parentId?: string;
}
interface BlobFileChunkCreateBaseDto extends BlobFileCreateBaseDto {
chunkNumber: number;
chunkSize: number;
currentChunkSize: number;
totalChunks: number;
}
interface BlobFileCreateDto extends BlobFileCreateBaseDto {
containerId: string;
}
interface BlobFileChunkCreateDto extends BlobFileChunkCreateBaseDto {
containerId: string;
}
interface BlobFolderCreateDto extends BlobFolderCreateBaseDto {
containerId: string;
}
interface BlobDownloadByNameInput {
blobName: string;
containerName: string;
}
interface BlobGetPagedListInputBase extends PagedAndSortedResultRequestDto {
contentType?: string;
parentId?: string;
type?: BlobType;
}
interface BlobGetPagedListInput extends BlobGetPagedListInputBase {
containerId: string;
}
export type {
BlobDownloadByNameInput,
BlobDto,
BlobFileChunkCreateBaseDto,
BlobFileChunkCreateDto,
BlobFileCreateBaseDto,
BlobFileCreateDto,
BlobFolderCreateBaseDto,
BlobFolderCreateDto,
BlobGetPagedListInput,
BlobGetPagedListInputBase,
};

24
apps/vben5/packages/@abp/blob-management/src/types/containers.ts

@ -0,0 +1,24 @@
import type {
ExtensibleAuditedEntityDto,
IHasConcurrencyStamp,
PagedAndSortedResultRequestDto,
} from '@abp/core';
interface BlobContainerDto
extends ExtensibleAuditedEntityDto<string>, IHasConcurrencyStamp {
name: string;
}
interface BlobContainerCreateDto {
name: string;
}
interface BlobContainerGetPagedListInput extends PagedAndSortedResultRequestDto {
filter?: string;
}
export type {
BlobContainerCreateDto,
BlobContainerDto,
BlobContainerGetPagedListInput,
};

2
apps/vben5/packages/@abp/blob-management/src/types/index.ts

@ -0,0 +1,2 @@
export * from './blobs';
export * from './containers';

6
apps/vben5/packages/@abp/blob-management/tsconfig.json

@ -0,0 +1,6 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "@vben/tsconfig/web.json",
"include": ["src"],
"exclude": ["node_modules"]
}

37
apps/vben5/packages/@abp/cache-management/package.json

@ -0,0 +1,37 @@
{
"name": "@abp/cache-management",
"version": "10.0.2",
"homepage": "https://github.com/colinin/abp-next-admin",
"bugs": "https://github.com/colinin/abp-next-admin/issues",
"repository": {
"type": "git",
"url": "git+https://github.com/colinin/abp-next-admin.git",
"directory": "packages/@abp/cache-management"
},
"license": "MIT",
"type": "module",
"sideEffects": [
"**/*.css"
],
"exports": {
".": {
"types": "./src/index.ts",
"default": "./src/index.ts"
}
},
"dependencies": {
"@abp/core": "workspace:*",
"@abp/request": "workspace:*",
"@abp/ui": "workspace:*",
"@ant-design/icons-vue": "catalog:",
"@vben/access": "workspace:*",
"@vben/common-ui": "workspace:*",
"@vben/hooks": "workspace:*",
"@vben/icons": "workspace:*",
"@vben/locales": "workspace:*",
"ant-design-vue": "catalog:",
"dayjs": "catalog:",
"vue": "catalog:",
"vxe-table": "catalog:"
}
}

1
apps/vben5/packages/@abp/cache-management/src/api/index.ts

@ -0,0 +1 @@
export { useCacheManagementApi } from './useCacheManagementApi';

93
apps/vben5/packages/@abp/cache-management/src/api/useCacheManagementApi.ts

@ -0,0 +1,93 @@
import type {
CacheKeyInput,
CacheKeysDto,
CacheRefreshInput,
CacheRemoveKeysInput,
CacheSetInput,
CacheValueDto,
GetCacheKeysInput,
} from '../types';
import { useRequest } from '@abp/request';
/** 缓存管理API接口 */
export function useCacheManagementApi() {
const apiPrefix = '/api/caching-management/cache';
const { cancel, request } = useRequest();
/**
* 获取所有缓存键
* @param input 参数
*/
function getKeysApi(input?: GetCacheKeysInput): Promise<CacheKeysDto> {
return request<CacheKeysDto>(`${apiPrefix}/keys`, {
method: 'GET',
params: input,
});
}
/**
* 获取缓存值
* @param input 参数
*/
function getKeyValueApi(input: CacheKeyInput): Promise<CacheValueDto> {
return request<CacheValueDto>(`${apiPrefix}/value`, {
method: 'GET',
params: input,
});
}
/**
* 设置缓存值
* @param input 参数
*/
function setValueApi(input: CacheSetInput): Promise<void> {
return request(`${apiPrefix}/set`, {
method: 'PUT',
data: input,
});
}
/**
* 刷新缓存
* @param input 参数
*/
function refreshApi(input: CacheRefreshInput): Promise<void> {
return request(`${apiPrefix}/refresh`, {
method: 'PUT',
data: input,
});
}
/**
* 移除缓存
* @param input 参数
*/
function removeApi(input: CacheKeyInput): Promise<void> {
return request(`${apiPrefix}/remove`, {
method: 'DELETE',
params: input,
});
}
/**
* 批量移除缓存
* @param input 参数
*/
function bulkRemoveApi(input: CacheRemoveKeysInput): Promise<void> {
return request(`${apiPrefix}/bulk/remove`, {
method: 'DELETE',
data: input,
});
}
return {
cancel,
getKeysApi,
getKeyValueApi,
refreshApi,
setValueApi,
removeApi,
bulkRemoveApi,
};
}

147
apps/vben5/packages/@abp/cache-management/src/components/CacheEditModal.vue

@ -0,0 +1,147 @@
<script setup lang="ts">
import { defineEmits, defineOptions } from 'vue';
import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { toDate } from '@abp/core';
import { useMessage } from '@abp/ui';
import { Alert } from 'ant-design-vue';
import { useCacheManagementApi } from '../api/useCacheManagementApi';
defineOptions({
name: 'CacheEditModal',
});
const emit = defineEmits<{
(event: 'change', key: string): void;
}>();
const message = useMessage();
const { getKeyValueApi, setValueApi } = useCacheManagementApi();
const [Form, formApi] = useVbenForm({
commonConfig: {
componentProps: {
class: 'w-full',
},
},
handleSubmit: onSubmit,
schema: [
{
component: 'Textarea',
disabled: true,
fieldName: 'key',
label: $t('CachingManagement.DisplayName:Key'),
rules: 'required',
componentProps: {
autoSize: {
minRows: 3,
},
},
},
{
component: 'DatePicker',
disabled: true,
fieldName: 'absoluteExpiration',
label: $t('CachingManagement.DisplayName:AbsoluteExpiration'),
componentProps: {
format: 'YYYY-MM-DD HH:mm:ss',
},
},
{
component: 'Input',
disabled: true,
fieldName: 'type',
label: $t('CachingManagement.DisplayName:Type'),
},
{
component: 'InputNumber',
disabled: true,
fieldName: 'size',
label: $t('CachingManagement.DisplayName:Size'),
},
{
component: 'Textarea',
fieldName: 'value',
label: $t('CachingManagement.DisplayName:Values'),
rules: 'required',
componentProps: {
autoSize: {
minRows: 3,
maxRows: 8,
},
showCount: true,
},
},
],
showDefaultActions: false,
});
const [Modal, modalApi] = useVbenModal({
class: 'w-1/3',
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onConfirm: async () => {
await formApi.validateAndSubmitForm();
},
onOpenChange: async (isOpen: boolean) => {
if (isOpen) {
try {
modalApi.setState({ loading: true });
const { key } = modalApi.getData();
await onGet(key);
} finally {
modalApi.setState({ loading: false });
}
}
},
title: $t('CachingManagement.CacheInfo'),
});
async function onGet(key: string) {
const cacheValue = await getKeyValueApi({ key });
formApi.setValues({
key,
absoluteExpiration: toDate(cacheValue.expiration),
type: cacheValue.type,
size: cacheValue.size,
value: cacheValue.values.data,
});
}
async function onSubmit(input: Record<string, any>) {
modalApi.lock();
try {
await setValueApi({
key: input.key,
value: input.value,
absoluteExpiration: input.absoluteExpiration,
});
message.success($t('AbpUi.SavedSuccessfully'));
emit('change', input.key);
modalApi.close();
} finally {
modalApi.unlock();
}
}
</script>
<template>
<Modal>
<div class="flex flex-col gap-4">
<Alert
closable
show-icon
type="warning"
:message="$t('CachingManagement.EditCacheValueAlertMessage')"
/>
<Form />
</div>
</Modal>
</template>
<style scoped></style>

291
apps/vben5/packages/@abp/cache-management/src/components/CacheKeyTable.vue

@ -0,0 +1,291 @@
<script setup lang="ts">
import type { VxeGridListeners, VxeGridProps } from '@abp/ui';
import type { VbenFormProps } from '@vben/common-ui';
import { computed, defineAsyncComponent, h, onMounted, ref } from 'vue';
import { useAccess } from '@vben/access';
import { confirm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { sortby } from '@abp/core';
import { useMessage, useVbenVxeGrid } from '@abp/ui';
import {
DeleteOutlined,
EditOutlined,
ReloadOutlined,
} from '@ant-design/icons-vue';
import { Button } from 'ant-design-vue';
import { useCacheManagementApi } from '../api/useCacheManagementApi';
import { CachingManagementPermissions } from '../constants/permissions';
defineOptions({
name: 'CacheKeyTable',
});
interface CacheVto {
key: string;
}
const cacheKeys = ref<CacheVto[]>([]);
const selectKeys = ref<string[]>([]);
const message = useMessage();
const { hasAccessByCodes } = useAccess();
const { bulkRemoveApi, getKeysApi, removeApi } = useCacheManagementApi();
const isBulkDeleteEnabled = computed(() => {
if (selectKeys.value.length === 0) {
return false;
}
return hasAccessByCodes([CachingManagementPermissions.Delete]);
});
const formOptions: VbenFormProps = {
collapsed: false,
handleReset: onReset,
async handleSubmit(params) {
await onGet(params);
},
schema: [
{
component: 'Input',
fieldName: 'prefix',
label: $t('CachingManagement.DisplayName:Prefix'),
},
{
component: 'Input',
fieldName: 'filter',
label: $t('AbpUi.Search'),
},
],
showCollapseButton: true,
submitOnEnter: true,
};
const gridOptions: VxeGridProps<CacheVto> = {
columns: [
{
align: 'center',
type: 'checkbox',
width: 50,
},
{
align: 'center',
type: 'seq',
width: 50,
},
{
align: 'left',
field: 'key',
minWidth: 150,
sortable: true,
title: $t('CachingManagement.DisplayName:Key'),
},
{
field: 'action',
fixed: 'right',
visible: hasAccessByCodes([
CachingManagementPermissions.Default,
CachingManagementPermissions.Refresh,
CachingManagementPermissions.ManageValue,
]),
slots: { default: 'action' },
title: $t('AbpUi.Actions'),
width: 260,
},
],
expandConfig: {
accordion: true,
padding: true,
trigger: 'row',
height: 300,
},
exportConfig: {},
keepSource: true,
proxyConfig: {
ajax: {
query: async ({ page, sort }) => {
let items = sortby(cacheKeys.value, sort.field);
if (sort.order === 'desc') {
items = items.toReversed();
}
const result = {
totalCount: cacheKeys.value.length,
items: items.slice(
(page.currentPage - 1) * page.pageSize,
page.currentPage * page.pageSize,
),
};
return new Promise((resolve) => {
resolve(result);
});
},
},
response: {
total: 'totalCount',
list: 'items',
},
},
toolbarConfig: {
custom: true,
export: true,
refresh: false,
zoom: true,
},
};
const gridEvents: VxeGridListeners<CacheVto> = {
checkboxAll: (params) => {
selectKeys.value = params.records.map((x) => x.key);
},
checkboxChange: (params) => {
selectKeys.value = params.records.map((x) => x.key);
},
sortChange: () => {
gridApi.query();
},
};
const [Grid, gridApi] = useVbenVxeGrid({
formOptions,
gridEvents,
gridOptions,
});
const [CacheRefreshModal, refreshModalApi] = useVbenModal({
connectedComponent: defineAsyncComponent(
() => import('./CacheRefreshModal.vue'),
),
});
const [CacheEditModal, editModalApi] = useVbenModal({
connectedComponent: defineAsyncComponent(
() => import('./CacheEditModal.vue'),
),
});
async function onGet(input?: Record<string, string>) {
try {
gridApi.setLoading(true);
const result = await getKeysApi(input);
cacheKeys.value = result.keys.map((key) => {
return {
key,
};
});
setTimeout(() => gridApi.reload(), 100);
} finally {
gridApi.setLoading(false);
}
}
async function onReset() {
await gridApi.formApi.resetForm();
const input = await gridApi.formApi.getValues();
await onGet(input);
}
function onUpdate(row: CacheVto) {
editModalApi.setData(row);
editModalApi.open();
}
function onRefresh(row: CacheVto) {
refreshModalApi.setData(row);
refreshModalApi.open();
}
function onBulkDelete() {
confirm({
centered: true,
content: $t('CachingManagement.MultipleCacheWillBeDeletedMessage'),
beforeClose: async ({ isConfirm }) => {
if (isConfirm) {
try {
await bulkRemoveApi({ keys: selectKeys.value });
message.success($t('AbpUi.DeletedSuccessfully'));
onGet();
return true;
} catch {
return false;
}
}
},
icon: 'warning',
title: $t('AbpUi.AreYouSure'),
});
}
function onDelete(row: CacheVto) {
confirm({
centered: true,
content: $t('CachingManagement.MultipleCacheWillBeDeletedMessage'),
beforeClose: async ({ isConfirm }) => {
if (isConfirm) {
try {
await removeApi({ key: row.key });
message.success($t('AbpUi.DeletedSuccessfully'));
onGet();
return true;
} catch {
return false;
}
}
},
icon: 'warning',
title: $t('AbpUi.AreYouSure'),
});
}
onMounted(onGet);
</script>
<template>
<Grid :table-title="$t('CachingManagement.Caches')">
<template #toolbar-tools>
<Button
v-if="isBulkDeleteEnabled"
:icon="h(DeleteOutlined)"
type="primary"
danger
ghost
@click="onBulkDelete"
>
{{ $t('AbpUi.Delete') }}
</Button>
</template>
<template #action="{ row }">
<Button
:icon="h(EditOutlined)"
type="link"
v-access:code="[CachingManagementPermissions.ManageValue]"
@click="onUpdate(row)"
>
{{ $t('AbpUi.Edit') }}
</Button>
<Button
:icon="h(DeleteOutlined)"
danger
type="link"
v-access:code="[CachingManagementPermissions.Delete]"
@click="onDelete(row)"
>
{{ $t('AbpUi.Delete') }}
</Button>
<Button
:icon="h(ReloadOutlined)"
type="link"
v-access:code="[CachingManagementPermissions.Refresh]"
@click="onRefresh(row)"
>
{{ $t('AbpUi.Refresh') }}
</Button>
</template>
</Grid>
<CacheEditModal @change="() => onGet()" />
<CacheRefreshModal @change="() => onGet()" />
</template>
<style scoped></style>

121
apps/vben5/packages/@abp/cache-management/src/components/CacheRefreshModal.vue

@ -0,0 +1,121 @@
<script setup lang="ts">
import { defineEmits, defineOptions } from 'vue';
import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { toDate } from '@abp/core';
import { useMessage } from '@abp/ui';
import { Alert } from 'ant-design-vue';
import { useCacheManagementApi } from '../api/useCacheManagementApi';
defineOptions({
name: 'CacheRefreshModal',
});
const emit = defineEmits<{
(event: 'change', key: string): void;
}>();
const message = useMessage();
const { getKeyValueApi, refreshApi } = useCacheManagementApi();
const [Form, formApi] = useVbenForm({
commonConfig: {
// 所有表单项
componentProps: {
class: 'w-full',
},
},
handleSubmit: onSubmit,
schema: [
{
component: 'Textarea',
disabled: true,
fieldName: 'key',
label: $t('CachingManagement.DisplayName:Key'),
rules: 'required',
componentProps: {
autoSize: {
minRows: 3,
maxRows: 8,
},
showCount: true,
},
},
{
component: 'DatePicker',
fieldName: 'absoluteExpiration',
label: $t('CachingManagement.DisplayName:AbsoluteExpiration'),
rules: 'required',
componentProps: {
format: 'YYYY-MM-DD HH:mm:ss',
},
},
],
showDefaultActions: false,
});
const [Modal, modalApi] = useVbenModal({
class: 'w-1/3',
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onConfirm: async () => {
await formApi.validateAndSubmitForm();
},
onOpenChange: async (isOpen: boolean) => {
if (isOpen) {
try {
modalApi.setState({ loading: true });
const { key } = modalApi.getData();
await onGet(key);
} finally {
modalApi.setState({ loading: false });
}
}
},
title: $t('CachingManagement.CacheInfo'),
});
async function onGet(key: string) {
const cacheValue = await getKeyValueApi({ key });
formApi.setValues({
key,
absoluteExpiration: toDate(cacheValue.expiration),
});
}
async function onSubmit(input: Record<string, any>) {
modalApi.lock();
try {
await refreshApi({
key: input.key,
absoluteExpiration: input.absoluteExpiration,
});
message.success($t('AbpUi.SavedSuccessfully'));
emit('change', input.key);
modalApi.close();
} finally {
modalApi.unlock();
}
}
</script>
<template>
<Modal>
<div class="flex flex-col gap-4">
<Alert
closable
show-icon
type="warning"
:message="$t('CachingManagement.EditCacheValueAlertMessage')"
/>
<Form />
</div>
</Modal>
</template>
<style scoped></style>

1
apps/vben5/packages/@abp/cache-management/src/components/index.ts

@ -0,0 +1 @@
export { default as CacheKeyTable } from './CacheKeyTable.vue';

8
apps/vben5/packages/@abp/cache-management/src/constants/permissions.ts

@ -0,0 +1,8 @@
const CachePrefix = 'AbpCachingManagement.Cache';
export const CachingManagementPermissions = {
Refresh: `${CachePrefix}.Refresh`,
Default: CachePrefix,
Delete: `${CachePrefix}.Delete`,
ManageValue: `${CachePrefix}.ManageValue`,
};

3
apps/vben5/packages/@abp/cache-management/src/index.ts

@ -0,0 +1,3 @@
export * from './api';
export * from './components';
export * from './types';

48
apps/vben5/packages/@abp/cache-management/src/types/index.ts

@ -0,0 +1,48 @@
interface GetCacheKeysInput {
filter?: string;
marker?: string;
prefix?: string;
}
interface CacheKeyInput {
key: string;
}
interface CacheSetInput {
absoluteExpiration?: Date;
key: string;
slidingExpiration?: Date;
value?: string;
}
interface CacheRefreshInput {
absoluteExpiration?: Date;
key: string;
slidingExpiration?: Date;
}
interface CacheKeysDto {
keys: string[];
nextMarker: string;
}
interface CacheValueDto {
expiration?: Date;
size: number;
type: string;
values: Record<string, any>;
}
interface CacheRemoveKeysInput {
keys: string[];
}
export type {
CacheKeyInput,
CacheKeysDto,
CacheRefreshInput,
CacheRemoveKeysInput,
CacheSetInput,
CacheValueDto,
GetCacheKeysInput,
};

6
apps/vben5/packages/@abp/cache-management/tsconfig.json

@ -0,0 +1,6 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "@vben/tsconfig/web.json",
"include": ["src"],
"exclude": ["node_modules"]
}

10
apps/vben5/packages/@abp/core/src/utils/date.ts

@ -49,6 +49,16 @@ export function formatToDate(
}
return formatDate(date, format);
}
/**
* @zh_CN 转换为日期
* @param date 日期/字符串
* @returns 日期
*/
export function toDate(date: dayjs.ConfigType): dayjs.Dayjs {
return dayjs(date);
}
/**
* @zh_CN 获取指定日期
* @param days 天数

18
apps/vben5/packages/@abp/features/src/api/useFeatureDefinitionsApi.ts

@ -1,4 +1,4 @@
import type { ListResultDto } from '@abp/core';
import type { ListResultDto, NameValue } from '@abp/core';
import type {
FeatureDefinitionCreateDto,
@ -89,11 +89,27 @@ export function useFeatureDefinitionsApi() {
);
}
/**
* 获取可用功能提供者列表
* @returns {Promise<ListResultDto<NameValue<string>>>} 功能提供者列表
*/
function getAssignableProvidersApi(): Promise<
ListResultDto<NameValue<string>>
> {
return request<ListResultDto<NameValue<string>>>(
'/api/feature-management/definitions/assignable-providers',
{
method: 'GET',
},
);
}
return {
cancel,
createApi,
deleteApi,
getApi,
getAssignableProvidersApi,
getListApi,
updateApi,
};

32
apps/vben5/packages/@abp/features/src/components/definitions/features/FeatureDefinitionModal.vue

@ -1,4 +1,5 @@
<script setup lang="ts">
import type { NameValue } from '@abp/core';
import type {
PropertyInfo,
SelectionStringValueItem,
@ -65,18 +66,17 @@ interface DefinitionTreeVo {
type TabKeys = 'basic' | 'props';
const defaultModel = {
const defaultModel: FeatureDefinitionDto = {
allowedProviders: [],
displayName: '',
extraProperties: {},
groupName: '',
isAvailableToHost: true,
isEnabled: true,
isStatic: false,
isVisibleToClients: false,
name: '',
valueType: '',
} as FeatureDefinitionDto;
};
const isEditModel = ref(false);
const validatorNameRef = ref<string>('NULL');
@ -87,6 +87,7 @@ const valueTypeInput = useTemplateRef<StringValueTypeInstance>('valueType');
const formModel = ref<FeatureDefinitionDto>({ ...defaultModel });
const availableGroups = ref<FeatureGroupDefinitionDto[]>([]);
const availableDefinitions = ref<DefinitionTreeVo[]>([]);
const availableProviders = ref<NameValue<string>[]>([]);
const selectionDataSource = ref<{ label: string; value: string }[]>([]);
const { Lr } = useLocalization();
@ -97,6 +98,7 @@ const {
createApi,
getApi,
getListApi: getDefinitionsApi,
getAssignableProvidersApi,
updateApi,
} = useFeatureDefinitionsApi();
const formRules = reactive({
@ -189,9 +191,11 @@ const [Modal, modalApi] = useVbenModal({
});
try {
modalApi.setState({ loading: true });
const { groupName, name } = modalApi.getData<FeatureDefinitionDto>();
const { groupName, name, parentName } =
modalApi.getData<FeatureDefinitionDto>();
formModel.value.parentName = parentName;
name && (await onGet(name));
await onInitGroups(groupName);
await Promise.all([onInitGroups(groupName), onInitProviders()]);
} finally {
modalApi.setState({ loading: false });
}
@ -199,6 +203,10 @@ const [Modal, modalApi] = useVbenModal({
},
title: $t('AbpFeatureManagement.FeatureDefinitions:AddNew'),
});
async function onInitProviders() {
const { items } = await getAssignableProvidersApi();
availableProviders.value = items;
}
async function onInitGroups(name?: string) {
const { items } = await getGroupsApi({ filter: name });
availableGroups.value = items.map((group) => {
@ -411,6 +419,20 @@ function onSelectionChange(items: SelectionStringValueItem[]) {
{{ $t('AbpFeatureManagement.DisplayName:DefaultValue') }}
</Checkbox>
</FormItem>
<FormItem
name="providers"
:label="$t('AbpFeatureManagement.DisplayName:AllowedProviders')"
:extra="$t('AbpFeatureManagement.Description:AllowedProviders')"
>
<Select
v-model:value="formModel.allowedProviders"
:allow-clear="true"
:disabled="formModel.isStatic"
:field-names="{ label: 'name', value: 'value' }"
:options="availableProviders"
mode="multiple"
/>
</FormItem>
<FormItem
name="isVisibleToClients"
:label="$t('AbpFeatureManagement.DisplayName:IsVisibleToClients')"

56
apps/vben5/packages/@abp/features/src/components/definitions/features/FeatureDefinitionTable.vue

@ -1,5 +1,6 @@
<script setup lang="ts">
import type { VxeGridListeners, VxeGridProps } from '@abp/ui';
import type { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import type { VbenFormProps } from '@vben/common-ui';
@ -7,7 +8,9 @@ import type { FeatureDefinitionDto } from '../../../types/definitions';
import { defineAsyncComponent, h, onMounted, ref } from 'vue';
import { useAccess } from '@vben/access';
import { useVbenModal } from '@vben/common-ui';
import { createIconifyIcon } from '@vben/icons';
import { $t } from '@vben/locales';
import {
@ -22,18 +25,21 @@ import {
CloseOutlined,
DeleteOutlined,
EditOutlined,
EllipsisOutlined,
PlusOutlined,
} from '@ant-design/icons-vue';
import { Button, message, Modal } from 'ant-design-vue';
import { Button, Dropdown, Menu, message, Modal } from 'ant-design-vue';
import { VxeGrid } from 'vxe-table';
import { useFeatureDefinitionsApi } from '../../../api/useFeatureDefinitionsApi';
import { useFeatureGroupDefinitionsApi } from '../../../api/useFeatureGroupDefinitionsApi';
import { GroupDefinitionsPermissions } from '../../../constants/permissions';
import { FeatureDefinitionsPermissions } from '../../../constants/permissions';
defineOptions({
name: 'FeatureDefinitionTable',
});
const FeaturesOutlined = createIconifyIcon('pajamas:feature-flag');
const MenuItem = Menu.Item;
interface FeatureVo {
children: FeatureVo[];
@ -55,6 +61,7 @@ interface FeatureGroupVo {
const featureGroups = ref<FeatureGroupVo[]>([]);
const { Lr } = useLocalization();
const { hasAccessByCodes } = useAccess();
const { deserialize } = useLocalizationSerializer();
const { getListApi: getGroupsApi } = useFeatureGroupDefinitionsApi();
const { deleteApi, getListApi: getFeaturesApi } = useFeatureDefinitionsApi();
@ -197,7 +204,7 @@ const subGridColumns: VxeGridProps<FeatureGroupVo>['columns'] = [
fixed: 'right',
slots: { default: 'action' },
title: $t('AbpUi.Actions'),
width: 180,
width: 220,
},
];
@ -281,6 +288,19 @@ function onDelete(row: FeatureDefinitionDto) {
});
}
function onMenuClick(row: FeatureDefinitionDto, info: MenuInfo) {
switch (info.key) {
case 'features': {
modalApi.setData({
groupName: row.groupName,
parentName: row.name,
});
modalApi.open();
break;
}
}
}
onMounted(onGet);
</script>
@ -290,7 +310,7 @@ onMounted(onGet);
<Button
:icon="h(PlusOutlined)"
type="primary"
v-access:code="[GroupDefinitionsPermissions.Create]"
v-access:code="[FeatureDefinitionsPermissions.Create]"
@click="onCreate"
>
{{ $t('AbpFeatureManagement.FeatureDefinitions:AddNew') }}
@ -324,28 +344,44 @@ onMounted(onGet);
<CloseOutlined v-else class="text-red-500" />
</div>
</template>
<template #action="{ row: permission }">
<template #action="{ row: feature }">
<div class="flex flex-row">
<Button
:icon="h(EditOutlined)"
block
type="link"
v-access:code="[GroupDefinitionsPermissions.Update]"
@click="onUpdate(permission)"
v-access:code="[FeatureDefinitionsPermissions.Update]"
@click="onUpdate(feature)"
>
{{ $t('AbpUi.Edit') }}
</Button>
<Button
v-if="!permission.isStatic"
v-if="!feature.isStatic"
:icon="h(DeleteOutlined)"
block
danger
type="link"
v-access:code="[GroupDefinitionsPermissions.Delete]"
@click="onDelete(permission)"
v-access:code="[FeatureDefinitionsPermissions.Delete]"
@click="onDelete(feature)"
>
{{ $t('AbpUi.Delete') }}
</Button>
<Dropdown v-if="!feature.isStatic">
<template #overlay>
<Menu @click="(info) => onMenuClick(feature, info)">
<MenuItem
v-if="
hasAccessByCodes([FeatureDefinitionsPermissions.Create])
"
key="features"
:icon="h(FeaturesOutlined)"
>
{{ $t('AbpFeatureManagement.FeatureDefinitions:AddNew') }}
</MenuItem>
</Menu>
</template>
<Button :icon="h(EllipsisOutlined)" type="link" />
</Dropdown>
</div>
</template>
</VxeGrid>

32
apps/vben5/packages/@abp/features/src/components/features/FeatureGroup.vue

@ -0,0 +1,32 @@
<!-- components/FeatureGroup.vue -->
<script setup lang="ts">
import type { FeatureDto, FeatureGroupDto } from '../../types/features';
import type { TreeNode } from './tree';
import { Card } from 'ant-design-vue';
import FeatureTreeNode from './FeatureTreeNode.vue';
defineProps<{
baseIndentSize?: number;
group: FeatureGroupDto & { _treeRoots?: TreeNode[] };
groupIndex: number;
}>();
const emit = defineEmits<{
(event: 'change', feature: FeatureDto, groupIndex: number): void;
}>();
</script>
<template>
<Card :bordered="false" :title="group.displayName">
<div v-for="root in group._treeRoots" :key="root.feature.name">
<FeatureTreeNode
:node="root"
:group-index="groupIndex"
:base-indent-size="baseIndentSize"
@change="(feature, idx) => emit('change', feature, idx)"
/>
</div>
</Card>
</template>

133
apps/vben5/packages/@abp/features/src/components/features/FeatureInput.vue

@ -0,0 +1,133 @@
<script setup lang="ts">
import type { Validator } from '@abp/core';
import type { FeatureDto } from '../../types/features';
import { computed } from 'vue';
import { useValidation } from '@abp/core';
import { Checkbox, Form, Input, InputNumber, Select } from 'ant-design-vue';
const props = defineProps<{
feature: FeatureDto;
featureIndex: number;
groupIndex: number;
}>();
const emit = defineEmits<{
(event: 'change', feature: FeatureDto, groupIndex: number): void;
}>();
const FormItem = Form.Item;
const {
fieldMustBeetWeen,
fieldMustBeStringWithMinimumLengthAndMaximumLength,
fieldRequired,
} = useValidation();
function createRules(field: string, validator: Validator) {
const featureRules: any[] = [];
if (validator?.properties) {
switch (validator.name) {
case 'NUMERIC': {
featureRules.push(
...fieldMustBeetWeen({
end: Number(validator.properties.MaxValue),
name: field,
start: Number(validator.properties.MinValue),
trigger: 'change',
}),
);
break;
}
case 'STRING': {
if (validator.properties.AllowNull?.toLowerCase() === 'true') {
featureRules.push(
...fieldRequired({
name: field,
trigger: 'blur',
}),
);
}
featureRules.push(
...fieldMustBeStringWithMinimumLengthAndMaximumLength({
maximum: Number(validator.properties.MaxLength),
minimum: Number(validator.properties.MinLength),
name: field,
trigger: 'blur',
}),
);
break;
}
}
}
return featureRules;
}
function handleChange() {
emit('change', props.feature, props.groupIndex);
}
const isCheckbox = computed(
() =>
props.feature.valueType?.name === 'ToggleStringValueType' &&
props.feature.valueType?.validator?.name === 'BOOLEAN',
);
const isFreeText = computed(
() => props.feature.valueType?.name === 'FreeTextStringValueType',
);
const isNumeric = computed(
() => props.feature.valueType?.validator?.name === 'NUMERIC',
);
const isSelection = computed(
() => props.feature.valueType?.name === 'SelectionStringValueType',
);
</script>
<template>
<FormItem
v-if="feature.valueType !== null"
:name="['groups', groupIndex, 'features', featureIndex, 'value']"
:label="feature.displayName"
:extra="feature.description"
:rules="createRules(feature.displayName, feature.valueType.validator)"
>
<!-- 复选框类型 -->
<Checkbox
v-if="isCheckbox"
v-model:checked="feature.value"
@change="handleChange"
>
{{ feature.displayName }}
</Checkbox>
<!-- 文本/数字类型 -->
<div v-else-if="isFreeText">
<InputNumber
v-if="isNumeric"
style="width: 100%"
v-model:value="feature.value"
@change="handleChange"
/>
<Input
v-else
v-model:value="feature.value"
autocomplete="off"
@change="handleChange"
/>
</div>
<!-- 选择类型 -->
<Select
v-else-if="isSelection"
v-model:value="feature.value"
:options="feature.valueType.itemSource?.items"
:field-names="{ label: 'displayName', value: 'value' }"
@change="handleChange"
/>
</FormItem>
</template>

47
apps/vben5/packages/@abp/features/src/components/features/FeatureTreeNode.vue

@ -0,0 +1,47 @@
<!-- components/FeatureTreeNode.vue -->
<script setup lang="ts">
import type { FeatureDto } from '../../types/features';
import type { TreeNode } from './tree';
import { computed } from 'vue';
import FeatureInput from './FeatureInput.vue';
import { getIndentStyle } from './useFeatureTree';
const props = defineProps<{
baseIndentSize?: number;
groupIndex: number;
node: TreeNode;
}>();
const emit = defineEmits<{
(event: 'change', feature: FeatureDto, groupIndex: number): void;
}>();
const indentSize = computed(() => props.baseIndentSize || 8);
const indentStyle = computed(() =>
getIndentStyle(props.node.level, indentSize.value),
);
</script>
<template>
<div v-if="node.visible">
<div :style="{ marginLeft: indentStyle }">
<FeatureInput
:feature="node.feature"
:group-index="groupIndex"
:feature-index="0"
@change="(feature, idx) => emit('change', feature, idx)"
/>
</div>
<template v-for="child in node.children" :key="child.feature.name">
<FeatureTreeNode
:node="child"
:group-index="groupIndex"
:base-indent-size="baseIndentSize"
@change="(feature, idx) => emit('change', feature, idx)"
/>
</template>
</div>
</template>

188
apps/vben5/packages/@abp/features/src/components/features/FeaturesModal2.vue

@ -0,0 +1,188 @@
<script setup lang="ts">
import type { FormInstance } from 'ant-design-vue/es/form/Form';
import type { FeatureGroupDto, UpdateFeaturesDto } from '../../types/features';
import { computed, ref, toValue, useTemplateRef } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { Form, message, Tabs } from 'ant-design-vue';
import { useFeaturesApi } from '../../api/useFeaturesApi';
import FeatureGroup from './FeatureGroup.vue';
import {
buildFeatureTree,
onFeatureValueChange,
processAllFeatures,
updateVisibility,
} from './useFeatureTree';
const TabPane = Tabs.TabPane;
interface ModalState {
displayName?: string;
providerKey?: string;
providerName: string;
readonly?: boolean;
}
interface FormModel {
groups: FeatureGroupDto[];
}
const activeTabKey = ref('');
const modelState = ref<ModalState>();
const formModel = ref<FormModel>({ groups: [] });
const form = useTemplateRef<FormInstance>('form');
const getModalTitle = computed(() => {
if (modelState.value?.displayName) {
return `${$t('AbpFeatureManagement.Features')} - ${modelState.value.displayName}`;
}
return $t('AbpFeatureManagement.Features');
});
const { getApi, updateApi } = useFeaturesApi();
const [Modal, modalApi] = useVbenModal({
centered: true,
class: 'w-1/2',
async onConfirm() {
await form.value?.validate();
await onSubmit();
},
async onOpenChange(isOpen) {
if (isOpen) {
formModel.value = { groups: [] };
await onGet();
if (formModel.value?.groups.length > 0) {
activeTabKey.value = formModel.value.groups[0]?.name!;
}
}
},
});
function mapFeatures(groups: FeatureGroupDto[]): FeatureGroupDto[] {
groups.forEach((group) => {
// 构建树形结构
const treeRoots = buildFeatureTree(group.features);
// 存储树形结构到 group 中供模板使用
(group as any)._treeRoots = treeRoots;
(group as any)._allFeatures = [...group.features];
// 初始化可见性
treeRoots.forEach((root) => updateVisibility(root, true));
// 处理特性值类型转换
processAllFeatures(treeRoots);
});
return groups;
}
function getFeatureInput(groups: FeatureGroupDto[]): UpdateFeaturesDto {
const input: UpdateFeaturesDto = {
features: [],
};
groups.forEach((g) => {
const features = (g as any)._allFeatures || g.features;
features.forEach((f: any) => {
if (f.value !== null && f.value !== undefined && f.value !== '') {
input.features.push({
name: f.name,
value: String(f.value),
});
}
});
});
return input;
}
async function onGet() {
try {
modalApi.setState({ loading: true });
const state = modalApi.getData<ModalState>();
const { groups } = await getApi({
providerKey: state.providerKey,
providerName: state.providerName,
});
formModel.value = {
groups: mapFeatures(groups),
};
modelState.value = state;
} finally {
modalApi.setState({ loading: false });
}
}
function handleFeatureChange(feature: any, groupIndex: number) {
const group = formModel.value.groups[groupIndex];
const treeRoots = (group as any)._treeRoots;
if (treeRoots) {
onFeatureValueChange(feature, treeRoots);
// 强制更新视图
formModel.value = { ...formModel.value };
}
}
async function onSubmit() {
try {
modalApi.setState({ submitting: true });
const model = toValue(formModel);
const state = modalApi.getData<ModalState>();
const input = getFeatureInput(model.groups);
await updateApi(
{
providerKey: state.providerKey,
providerName: state.providerName,
},
input,
);
message.success($t('AbpUi.SavedSuccessfully'));
await onGet();
} finally {
modalApi.setState({ submitting: false });
}
}
</script>
<template>
<Modal :title="getModalTitle">
<Form :model="formModel" ref="form">
<Tabs tab-position="left" type="card" v-model:active-key="activeTabKey">
<TabPane
v-for="(group, gi) in formModel.groups"
:key="group.name"
:tab="group.displayName"
>
<FeatureGroup
:group="group"
:group-index="gi"
:base-indent-size="8"
@change="handleFeatureChange"
/>
</TabPane>
</Tabs>
</Form>
</Modal>
</template>
<style lang="scss" scoped>
:deep(.ant-tabs) {
height: 34rem;
.ant-tabs-nav {
width: 14rem;
}
.ant-tabs-content-holder {
overflow: hidden auto !important;
}
}
:deep(.ant-form-item) {
margin-bottom: 16px;
}
</style>

9
apps/vben5/packages/@abp/features/src/components/features/tree.ts

@ -0,0 +1,9 @@
import type { FeatureDto } from '../../types/features';
export interface TreeNode {
children: TreeNode[];
feature: FeatureDto;
level: number;
parent?: TreeNode;
visible: boolean;
}

167
apps/vben5/packages/@abp/features/src/components/features/useFeatureTree.ts

@ -0,0 +1,167 @@
import type { FeatureDto } from '../../types/features';
import type { TreeNode } from './tree';
import { $t } from '@vben/locales';
/**
* 将扁平的特性列表转换为树形结构
*/
export function buildFeatureTree(features: FeatureDto[]): TreeNode[] {
const nodeMap = new Map<string, TreeNode>();
const roots: TreeNode[] = [];
// 创建所有节点
features.forEach((feature) => {
const node: TreeNode = {
feature,
children: [],
level: 0,
visible: true,
};
nodeMap.set(feature.name, node);
});
// 建立父子关系
features.forEach((feature) => {
const node = nodeMap.get(feature.name);
if (node && feature.parentName && nodeMap.has(feature.parentName)) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const parent = nodeMap.get(feature.parentName)!;
parent.children.push(node);
node.parent = parent;
node.level = parent.level + 1;
} else if (node && !feature.parentName) {
roots.push(node);
}
});
// 对子节点进行排序
const sortChildren = (nodes: TreeNode[]) => {
nodes.forEach((node) => {
if (node.children.length > 0) {
node.children.sort((a, b) =>
a.feature.displayName.localeCompare(b.feature.displayName),
);
sortChildren(node.children);
}
});
};
sortChildren(roots);
return roots;
}
/**
* 更新节点的可见性(基于父级状态)
*/
export function updateVisibility(
node: TreeNode,
parentVisible: boolean = true,
): void {
node.visible = parentVisible;
if (isCheckboxFeature(node.feature)) {
const isChecked = Boolean(node.feature.value);
node.children.forEach((child) => {
updateVisibility(child, parentVisible && isChecked);
});
} else {
node.children.forEach((child) => {
updateVisibility(child, parentVisible);
});
}
}
/**
* 检查是否为复选框类型的特性
*/
export function isCheckboxFeature(feature: FeatureDto): boolean {
return (
feature.valueType?.name === 'ToggleStringValueType' &&
feature.valueType?.validator?.name === 'BOOLEAN'
);
}
/**
* 当特性值改变时,更新其子节点的可见性
*/
export function onFeatureValueChange(
feature: FeatureDto,
treeNodes: TreeNode[],
): void {
const findNode = (nodes: TreeNode[]): null | TreeNode => {
for (const node of nodes) {
if (node.feature.name === feature.name) {
return node;
}
const found = findNode(node.children);
if (found) return found;
}
return null;
};
const node = findNode(treeNodes);
if (node && isCheckboxFeature(node.feature)) {
updateVisibility(node, true);
}
}
/**
* 处理特性值类型转换
*/
export function processFeatureValue(feature: FeatureDto): void {
if (feature.valueType?.name === 'SelectionStringValueType') {
const valueType = feature.valueType as any;
if (valueType.itemSource?.items) {
valueType.itemSource.items.forEach((valueItem: any) => {
if (valueItem.displayText?.resourceName === 'Fixed') {
valueItem.displayName = valueItem.displayText.name;
} else if (
valueItem.displayText?.resourceName &&
valueItem.displayText?.name
) {
valueItem.displayName = $t(
`${valueItem.displayText.resourceName}.${valueItem.displayText.name}`,
);
}
});
}
} else {
switch (feature.valueType?.validator?.name) {
case 'BOOLEAN': {
feature.value = String(feature.value).toLocaleLowerCase() === 'true';
break;
}
case 'NUMERIC': {
if (
feature.value !== null &&
feature.value !== undefined &&
feature.value !== ''
) {
feature.value = Number(feature.value);
}
break;
}
}
}
}
/**
* 递归处理所有特性值
*/
export function processAllFeatures(treeNodes: TreeNode[]): void {
const traverse = (nodes: TreeNode[]) => {
nodes.forEach((node) => {
processFeatureValue(node.feature);
traverse(node.children);
});
};
traverse(treeNodes);
}
/**
* 获取缩进样式
*/
export function getIndentStyle(level: number, indentSize: number = 8): string {
return `${level * indentSize}px`;
}

6
apps/vben5/packages/@abp/features/src/types/definitions.ts

@ -31,10 +31,8 @@ interface FeatureDefinitionCreateOrUpdateDto extends IHasExtraProperties {
}
interface FeatureDefinitionUpdateDto
extends FeatureDefinitionCreateOrUpdateDto,
IHasConcurrencyStamp {}
interface FeatureDefinitionCreateDto
extends FeatureDefinitionCreateOrUpdateDto {
extends FeatureDefinitionCreateOrUpdateDto, IHasConcurrencyStamp {}
interface FeatureDefinitionCreateDto extends FeatureDefinitionCreateOrUpdateDto {
groupName: string;
name: string;
}

18
apps/vben5/packages/@abp/permissions/src/api/usePermissionDefinitionsApi.ts

@ -1,4 +1,4 @@
import type { ListResultDto } from '@abp/core';
import type { ListResultDto, NameValue } from '@abp/core';
import type {
PermissionDefinitionCreateDto,
@ -89,11 +89,27 @@ export function usePermissionDefinitionsApi() {
);
}
/**
* 获取可用权限提供者列表
* @returns {Promise<ListResultDto<NameValue<string>>>} 权限提供者列表
*/
function getAssignableProvidersApi(): Promise<
ListResultDto<NameValue<string>>
> {
return request<ListResultDto<NameValue<string>>>(
'/api/permission-management/definitions/assignable-providers',
{
method: 'GET',
},
);
}
return {
cancel,
createApi,
deleteApi,
getApi,
getAssignableProvidersApi,
getListApi,
updateApi,
};

23
apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionModal.vue

@ -1,5 +1,9 @@
<script setup lang="ts">
import type { IHasSimpleStateCheckers, ISimpleStateChecker } from '@abp/core';
import type {
IHasSimpleStateCheckers,
ISimpleStateChecker,
NameValue,
} from '@abp/core';
import type { PropertyInfo } from '@abp/ui';
import type { FormInstance } from 'ant-design-vue';
@ -41,8 +45,7 @@ const emits = defineEmits<{
const FormItem = Form.Item;
const TabPane = Tabs.TabPane;
interface PermissionStateChecker
extends IHasSimpleStateCheckers<PermissionStateChecker> {}
interface PermissionStateChecker extends IHasSimpleStateCheckers<PermissionStateChecker> {}
class PermissionState implements PermissionStateChecker {
stateCheckers: ISimpleStateChecker<PermissionStateChecker>[] = [];
@ -66,9 +69,10 @@ const isEditModel = ref(false);
const activeTab = ref<TabKeys>('basic');
const form = useTemplateRef<FormInstance>('form');
const formModel = ref<PermissionDefinitionDto>({ ...defaultModel });
const { multiTenancySideOptions, providerOptions } = useTypesMap();
const { multiTenancySideOptions } = useTypesMap();
const availableGroups = ref<PermissionGroupDefinitionDto[]>([]);
const availablePermissions = ref<PermissionTreeVo[]>([]);
const availableProviders = ref<NameValue<string>[]>([]);
const { Lr } = useLocalization();
const { deserialize } = useLocalizationSerializer();
@ -77,6 +81,7 @@ const {
createApi,
getApi,
getListApi: getPermissionsApi,
getAssignableProvidersApi,
updateApi,
} = usePermissionDefinitionsApi();
const [Modal, modalApi] = useVbenModal({
@ -118,7 +123,7 @@ const [Modal, modalApi] = useVbenModal({
modalApi.setState({ loading: true });
const { groupName, name } = modalApi.getData<PermissionDefinitionDto>();
name && (await onGet(name));
await onInitGroups(groupName);
await Promise.all([onInitGroups(groupName), onInitProviders()]);
} finally {
modalApi.setState({ loading: false });
}
@ -126,6 +131,10 @@ const [Modal, modalApi] = useVbenModal({
},
title: $t('AbpPermissionManagement.PermissionDefinitions:AddNew'),
});
async function onInitProviders() {
const { items } = await getAssignableProvidersApi();
availableProviders.value = items;
}
async function onInitGroups(name?: string) {
const { items } = await getGroupsApi({ filter: name });
availableGroups.value = items.map((group) => {
@ -268,13 +277,15 @@ function onPropDelete(prop: PropertyInfo) {
</FormItem>
<FormItem
:label="$t('AbpPermissionManagement.DisplayName:Providers')"
:extra="$t('AbpPermissionManagement.Description:Providers')"
name="providers"
>
<Select
v-model:value="formModel.providers"
:allow-clear="true"
:disabled="formModel.isStatic"
:options="providerOptions"
:field-names="{ label: 'name', value: 'value' }"
:options="availableProviders"
mode="multiple"
/>
</FormItem>

13
apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue

@ -3,9 +3,6 @@ import type { VxeGridListeners, VxeGridProps } from '@abp/ui';
import type { VbenFormProps } from '@vben/common-ui';
import type { PermissionDefinitionDto } from '../../../types/definitions';
import type { PermissionGroupDefinitionDto } from '../../../types/groups';
import { defineAsyncComponent, h, onMounted, ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
@ -82,7 +79,7 @@ const formOptions: VbenFormProps = {
submitOnEnter: true,
};
const gridOptions: VxeGridProps<PermissionGroupDefinitionDto> = {
const gridOptions: VxeGridProps<PermissionGroupVo> = {
columns: [
{
align: 'center',
@ -150,7 +147,7 @@ const gridOptions: VxeGridProps<PermissionGroupDefinitionDto> = {
zoom: true,
},
};
const subGridColumns: VxeGridProps<PermissionDefinitionDto>['columns'] = [
const subGridColumns: VxeGridProps<PermissionVo>['columns'] = [
{
align: 'center',
type: 'seq',
@ -200,7 +197,7 @@ const subGridColumns: VxeGridProps<PermissionDefinitionDto>['columns'] = [
},
];
const gridEvents: VxeGridListeners<PermissionGroupDefinitionDto> = {
const gridEvents: VxeGridListeners<PermissionGroupVo> = {
sortChange: () => {
gridApi.query();
},
@ -263,12 +260,12 @@ function onCreate() {
modalApi.open();
}
function onUpdate(row: PermissionDefinitionDto) {
function onUpdate(row: PermissionGroupVo) {
modalApi.setData(row);
modalApi.open();
}
function onDelete(row: PermissionDefinitionDto) {
function onDelete(row: PermissionGroupVo) {
Modal.confirm({
centered: true,
content: `${$t('AbpUi.ItemWillBeDeletedMessageWithFormat', [row.name])}`,

8
apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/types.ts

@ -37,17 +37,9 @@ export function useTypesMap() {
U: $t('AbpPermissionManagement.Providers:User'),
};
const providerOptions = [
{ label: providersMap.R, value: 'R' },
{ label: providersMap.U, value: 'U' },
{ label: providersMap.O, value: 'O' },
{ label: providersMap.C, value: 'C' },
];
return {
multiTenancySideOptions,
multiTenancySidesMap,
providerOptions,
providersMap,
};
}

9
apps/vben5/packages/@abp/request/src/hooks/useErrorFormat.ts

@ -17,6 +17,12 @@ export function useErrorFormat(response: AxiosResponse) {
/** 如果请求错误,抛出异常 */
function throwIfError(): void {
if (!hasError()) return;
throw Object.assign({}, response, { message: getErrorMessage(), response });
}
/** 获取错误消息 */
function getErrorMessage(): string | undefined {
if (!hasError()) return undefined;
const errorJson = data.error as RemoteServiceErrorInfo;
let errorMessage = errorJson.message;
if (errorJson.validationErrors) {
@ -24,11 +30,12 @@ export function useErrorFormat(response: AxiosResponse) {
.map((error) => error.message)
.join('\n');
}
throw Object.assign({}, response, { message: errorMessage, response });
return errorMessage;
}
return {
hasError,
getErrorMessage,
throwIfError,
};
}

29
apps/vben5/packages/@abp/request/src/hooks/useWrapperResult.ts

@ -3,9 +3,20 @@ import type { AxiosResponse } from 'axios';
import { useErrorFormat } from './useErrorFormat';
export function useWrapperResult(response: AxiosResponse) {
const { hasError, throwIfError: throwIfAbpError } = useErrorFormat(response);
const {
hasError: hasAbpError,
getErrorMessage: getAbpErrorMessage,
throwIfError: throwIfAbpError,
} = useErrorFormat(response);
const _defaultWrapperHeaderKey: string = '_abpwrapresult';
const { data, headers } = response;
/** 是否请求错误 */
function hasError(): boolean {
if (hasAbpError()) return true;
return Reflect.has(data, 'code') && data.code !== '0';
}
/** 是否已包装结果 */
function hasWrapResult(): boolean {
if (
@ -14,7 +25,7 @@ export function useWrapperResult(response: AxiosResponse) {
) {
return String(headers[_defaultWrapperHeaderKey]).includes('true');
}
return hasError();
return hasAbpError();
}
/** 获取包装结果 */
@ -26,8 +37,7 @@ export function useWrapperResult(response: AxiosResponse) {
/** 如果请求错误,抛出异常 */
function throwIfError(): void {
throwIfAbpError();
const hasSuccess = data && Reflect.has(data, 'code') && data.code === '0';
if (!hasSuccess) {
if (hasError()) {
const content = data.details || data.message;
throw Object.assign({}, response, {
response: {
@ -41,8 +51,19 @@ export function useWrapperResult(response: AxiosResponse) {
}
}
/** 获取错误消息 */
function getErrorMessage(): string | undefined {
if (!hasWrapResult()) return undefined;
const errorMessage = getAbpErrorMessage();
if (errorMessage) return errorMessage;
if (!hasError()) return undefined;
return data.message;
}
return {
getData,
getErrorMessage,
hasError,
hasWrapResult,
};
}

18
apps/vben5/packages/@abp/settings/src/api/useDefinitionsApi.ts

@ -1,4 +1,4 @@
import type { ListResultDto } from '@abp/core';
import type { ListResultDto, NameValue } from '@abp/core';
import type {
SettingDefinitionCreateDto,
@ -88,11 +88,27 @@ export function useDefinitionsApi() {
);
}
/**
* 获取可用设置提供者列表
* @returns {Promise<ListResultDto<NameValue<string>>>} 设置提供者列表
*/
function getAssignableProvidersApi(): Promise<
ListResultDto<NameValue<string>>
> {
return request<ListResultDto<NameValue<string>>>(
'/api/permission-management/definitions/assignable-providers',
{
method: 'GET',
},
);
}
return {
cancel,
createApi,
deleteApi,
getApi,
getAssignableProvidersApi,
getListApi,
updateApi,
};

29
apps/vben5/packages/@abp/settings/src/components/definitions/SettingDefinitionModal.vue

@ -1,17 +1,11 @@
<script setup lang="ts">
import type { NameValue } from '@abp/core';
import type { PropertyInfo } from '@abp/ui';
import type { FormInstance } from 'ant-design-vue';
import type { SettingDefinitionDto } from '../../types/definitions';
import {
defineEmits,
defineOptions,
reactive,
ref,
toValue,
useTemplateRef,
} from 'vue';
import { defineEmits, defineOptions, ref, toValue, useTemplateRef } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
@ -47,15 +41,10 @@ const isEditModel = ref(false);
const activeTab = ref<TabKeys>('basic');
const form = useTemplateRef<FormInstance>('form');
const formModel = ref<SettingDefinitionDto>({ ...defaultModel });
const providerOptions = reactive([
{ label: $t('AbpSettingManagement.Providers:Default'), value: 'D' },
{ label: $t('AbpSettingManagement.Providers:Configuration'), value: 'C' },
{ label: $t('AbpSettingManagement.Providers:Global'), value: 'G' },
{ label: $t('AbpSettingManagement.Providers:Tenant'), value: 'T' },
{ label: $t('AbpSettingManagement.Providers:User'), value: 'U' },
]);
const availableProviders = ref<NameValue<string>[]>([]);
const { createApi, getApi, updateApi } = useDefinitionsApi();
const { createApi, getApi, getAssignableProvidersApi, updateApi } =
useDefinitionsApi();
const [Modal, modalApi] = useVbenModal({
class: 'w-1/2',
@ -93,6 +82,7 @@ const [Modal, modalApi] = useVbenModal({
modalApi.setState({ loading: true });
const { name } = modalApi.getData<SettingDefinitionDto>();
name && (await onGet(name));
await onInitProviders();
} finally {
modalApi.setState({ loading: false });
}
@ -100,6 +90,10 @@ const [Modal, modalApi] = useVbenModal({
},
title: $t('AbpSettingManagement.Definition:AddNew'),
});
async function onInitProviders() {
const { items } = await getAssignableProvidersApi();
availableProviders.value = items;
}
async function onGet(name: string) {
isEditModel.value = true;
const dto = await getApi(name);
@ -180,7 +174,8 @@ function onPropDelete(prop: PropertyInfo) {
v-model:value="formModel.providers"
:allow-clear="true"
:disabled="formModel.isStatic"
:options="providerOptions"
:field-names="{ label: 'name', value: 'value' }"
:options="availableProviders"
mode="multiple"
/>
</FormItem>

2
apps/vben5/packages/effects/hooks/src/use-app-config.ts

@ -24,6 +24,7 @@ export function useAppConfig(
VITE_GLOB_AUTH_ONLY_OIDC,
VITE_GLOB_AUTH_ONLY_OIDC_HINT,
VITE_GLOB_AUTH_DISABLE_PKCE,
VITE_GLOB_AUTH_PROMPT,
VITE_GLOB_AUTH_DINGDING_CORP_ID,
VITE_GLOB_AUTH_DINGDING_CLIENT_ID,
VITE_GLOB_UI_FRAMEWORK,
@ -38,6 +39,7 @@ export function useAppConfig(
audience: VITE_GLOB_AUTH_AUDIENCE,
onlyOidc: VITE_GLOB_AUTH_ONLY_OIDC === 'true',
onlyOidcHint: VITE_GLOB_AUTH_ONLY_OIDC_HINT === 'true',
prompt: VITE_GLOB_AUTH_PROMPT,
disablePKCE: VITE_GLOB_AUTH_DISABLE_PKCE === 'true',
},
uiFramework: VITE_GLOB_UI_FRAMEWORK,

2
apps/vben5/packages/types/global.d.ts

@ -15,6 +15,7 @@ export interface VbenAdminProAppConfigRaw {
VITE_GLOB_AUTH_AUDIENCE?: string;
VITE_GLOB_AUTH_ONLY_OIDC?: string;
VITE_GLOB_AUTH_ONLY_OIDC_HINT?: string;
VITE_GLOB_AUTH_PROMPT?: string;
VITE_GLOB_AUTH_DISABLE_PKCE?: string;
VITE_GLOB_AUTH_DINGDING_CLIENT_ID: string;
VITE_GLOB_AUTH_DINGDING_CORP_ID: string;
@ -32,6 +33,7 @@ interface AuthConfig {
clientSecret: string;
onlyOidc?: boolean;
onlyOidcHint?: boolean;
prompt?: string;
disablePKCE?: boolean;
}

5
apps/vben5/pnpm-workspace.yaml

@ -83,6 +83,10 @@ catalog:
'@vite-pwa/vitepress': ^1.1.0
'@vitejs/plugin-vue': ^6.0.4
'@vitejs/plugin-vue-jsx': ^5.1.4
'@vue-office/docx': ^1.6.3
'@vue-office/excel': ^1.7.14
'@vue-office/pdf': ^2.0.10
'@vue-office/pptx': ^1.0.1
'@vue/shared': ^3.5.27
'@vue/test-utils': ^2.4.6
'@vueuse/core': ^14.1.0
@ -229,6 +233,7 @@ catalog:
vitepress-plugin-group-icons: ^1.7.1
vitest: ^3.2.4
vue: ^3.5.27
vue-demi: ^0.14.6
vue-eslint-parser: ^10.2.0
vue-i18n: ^11.2.8
vue-json-viewer: ^3.0.4

2629
aspnet-core/LINGYUN.MicroService.All.sln

File diff suppressed because it is too large

528
aspnet-core/LINGYUN.MicroService.All.slnx

@ -0,0 +1,528 @@
<Solution>
<Folder Name="/.changes/">
<File Path="../.changes/Migration 10.0.2 - 10.2.0.md" />
</Folder>
<Folder Name="/.github/" />
<Folder Name="/.github/workflows/">
<File Path="../.github/workflows/build.yml" />
<File Path="../.github/workflows/publish.yml" />
<File Path="../.github/workflows/release.yml" />
</Folder>
<Folder Name="/.Solution Items/">
<File Path="../common.props" />
<File Path="../common.secrets.props" />
<File Path="../configureawait.props" />
<File Path="../Directory.Build.props" />
<File Path="../Directory.Packages.props" />
<File Path="../NuGet.Config" />
</Folder>
<Folder Name="/00 migrations/" />
<Folder Name="/00 migrations/00 admin-service/">
<Project Path="migrations/LY.MicroService.BackendAdmin.DbMigrator/LY.MicroService.BackendAdmin.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/LY.MicroService.BackendAdmin.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/00 migrations/01 platform-service/">
<Project Path="migrations/LY.MicroService.Platform.DbMigrator/LY.MicroService.Platform.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.Platform.EntityFrameworkCore/LY.MicroService.Platform.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/00 migrations/02 localization-service/">
<Project Path="migrations/LY.MicroService.LocalizationManagement.DbMigrator/LY.MicroService.LocalizationManagement.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LY.MicroService.LocalizationManagement.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/00 migrations/03 task-service/">
<Project Path="migrations/LY.MicroService.TaskManagement.DbMigrator/LY.MicroService.TaskManagement.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/LY.MicroService.TaskManagement.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/00 migrations/04 message-service/">
<Project Path="migrations/LY.MicroService.RealtimeMessage.DbMigrator/LY.MicroService.RealtimeMessage.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/LY.MicroService.RealtimeMessage.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/00 migrations/05 webhook-service/">
<Project Path="migrations/LY.MicroService.WebhooksManagement.DbMigrator/LY.MicroService.WebhooksManagement.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/00 migrations/06 auth-server/">
<Project Path="migrations/LY.MicroService.AuthServer.DbMigrator/LY.MicroService.AuthServer.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.AuthServer.EntityFrameworkCore/LY.MicroService.AuthServer.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/01 services/" />
<Folder Name="/01 services/00 localization-service/">
<Project Path="services/LY.MicroService.LocalizationManagement.HttpApi.Host/LY.MicroService.LocalizationManagement.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/01 auth-server/">
<Project Path="services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj" />
</Folder>
<Folder Name="/01 services/02 admin-service/">
<Project Path="services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/03 identity-service/">
<Project Path="services/LY.MicroService.AuthServer.HttpApi.Host/LY.MicroService.AuthServer.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/04 platform-service/">
<Project Path="services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/05 task-service/">
<Project Path="services/LY.MicroService.TaskManagement.HttpApi.Host/LY.MicroService.TaskManagement.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/06 message-service/">
<Project Path="services/LY.MicroService.RealtimeMessage.HttpApi.Host/LY.MicroService.RealtimeMessage.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/07 webhook-service/">
<Project Path="services/LY.MicroService.WebhooksManagement.HttpApi.Host/LY.MicroService.WebhooksManagement.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/08 wechat-service/">
<Project Path="services/LY.MicroService.WechatManagement.HttpApi.Host/LY.MicroService.WechatManagement.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/01 services/09 workflow-service/">
<Project Path="services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj" />
</Folder>
<Folder Name="/02 gateways/" />
<Folder Name="/02 gateways/00 internal/">
<Project Path="../gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.Gateway/LINGYUN.MicroService.Internal.Gateway.csproj" />
</Folder>
<Folder Name="/02 gateways/01 open-api/">
<Project Path="../gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.OpenApi.Gateway/LINGYUN.MicroService.OpenApi.Gateway.csproj" />
</Folder>
<Folder Name="/framework/" />
<Folder Name="/framework/auditing/">
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN.Abp.AuditLogging.Elasticsearch.csproj" />
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN.Abp.AuditLogging.EntityFrameworkCore.csproj" />
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging.IP.Location/LINGYUN.Abp.AuditLogging.IP.Location.csproj" />
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN.Abp.AuditLogging.csproj" />
</Folder>
<Folder Name="/framework/authentication/">
<Project Path="framework/authentication/LINGYUN.Abp.Authentication.QQ/LINGYUN.Abp.Authentication.QQ.csproj" />
<Project Path="framework/authentication/LINGYUN.Abp.Authentication.WeChat/LINGYUN.Abp.Authentication.WeChat.csproj" />
</Folder>
<Folder Name="/framework/authorization/">
<Project Path="framework/authorization/LINGYUN.Abp.Authorization.OrganizationUnits/LINGYUN.Abp.Authorization.OrganizationUnits.csproj" />
</Folder>
<Folder Name="/framework/cli/">
<Project Path="framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj" />
</Folder>
<Folder Name="/framework/cloud-aliyun/">
<Project Path="framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj" />
<Project Path="framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN.Abp.Aliyun.csproj" />
<Project Path="framework/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN.Abp.BlobStoring.Aliyun.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN.Abp.Sms.Aliyun.csproj" />
</Folder>
<Folder Name="/framework/cloud-tencent/">
<Project Path="framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN.Abp.BlobStoring.Tencent.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Sms.Tencent/LINGYUN.Abp.Sms.Tencent.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Tencent.QQ/LINGYUN.Abp.Tencent.QQ.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Tencent.SettingManagement/LINGYUN.Abp.Tencent.SettingManagement.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Tencent/LINGYUN.Abp.Tencent.csproj" />
</Folder>
<Folder Name="/framework/common/">
<Project Path="framework/common/LINGYUN.Abp.AspNetCore.HttpOverrides/LINGYUN.Abp.AspNetCore.HttpOverrides.csproj" />
<Project Path="framework/common/LINGYUN.Abp.AspNetCore.Mvc.Client/LINGYUN.Abp.AspNetCore.Mvc.Client.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Data.DbMigrator/LINGYUN.Abp.Data.DbMigrator.csproj" />
<Project Path="framework/common/LINGYUN.Abp.EventBus.CAP/LINGYUN.Abp.EventBus.CAP.csproj" />
<Project Path="framework/common/LINGYUN.Abp.IdGenerator/LINGYUN.Abp.IdGenerator.csproj" />
<Project Path="framework/common/LINGYUN.Abp.IP.Location/LINGYUN.Abp.IP.Location.csproj" />
<Project Path="framework/common/LINGYUN.Abp.IP2Region/LINGYUN.Abp.IP2Region.csproj" />
</Folder>
<Folder Name="/framework/dapr/">
<Project Path="framework/dapr/LINGYUN.Abp.Dapr.Actors.AspNetCore.Wrapper/LINGYUN.Abp.Dapr.Actors.AspNetCore.Wrapper.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.Dapr.Actors.AspNetCore/LINGYUN.Abp.Dapr.Actors.AspNetCore.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.Dapr.Actors/LINGYUN.Abp.Dapr.Actors.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.Dapr.Client.Wrapper/LINGYUN.Abp.Dapr.Client.Wrapper.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.Dapr.Client/LINGYUN.Abp.Dapr.Client.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.Dapr/LINGYUN.Abp.Dapr.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.DistributedLocking.Dapr/LINGYUN.Abp.DistributedLocking.Dapr.csproj" />
</Folder>
<Folder Name="/framework/data-protection/">
<Project Path="framework/data-protection/LINGYUN.Abp.DataProtection.Abstractions/LINGYUN.Abp.DataProtection.Abstractions.csproj" />
<Project Path="framework/data-protection/LINGYUN.Abp.DataProtection.EntityFrameworkCore/LINGYUN.Abp.DataProtection.EntityFrameworkCore.csproj" />
<Project Path="framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN.Abp.DataProtection.csproj" />
</Folder>
<Folder Name="/framework/dynamic-queryable/">
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.Application.Contracts/LINGYUN.Abp.Dynamic.Queryable.Application.Contracts.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.Application/LINGYUN.Abp.Dynamic.Queryable.Application.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.HttpApi/LINGYUN.Abp.Dynamic.Queryable.HttpApi.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Linq.Dynamic.Queryable/LINGYUN.Linq.Dynamic.Queryable.csproj" />
</Folder>
<Folder Name="/framework/efcore/">
<Project Path="framework/efcore/LINGYUN.Abp.EntityFrameworkCore.MySQL.Microting/LINGYUN.Abp.EntityFrameworkCore.MySQL.Microting.csproj" />
</Folder>
<Folder Name="/framework/elasticsearch/">
<Project Path="framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN.Abp.Elasticsearch.csproj" />
</Folder>
<Folder Name="/framework/entity-change/">
<Project Path="framework/entity-change/LINGYUN.Abp.EntityChange.Application.Contracts/LINGYUN.Abp.EntityChange.Application.Contracts.csproj" />
<Project Path="framework/entity-change/LINGYUN.Abp.EntityChange.Application/LINGYUN.Abp.EntityChange.Application.csproj" />
<Project Path="framework/entity-change/LINGYUN.Abp.EntityChange.HttpApi/LINGYUN.Abp.EntityChange.HttpApi.csproj" />
</Folder>
<Folder Name="/framework/exception-handling/">
<Project Path="framework/common/LINGYUN.Abp.ExceptionHandling.Emailing/LINGYUN.Abp.ExceptionHandling.Emailing.csproj" />
<Project Path="framework/common/LINGYUN.Abp.ExceptionHandling/LINGYUN.Abp.ExceptionHandling.csproj" />
</Folder>
<Folder Name="/framework/exporter/">
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Core/LINGYUN.Abp.Exporter.Core.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MagicodesIE.Excel/LINGYUN.Abp.Exporter.MagicodesIE.Excel.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MiniExcel/LINGYUN.Abp.Exporter.MiniExcel.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MiniSoftware/LINGYUN.Abp.Exporter.MiniSoftware.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Pdf.LibreOffice/LINGYUN.Abp.Exporter.Pdf.LibreOffice.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Pdf.SpireLib/LINGYUN.Abp.Exporter.Pdf.SpireLib.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Pdf/LINGYUN.Abp.Exporter.Pdf.csproj" />
</Folder>
<Folder Name="/framework/features/">
<Project Path="framework/common/LINGYUN.Abp.Features.LimitValidation.Redis.Client/LINGYUN.Abp.Features.LimitValidation.Redis.Client.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN.Abp.Features.LimitValidation.Redis.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj" />
<Project Path="framework/features/LINGYUN.Abp.FeatureManagement.Client/LINGYUN.Abp.FeatureManagement.Client.csproj" />
<Project Path="framework/features/LINGYUN.Abp.Features.Client/LINGYUN.Abp.Features.Client.csproj" />
</Folder>
<Folder Name="/framework/localization/">
<Project Path="framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<Project Path="framework/localization/LINGYUN.Abp.Localization.CultureMap/LINGYUN.Abp.Localization.CultureMap.csproj" />
<Project Path="framework/localization/LINGYUN.Abp.Localization.Xml/LINGYUN.Abp.Localization.Xml.csproj" />
</Folder>
<Folder Name="/framework/location/">
<Project Path="framework/common/LINGYUN.Abp.Location.Baidu/LINGYUN.Abp.Location.Baidu.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Location.Tencent/LINGYUN.Abp.Location.Tencent.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Location/LINGYUN.Abp.Location.csproj" />
</Folder>
<Folder Name="/framework/logging/">
<Project Path="framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN.Abp.Logging.Serilog.Elasticsearch.csproj" />
<Project Path="framework/logging/LINGYUN.Abp.Logging/LINGYUN.Abp.Logging.csproj" />
<Project Path="framework/logging/LINGYUN.Abp.Serilog.Enrichers.Application/LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />
<Project Path="framework/logging/LINGYUN.Abp.Serilog.Enrichers.UniqueId/LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" />
</Folder>
<Folder Name="/framework/navigation/">
<Project Path="framework/navigation/LINGYUN.Abp.UI.Navigation/LINGYUN.Abp.UI.Navigation.csproj" />
</Folder>
<Folder Name="/framework/nexus/">
<Project Path="framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/LINGYUN.Abp.BlobStoring.Nexus.csproj" />
<Project Path="framework/nexus/LINGYUN.Abp.Sonatype.Nexus/LINGYUN.Abp.Sonatype.Nexus.csproj" />
</Folder>
<Folder Name="/framework/open-api/">
<Project Path="framework/open-api/LINGYUN.Abp.OpenApi.Authorization/LINGYUN.Abp.OpenApi.Authorization.csproj" />
<Project Path="framework/open-api/LINGYUN.Abp.OpenApi.IdentityServer/LINGYUN.Abp.OpenApi.IdentityServer.csproj" />
<Project Path="framework/open-api/LINGYUN.Abp.OpenApi.OpenIddict/LINGYUN.Abp.OpenApi.OpenIddict.csproj" />
<Project Path="framework/open-api/LINGYUN.Abp.OpenApi/LINGYUN.Abp.OpenApi.csproj" />
</Folder>
<Folder Name="/framework/pushplus/">
<Project Path="framework/pushplus/LINGYUN.Abp.PushPlus.SettingManagement/LINGYUN.Abp.PushPlus.SettingManagement.csproj" />
<Project Path="framework/pushplus/LINGYUN.Abp.PushPlus/LINGYUN.Abp.PushPlus.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.PushPlus/LINGYUN.Abp.Notifications.PushPlus.csproj" />
</Folder>
<Folder Name="/framework/realtime/">
<Project Path="framework/common/LINGYUN.Abp.RealTime/LINGYUN.Abp.RealTime.csproj" />
</Folder>
<Folder Name="/framework/rules/">
<Project Path="framework/rules/LINGYUN.Abp.Rules.NRules/LINGYUN.Abp.Rules.NRules.csproj" />
<Project Path="framework/rules/LINGYUN.Abp.Rules.RulesEngine/LINGYUN.Abp.Rules.RulesEngine.csproj" />
<Project Path="framework/rules/LINGYUN.Abp.Rules/LINGYUN.Abp.Rules.csproj" />
</Folder>
<Folder Name="/framework/security/">
<Project Path="framework/security/LINGYUN.Abp.Claims.Mapping/LINGYUN.Abp.Claims.Mapping.csproj" />
<Project Path="framework/security/LINGYUN.Abp.Encryption.SM4/LINGYUN.Abp.Encryption.SM4.csproj" />
<Project Path="framework/security/LINGYUN.Abp.Security/LINGYUN.Abp.Security.csproj" />
</Folder>
<Folder Name="/framework/settings/">
<Project Path="framework/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN.Abp.SettingManagement.Application.Contracts.csproj" />
<Project Path="framework/settings/LINGYUN.Abp.Settings/LINGYUN.Abp.Settings.csproj" />
</Folder>
<Folder Name="/framework/telemetry/">
<Project Path="framework/telemetry/LINGYUN.Abp.Telemetry.APM/LINGYUN.Abp.Telemetry.APM.csproj" />
<Project Path="framework/telemetry/LINGYUN.Abp.Telemetry.OpenTelemetry/LINGYUN.Abp.Telemetry.OpenTelemetry.csproj" />
<Project Path="framework/telemetry/LINGYUN.Abp.Telemetry.SkyWalking/LINGYUN.Abp.Telemetry.SkyWalking.csproj" />
</Folder>
<Folder Name="/framework/tenants/">
<Project Path="framework/tenants/LINGYUN.Abp.AspNetCore.MultiTenancy/LINGYUN.Abp.AspNetCore.MultiTenancy.csproj" />
<Project Path="framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/LINGYUN.Abp.MultiTenancy.Editions.csproj" />
</Folder>
<Folder Name="/framework/wechat/">
<Project Path="framework/wechat/LINGYUN.Abp.Identity.WeChat.Work/LINGYUN.Abp.Identity.WeChat.Work.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.Identity.WeChat/LINGYUN.Abp.Identity.WeChat.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Common/LINGYUN.Abp.WeChat.Common.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN.Abp.WeChat.MiniProgram.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Application.Contracts/LINGYUN.Abp.WeChat.Official.Application.Contracts.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Application/LINGYUN.Abp.WeChat.Official.Application.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Handlers/LINGYUN.Abp.WeChat.Official.Handlers.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.HttpApi/LINGYUN.Abp.WeChat.Official.HttpApi.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Senparc/LINGYUN.Abp.WeChat.Official.Senparc.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN.Abp.WeChat.Official.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN.Abp.WeChat.SettingManagement.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Application.Contracts/LINGYUN.Abp.WeChat.Work.Application.Contracts.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Application/LINGYUN.Abp.WeChat.Work.Application.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.AspNetCore/LINGYUN.Abp.WeChat.Work.AspNetCore.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Common/LINGYUN.Abp.WeChat.Work.Common.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Contacts/LINGYUN.Abp.WeChat.Work.Contacts.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.ExternalContact/LINGYUN.Abp.WeChat.Work.ExternalContact.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Handlers/LINGYUN.Abp.WeChat.Work.Handlers.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.HttpApi/LINGYUN.Abp.WeChat.Work.HttpApi.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.OA/LINGYUN.Abp.WeChat.Work.OA.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN.Abp.WeChat.Work.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat/LINGYUN.Abp.WeChat.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN.Abp.Notifications.WeChat.MiniProgram.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.Work/LINGYUN.Abp.Notifications.WeChat.Work.csproj" />
</Folder>
<Folder Name="/framework/wrapper/">
<Project Path="framework/common/LINGYUN.Abp.AspNetCore.Wrapper/LINGYUN.Abp.AspNetCore.Wrapper.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Http.Client.Wrapper/LINGYUN.Abp.Http.Client.Wrapper.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Wrapper/LINGYUN.Abp.Wrapper.csproj" />
<Project Path="framework/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj" />
</Folder>
<Folder Name="/framework/wx-pusher/">
<Project Path="framework/wx-pusher/LINGYUN.Abp.Identity.WxPusher/LINGYUN.Abp.Identity.WxPusher.csproj" />
<Project Path="framework/wx-pusher/LINGYUN.Abp.WxPusher.SettingManagement/LINGYUN.Abp.WxPusher.SettingManagement.csproj" />
<Project Path="framework/wx-pusher/LINGYUN.Abp.WxPusher/LINGYUN.Abp.WxPusher.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.WxPusher/LINGYUN.Abp.Notifications.WxPusher.csproj" />
</Folder>
<Folder Name="/modules/" />
<Folder Name="/modules/account/">
<Project Path="modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN.Abp.Account.Application.Contracts.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Application/LINGYUN.Abp.Account.Application.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN.Abp.Account.HttpApi.Client.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN.Abp.Account.HttpApi.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.OAuth/LINGYUN.Abp.Account.OAuth.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Security/LINGYUN.Abp.Account.Security.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web.OAuth/LINGYUN.Abp.Account.Web.OAuth.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj" />
</Folder>
<Folder Name="/modules/auditing/">
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN.Abp.Auditing.Application.Contracts.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN.Abp.Auditing.Application.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN.Abp.Auditing.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/blob-management/">
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Aliyun/LINGYUN.Abp.BlobManagement.Aliyun.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Application.Contracts/LINGYUN.Abp.BlobManagement.Application.Contracts.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Application/LINGYUN.Abp.BlobManagement.Application.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Domain.Shared/LINGYUN.Abp.BlobManagement.Domain.Shared.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Domain/LINGYUN.Abp.BlobManagement.Domain.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.EntityFrameworkCore/LINGYUN.Abp.BlobManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.FileSystem/LINGYUN.Abp.BlobManagement.FileSystem.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.HttpApi.Client/LINGYUN.Abp.BlobManagement.HttpApi.Client.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.HttpApi/LINGYUN.Abp.BlobManagement.HttpApi.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Minio/LINGYUN.Abp.BlobManagement.Minio.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.SettingManagement/LINGYUN.Abp.BlobManagement.SettingManagement.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Tencent/LINGYUN.Abp.BlobManagement.Tencent.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobStoring.BlobManagement/LINGYUN.Abp.BlobStoring.BlobManagement.csproj" />
</Folder>
<Folder Name="/modules/caching-management/">
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Application.Contracts/LINGYUN.Abp.CachingManagement.Application.Contracts.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Application/LINGYUN.Abp.CachingManagement.Application.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Domain/LINGYUN.Abp.CachingManagement.Domain.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.HttpApi/LINGYUN.Abp.CachingManagement.HttpApi.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.StackExchangeRedis/LINGYUN.Abp.CachingManagement.StackExchangeRedis.csproj" />
</Folder>
<Folder Name="/modules/data-protection/">
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Application.Contracts/LINGYUN.Abp.DataProtectionManagement.Application.Contracts.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Application/LINGYUN.Abp.DataProtectionManagement.Application.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Domain.Shared/LINGYUN.Abp.DataProtectionManagement.Domain.Shared.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Domain/LINGYUN.Abp.DataProtectionManagement.Domain.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore/LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.HttpApi/LINGYUN.Abp.DataProtectionManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/elsa/">
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN.Abp.Elsa.Activities.Emailing.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN.Abp.Elsa.Activities.IM.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN.Abp.Elsa.Activities.Notifications.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN.Abp.Elsa.Activities.Sms.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Webhooks/LINGYUN.Abp.Elsa.Activities.Webhooks.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN.Abp.Elsa.Activities.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Designer/LINGYUN.Abp.Elsa.Designer.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Notifications/LINGYUN.Abp.Elsa.Notifications.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Server/LINGYUN.Abp.Elsa.Server.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj" />
</Folder>
<Folder Name="/modules/feature-management/">
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.Application.Contracts/LINGYUN.Abp.FeatureManagement.Application.Contracts.csproj" />
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.Application/LINGYUN.Abp.FeatureManagement.Application.csproj" />
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.HttpApi/LINGYUN.Abp.FeatureManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/gdpr/">
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Application.Contracts/LINGYUN.Abp.Gdpr.Application.Contracts.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Application/LINGYUN.Abp.Gdpr.Application.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Identity/LINGYUN.Abp.Gdpr.Domain.Identity.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Shared/LINGYUN.Abp.Gdpr.Domain.Shared.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Domain/LINGYUN.Abp.Gdpr.Domain.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.EntityFrameworkCore/LINGYUN.Abp.Gdpr.EntityFrameworkCore.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN.Abp.Gdpr.HttpApi.Client.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi/LINGYUN.Abp.Gdpr.HttpApi.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj" />
</Folder>
<Folder Name="/modules/identity/">
<Project Path="modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN.Abp.Identity.Application.Contracts.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN.Abp.Identity.Application.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore.QrCode/LINGYUN.Abp.Identity.AspNetCore.QrCode.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore.Session/LINGYUN.Abp.Identity.AspNetCore.Session.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN.Abp.Identity.Domain.Shared.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Domain/LINGYUN.Abp.Identity.Domain.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.HttpApi.Client/LINGYUN.Abp.Identity.HttpApi.Client.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.HttpApi/LINGYUN.Abp.Identity.HttpApi.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Notifications/LINGYUN.Abp.Identity.Notifications.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.OrganizaztionUnits/LINGYUN.Abp.Identity.OrganizaztionUnits.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.QrCode/LINGYUN.Abp.Identity.QrCode.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Session.AspNetCore/LINGYUN.Abp.Identity.Session.AspNetCore.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Session/LINGYUN.Abp.Identity.Session.csproj" />
</Folder>
<Folder Name="/modules/localization-management/">
<File Path="modules/localization-management/README.md" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN.Abp.LocalizationManagement.Application.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/openiddict/">
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Application.Contracts/LINGYUN.Abp.OpenIddict.Application.Contracts.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Application/LINGYUN.Abp.OpenIddict.Application.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore.Session/LINGYUN.Abp.OpenIddict.AspNetCore.Session.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Dapr.Client/LINGYUN.Abp.OpenIddict.Dapr.Client.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.HttpApi.Client/LINGYUN.Abp.OpenIddict.HttpApi.Client.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.HttpApi/LINGYUN.Abp.OpenIddict.HttpApi.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.LinkUser/LINGYUN.Abp.OpenIddict.LinkUser.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Portal/LINGYUN.Abp.OpenIddict.Portal.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Sms/LINGYUN.Abp.OpenIddict.Sms.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.WeChat.Work/LINGYUN.Abp.OpenIddict.WeChat.Work.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.WeChat/LINGYUN.Abp.OpenIddict.WeChat.csproj" />
</Folder>
<Folder Name="/modules/permission-management/">
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Application.Contracts/LINGYUN.Abp.PermissionManagement.Application.Contracts.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Application/LINGYUN.Abp.PermissionManagement.Application.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Domain.OrganizationUnits/LINGYUN.Abp.PermissionManagement.Domain.OrganizationUnits.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.HttpApi/LINGYUN.Abp.PermissionManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/platform/">
<Project Path="modules/platform/LINGYUN.Abp.Emailing.Platform/LINGYUN.Abp.Emailing.Platform.csproj" />
<Project Path="modules/platform/LINGYUN.Abp.Sms.Platform/LINGYUN.Abp.Sms.Platform.csproj" />
<Project Path="modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj" />
<Project Path="modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin5/LINGYUN.Abp.UI.Navigation.VueVbenAdmin5.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN.Platform.Application.Contracts.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Application/LINGYUN.Platform.Application.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN.Platform.Domain.Shared.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Domain/LINGYUN.Platform.Domain.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN.Platform.EntityFrameworkCore.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi.Client/LINGYUN.Platform.HttpApi.Client.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi/LINGYUN.Platform.HttpApi.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj" />
</Folder>
<Folder Name="/modules/realtime-message/">
<Project Path="modules/realtime-message/LINGYUN.Abp.IM.SignalR/LINGYUN.Abp.IM.SignalR.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.IM/LINGYUN.Abp.IM.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Application.Contracts/LINGYUN.Abp.MessageService.Application.Contracts.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Application/LINGYUN.Abp.MessageService.Application.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Domain.Shared/LINGYUN.Abp.MessageService.Domain.Shared.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Domain/LINGYUN.Abp.MessageService.Domain.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.EntityFrameworkCore/LINGYUN.Abp.MessageService.EntityFrameworkCore.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.HttpApi.Client/LINGYUN.Abp.MessageService.HttpApi.Client.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.HttpApi/LINGYUN.Abp.MessageService.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/realtime-notifications/">
<Project Path="modules/realtime-notifications/LINGYUN.Abp.ExceptionHandling.Notifications/LINGYUN.Abp.ExceptionHandling.Notifications.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Application.Contracts/LINGYUN.Abp.Notifications.Application.Contracts.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Application/LINGYUN.Abp.Notifications.Application.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Common/LINGYUN.Abp.Notifications.Common.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Core/LINGYUN.Abp.Notifications.Core.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain.Shared/LINGYUN.Abp.Notifications.Domain.Shared.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN.Abp.Notifications.Domain.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Emailing/LINGYUN.Abp.Notifications.Emailing.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.EntityFrameworkCore/LINGYUN.Abp.Notifications.EntityFrameworkCore.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.HttpApi.Client/LINGYUN.Abp.Notifications.HttpApi.Client.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.HttpApi/LINGYUN.Abp.Notifications.HttpApi.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.SignalR/LINGYUN.Abp.Notifications.SignalR.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Sms/LINGYUN.Abp.Notifications.Sms.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications/LINGYUN.Abp.Notifications.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Notifications.Jobs/LINGYUN.Abp.Notifications.Jobs.csproj" />
</Folder>
<Folder Name="/modules/rules-management/" />
<Folder Name="/modules/rules-management/rules-engine/">
<Project Path="modules/rules-management/rules-engine/LINGYUN.Abp.RulesEngineManagement.Application.Contracts/LINGYUN.Abp.RulesEngineManagement.Application.Contracts.csproj" />
<Project Path="modules/rules-management/rules-engine/LINGYUN.Abp.RulesEngineManagement.Application/LINGYUN.Abp.RulesEngineManagement.Application.csproj" />
<Project Path="modules/rules-management/rules-engine/LINGYUN.Abp.RulesEngineManagement.Domain.Shared/LINGYUN.Abp.RulesEngineManagement.Domain.Shared.csproj" />
<Project Path="modules/rules-management/rules-engine/LINGYUN.Abp.RulesEngineManagement.Domain/LINGYUN.Abp.RulesEngineManagement.Domain.csproj" />
<Project Path="modules/rules-management/rules-engine/LINGYUN.Abp.RulesEngineManagement.EntityFrameworkCore/LINGYUN.Abp.RulesEngineManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/rules-management/rules-engine/LINGYUN.Abp.RulesEngineManagement.HttpApi/LINGYUN.Abp.RulesEngineManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/saas/">
<Project Path="modules/saas/LINGYUN.Abp.MultiTenancy.Saas/LINGYUN.Abp.MultiTenancy.Saas.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Application.Contracts/LINGYUN.Abp.Saas.Application.Contracts.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Application/LINGYUN.Abp.Saas.Application.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.DbChecker/LINGYUN.Abp.Saas.DbChecker.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN.Abp.Saas.Domain.Shared.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Domain/LINGYUN.Abp.Saas.Domain.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.EntityFrameworkCore/LINGYUN.Abp.Saas.EntityFrameworkCore.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.HttpApi.Client/LINGYUN.Abp.Saas.HttpApi.Client.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.HttpApi/LINGYUN.Abp.Saas.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/settings/">
<Project Path="modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN.Abp.SettingManagement.Application.csproj" />
<Project Path="modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN.Abp.SettingManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/task-management/">
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Abstractions/LINGYUN.Abp.BackgroundTasks.Abstractions.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Activities/LINGYUN.Abp.BackgroundTasks.Activities.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.DistributedLocking/LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.EventBus/LINGYUN.Abp.BackgroundTasks.EventBus.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Jobs/LINGYUN.Abp.BackgroundTasks.Jobs.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Notifications/LINGYUN.Abp.BackgroundTasks.Notifications.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN.Abp.BackgroundTasks.Quartz.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.TaskManagement/LINGYUN.Abp.BackgroundTasks.TaskManagement.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN.Abp.BackgroundTasks.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Quartz.MySqlInstaller/LINGYUN.Abp.Quartz.MySqlInstaller.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Quartz.SqlInstaller/LINGYUN.Abp.Quartz.SqlInstaller.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Application.Contracts/LINGYUN.Abp.TaskManagement.Application.Contracts.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN.Abp.TaskManagement.Application.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Domain.Shared/LINGYUN.Abp.TaskManagement.Domain.Shared.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN.Abp.TaskManagement.Domain.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.EntityFrameworkCore/LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.HttpApi.Client/LINGYUN.Abp.TaskManagement.HttpApi.Client.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.HttpApi/LINGYUN.Abp.TaskManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/text-templating/">
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Application.Contracts/LINGYUN.Abp.TextTemplating.Application.Contracts.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Application/LINGYUN.Abp.TextTemplating.Application.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Domain.Shared/LINGYUN.Abp.TextTemplating.Domain.Shared.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN.Abp.TextTemplating.Domain.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.EntityFrameworkCore/LINGYUN.Abp.TextTemplating.EntityFrameworkCore.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.HttpApi.Client/LINGYUN.Abp.TextTemplating.HttpApi.Client.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.HttpApi/LINGYUN.Abp.TextTemplating.HttpApi.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Scriban/LINGYUN.Abp.TextTemplating.Scriban.csproj" />
</Folder>
<Folder Name="/modules/webhooks/">
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.ClientProxies/LINGYUN.Abp.Webhooks.ClientProxies.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.Core/LINGYUN.Abp.Webhooks.Core.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.EventBus/LINGYUN.Abp.Webhooks.EventBus.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.Identity/LINGYUN.Abp.Webhooks.Identity.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.Saas/LINGYUN.Abp.Webhooks.Saas.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebHooks/LINGYUN.Abp.WebHooks.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN.Abp.WebhooksManagement.Application.Contracts.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN.Abp.WebhooksManagement.Application.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain.Shared/LINGYUN.Abp.WebhooksManagement.Domain.Shared.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN.Abp.WebhooksManagement.Domain.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore/LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN.Abp.WebhooksManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/LINGYUN.Abp.Aliyun.Tests/LINGYUN.Abp.Aliyun.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.BlobStoring.Aliyun.Tests/LINGYUN.Abp.BlobStoring.Aliyun.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.BlobStoring.Nexus.Tests/LINGYUN.Abp.BlobStoring.Nexus.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.DataProtection.Tests/LINGYUN.Abp.DataProtection.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Emailing.Platform.Tests/LINGYUN.Abp.Emailing.Platform.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.EntityFrameworkCore.Tests/LINGYUN.Abp.EntityFrameworkCore.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.ExceptionHandling.Emailing.Tests/LINGYUN.Abp.ExceptionHandling.Emailing.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN.Abp.Features.LimitValidation.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.IdGenerator.Tests/LINGYUN.Abp.IdGenerator.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Localization.Xml.Tests/LINGYUN.Abp.Localization.Xml.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Location.Baidu.Tests/LINGYUN.Abp.Location.Baidu.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Location.Tencent.Tests/LINGYUN.Abp.Location.Tencent.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Rules.RulesEngine.Tests/LINGYUN.Abp.Rules.RulesEngine.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.Sms.Platform.Tests/LINGYUN.Abp.Sms.Platform.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.TestBase/LINGYUN.Abp.TestsBase.csproj" />
<Project Path="tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN.Abp.WeChat.Work.Tests.csproj" />
</Folder>
</Solution>

2903
aspnet-core/LINGYUN.MicroService.Aspire.sln

File diff suppressed because it is too large

65
aspnet-core/LINGYUN.MicroService.Aspire.slnx

@ -1,4 +1,7 @@
<Solution>
<Folder Name="/.changes/">
<File Path="../.changes/Migration 10.0.2 - 10.2.0.md" />
</Folder>
<Folder Name="/.github/" />
<Folder Name="/.github/workflows/">
<File Path="../.github/workflows/build.yml" />
@ -132,6 +135,9 @@
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.HttpApi/LINGYUN.Abp.Dynamic.Queryable.HttpApi.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Linq.Dynamic.Queryable/LINGYUN.Linq.Dynamic.Queryable.csproj" />
</Folder>
<Folder Name="/framework/efcore/">
<Project Path="framework/efcore/LINGYUN.Abp.EntityFrameworkCore.MySQL.Microting/LINGYUN.Abp.EntityFrameworkCore.MySQL.Microting.csproj" Id="83359abe-f8c3-4f18-a597-dd6c96c42ecb" />
</Folder>
<Folder Name="/framework/elasticsearch/">
<Project Path="framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN.Abp.Elasticsearch.csproj" />
</Folder>
@ -148,6 +154,7 @@
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Core/LINGYUN.Abp.Exporter.Core.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MagicodesIE.Excel/LINGYUN.Abp.Exporter.MagicodesIE.Excel.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MiniExcel/LINGYUN.Abp.Exporter.MiniExcel.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MiniSoftware/LINGYUN.Abp.Exporter.MiniSoftware.csproj" Id="854f6afa-51e0-4e09-a67a-a8d0d5785772" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Pdf.LibreOffice/LINGYUN.Abp.Exporter.Pdf.LibreOffice.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Pdf.SpireLib/LINGYUN.Abp.Exporter.Pdf.SpireLib.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Pdf/LINGYUN.Abp.Exporter.Pdf.csproj" />
@ -302,6 +309,20 @@
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN.Abp.Auditing.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/blob-management/">
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Aliyun/LINGYUN.Abp.BlobManagement.Aliyun.csproj" Id="25624506-7e9e-4f8c-bc9d-557998971f96" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Application.Contracts/LINGYUN.Abp.BlobManagement.Application.Contracts.csproj" Id="35984de9-0051-4710-805c-e884486f14ce" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Application/LINGYUN.Abp.BlobManagement.Application.csproj" Id="22ae56dc-99fd-425e-a341-d018fac6d40b" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Domain.Shared/LINGYUN.Abp.BlobManagement.Domain.Shared.csproj" Id="14b71479-1d0f-4653-83c3-a897bbb0e554" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Domain/LINGYUN.Abp.BlobManagement.Domain.csproj" Id="f5ee6b41-4da7-419e-a938-e6f442c8eb79" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.EntityFrameworkCore/LINGYUN.Abp.BlobManagement.EntityFrameworkCore.csproj" Id="6b02ba14-2f7e-4384-b6b1-bdfe16264c53" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.FileSystem/LINGYUN.Abp.BlobManagement.FileSystem.csproj" Id="2269c845-fb79-4dde-855d-068bd0df4edf" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.HttpApi.Client/LINGYUN.Abp.BlobManagement.HttpApi.Client.csproj" Id="94f8b5c9-fcd1-46bc-a521-c794c767da3c" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.HttpApi/LINGYUN.Abp.BlobManagement.HttpApi.csproj" Id="88222f2c-d55f-4d31-9776-e76f880ac052" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Minio/LINGYUN.Abp.BlobManagement.Minio.csproj" Id="808fb513-aa95-4645-aea9-07634e6c3a86" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Tencent/LINGYUN.Abp.BlobManagement.Tencent.csproj" Id="5d99850b-f8ad-4fa0-bcd4-7f5f455ec5d5" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobStoring.BlobManagement/LINGYUN.Abp.BlobStoring.BlobManagement.csproj" Id="55898e62-9dbe-4569-b7af-b65773408ec5" />
</Folder>
<Folder Name="/modules/caching-management/">
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Application.Contracts/LINGYUN.Abp.CachingManagement.Application.Contracts.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Application/LINGYUN.Abp.CachingManagement.Application.csproj" />
@ -317,21 +338,6 @@
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore/LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.HttpApi/LINGYUN.Abp.DataProtectionManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/elsa/">
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN.Abp.Elsa.Activities.Emailing.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN.Abp.Elsa.Activities.IM.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN.Abp.Elsa.Activities.Notifications.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN.Abp.Elsa.Activities.Sms.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Webhooks/LINGYUN.Abp.Elsa.Activities.Webhooks.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN.Abp.Elsa.Activities.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql/LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Notifications/LINGYUN.Abp.Elsa.Notifications.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Server/LINGYUN.Abp.Elsa.Server.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj" />
</Folder>
<Folder Name="/modules/feature-management/">
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.Application.Contracts/LINGYUN.Abp.FeatureManagement.Application.Contracts.csproj" />
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.Application/LINGYUN.Abp.FeatureManagement.Application.csproj" />
@ -353,6 +359,7 @@
<Project Path="modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN.Abp.Identity.Application.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore.QrCode/LINGYUN.Abp.Identity.AspNetCore.QrCode.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore.Session/LINGYUN.Abp.Identity.AspNetCore.Session.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore/LINGYUN.Abp.Identity.AspNetCore.csproj" Id="e25f7078-3af5-4456-b6e5-4027266de1ff" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN.Abp.Identity.Domain.Shared.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Domain/LINGYUN.Abp.Identity.Domain.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
@ -398,24 +405,6 @@
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.WeChat.Work/LINGYUN.Abp.OpenIddict.WeChat.Work.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.WeChat/LINGYUN.Abp.OpenIddict.WeChat.csproj" />
</Folder>
<Folder Name="/modules/oss-management/">
<File Path="modules/oss-management/README.md" />
<Project Path="modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/LINGYUN.Abp.BlobStoring.OssManagement.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN.Abp.OssManagement.HttpApi.Client.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.ImageSharp/LINGYUN.Abp.OssManagement.ImageSharp.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Imaging/LINGYUN.Abp.OssManagement.Imaging.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Minio/LINGYUN.Abp.OssManagement.Minio.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Nexus/LINGYUN.Abp.OssManagement.Nexus.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj" />
<Project Path="modules/oss-management/LINGYUN.Abp.OssManagement.Tencent/LINGYUN.Abp.OssManagement.Tencent.csproj" />
</Folder>
<Folder Name="/modules/permission-management/">
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Application.Contracts/LINGYUN.Abp.PermissionManagement.Application.Contracts.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Application/LINGYUN.Abp.PermissionManagement.Application.csproj" />
@ -499,6 +488,9 @@
</Folder>
<Folder Name="/modules/task-management/">
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Abstractions/LINGYUN.Abp.BackgroundTasks.Abstractions.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Activities/LINGYUN.Abp.BackgroundTasks.Activities.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.DistributedLocking/LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.EventBus/LINGYUN.Abp.BackgroundTasks.EventBus.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Jobs/LINGYUN.Abp.BackgroundTasks.Jobs.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Notifications/LINGYUN.Abp.BackgroundTasks.Notifications.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN.Abp.BackgroundTasks.Quartz.csproj" />
@ -555,6 +547,13 @@
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Server/LINGYUN.Abp.Elsa.Server.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj" />
</Folder>
<Folder Name="/modules/workflow/elsa3/">
<Project Path="modules/elsa/LINGYUN.Abp.ElsaNext.EntityFrameworkCore.PostgreSql/LINGYUN.Abp.ElsaNext.EntityFrameworkCore.PostgreSql.csproj" Id="eac3cdfe-670e-41fd-a7cf-67a38de69f97" />
<Project Path="modules/elsa/LINGYUN.Abp.ElsaNext.EntityFrameworkCore/LINGYUN.Abp.ElsaNext.EntityFrameworkCore.csproj" Id="96f6e53d-2e56-4fb2-b603-3e493f588c69" />
<Project Path="modules/elsa/LINGYUN.Abp.ElsaNext.Server/LINGYUN.Abp.ElsaNext.Server.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.ElsaNext.Studio/LINGYUN.Abp.ElsaNext.Studio.csproj" Id="3550e74f-776d-4f6c-bc6a-2ba7618f5d41" />
<Project Path="modules/elsa/LINGYUN.Abp.ElsaNext/LINGYUN.Abp.ElsaNext.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/LINGYUN.Abp.Aliyun.Tests/LINGYUN.Abp.Aliyun.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.BlobStoring.Aliyun.Tests/LINGYUN.Abp.BlobStoring.Aliyun.Tests.csproj" />

1246
aspnet-core/LINGYUN.MicroService.Common.sln

File diff suppressed because it is too large

2301
aspnet-core/LINGYUN.MicroService.SingleProject.sln

File diff suppressed because it is too large

426
aspnet-core/LINGYUN.MicroService.SingleProject.slnx

@ -0,0 +1,426 @@
<Solution>
<Folder Name="/framework/">
<Project Path="framework/common/LINGYUN.Abp.AspNetCore.HttpOverrides/LINGYUN.Abp.AspNetCore.HttpOverrides.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Data.DbMigrator/LINGYUN.Abp.Data.DbMigrator.csproj" />
<Project Path="framework/common/LINGYUN.Abp.IdGenerator/LINGYUN.Abp.IdGenerator.csproj" />
<Project Path="framework/common/LINGYUN.Abp.IP.Location/LINGYUN.Abp.IP.Location.csproj" />
<Project Path="framework/common/LINGYUN.Abp.IP2Region/LINGYUN.Abp.IP2Region.csproj" />
<Project Path="framework/navigation/LINGYUN.Abp.UI.Navigation/LINGYUN.Abp.UI.Navigation.csproj" />
<Project Path="framework/security/LINGYUN.Abp.Encryption.SM4/LINGYUN.Abp.Encryption.SM4.csproj" />
</Folder>
<Folder Name="/framework/alibaba-cloud/">
<Project Path="framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj" />
<Project Path="framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN.Abp.Aliyun.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Sms.Aliyun/LINGYUN.Abp.Sms.Aliyun.csproj" />
</Folder>
<Folder Name="/framework/authentication/">
<Project Path="framework/authentication/LINGYUN.Abp.Authentication.QQ/LINGYUN.Abp.Authentication.QQ.csproj" />
<Project Path="framework/authentication/LINGYUN.Abp.Authentication.WeChat/LINGYUN.Abp.Authentication.WeChat.csproj" />
</Folder>
<Folder Name="/framework/authorization/">
<Project Path="framework/authorization/LINGYUN.Abp.Authorization.OrganizationUnits/LINGYUN.Abp.Authorization.OrganizationUnits.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.OrganizaztionUnits/LINGYUN.Abp.Identity.OrganizaztionUnits.csproj" />
</Folder>
<Folder Name="/framework/background-tasks/">
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Abstractions/LINGYUN.Abp.BackgroundTasks.Abstractions.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Activities/LINGYUN.Abp.BackgroundTasks.Activities.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.DistributedLocking/LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.EventBus/LINGYUN.Abp.BackgroundTasks.EventBus.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.ExceptionHandling/LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Jobs/LINGYUN.Abp.BackgroundTasks.Jobs.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Notifications/LINGYUN.Abp.BackgroundTasks.Notifications.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.Quartz/LINGYUN.Abp.BackgroundTasks.Quartz.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN.Abp.BackgroundTasks.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Quartz.MySqlInstaller/LINGYUN.Abp.Quartz.MySqlInstaller.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Quartz.PostgresSqlInstaller/LINGYUN.Abp.Quartz.PostgresSqlInstaller.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Quartz.SqlInstaller/LINGYUN.Abp.Quartz.SqlInstaller.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.Quartz.SqlServerInstaller/LINGYUN.Abp.Quartz.SqlServerInstaller.csproj" />
</Folder>
<Folder Name="/framework/cap/">
<Project Path="framework/common/LINGYUN.Abp.EventBus.CAP/LINGYUN.Abp.EventBus.CAP.csproj" />
</Folder>
<Folder Name="/framework/dapr/">
<Project Path="framework/dapr/LINGYUN.Abp.Dapr.Client/LINGYUN.Abp.Dapr.Client.csproj" />
<Project Path="framework/dapr/LINGYUN.Abp.Dapr/LINGYUN.Abp.Dapr.csproj" />
</Folder>
<Folder Name="/framework/data-protection/">
<Project Path="framework/data-protection/LINGYUN.Abp.DataProtection.Abstractions/LINGYUN.Abp.DataProtection.Abstractions.csproj" />
<Project Path="framework/data-protection/LINGYUN.Abp.DataProtection.EntityFrameworkCore/LINGYUN.Abp.DataProtection.EntityFrameworkCore.csproj" />
<Project Path="framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN.Abp.DataProtection.csproj" />
</Folder>
<Folder Name="/framework/dynamic-queryable/">
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.Application.Contracts/LINGYUN.Abp.Dynamic.Queryable.Application.Contracts.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.Application/LINGYUN.Abp.Dynamic.Queryable.Application.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Abp.Dynamic.Queryable.HttpApi/LINGYUN.Abp.Dynamic.Queryable.HttpApi.csproj" />
<Project Path="framework/dynamic-queryable/LINGYUN.Linq.Dynamic.Queryable/LINGYUN.Linq.Dynamic.Queryable.csproj" />
</Folder>
<Folder Name="/framework/efcore/">
<Project Path="framework/efcore/LINGYUN.Abp.EntityFrameworkCore.MySQL.Microting/LINGYUN.Abp.EntityFrameworkCore.MySQL.Microting.csproj" />
</Folder>
<Folder Name="/framework/elasticsearch/">
<Project Path="framework/elasticsearch/LINGYUN.Abp.Elasticsearch/LINGYUN.Abp.Elasticsearch.csproj" />
</Folder>
<Folder Name="/framework/exception/">
<Project Path="framework/common/LINGYUN.Abp.ExceptionHandling.Emailing/LINGYUN.Abp.ExceptionHandling.Emailing.csproj" />
<Project Path="framework/common/LINGYUN.Abp.ExceptionHandling/LINGYUN.Abp.ExceptionHandling.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.ExceptionHandling.Notifications/LINGYUN.Abp.ExceptionHandling.Notifications.csproj" />
</Folder>
<Folder Name="/framework/exporter/">
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Application.Contracts/LINGYUN.Abp.Exporter.Application.Contracts.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Application/LINGYUN.Abp.Exporter.Application.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.Core/LINGYUN.Abp.Exporter.Core.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MagicodesIE.Excel/LINGYUN.Abp.Exporter.MagicodesIE.Excel.csproj" />
<Project Path="framework/exporter/LINGYUN.Abp.Exporter.MiniSoftware/LINGYUN.Abp.Exporter.MiniSoftware.csproj" />
</Folder>
<Folder Name="/framework/feature/">
<Project Path="framework/common/LINGYUN.Abp.Features.LimitValidation.Redis.Client/LINGYUN.Abp.Features.LimitValidation.Redis.Client.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN.Abp.Features.LimitValidation.Redis.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj" />
<Project Path="framework/features/LINGYUN.Abp.FeatureManagement.Client/LINGYUN.Abp.FeatureManagement.Client.csproj" />
<Project Path="framework/features/LINGYUN.Abp.Features.Client/LINGYUN.Abp.Features.Client.csproj" />
</Folder>
<Folder Name="/framework/idempotent/">
<Project Path="framework/common/LINGYUN.Abp.Idempotent/LINGYUN.Abp.Idempotent.csproj" />
<Project Path="framework/mvc/LINGYUN.Abp.AspNetCore.Mvc.Idempotent.Wrapper/LINGYUN.Abp.AspNetCore.Mvc.Idempotent.Wrapper.csproj" />
<Project Path="framework/mvc/LINGYUN.Abp.AspNetCore.Mvc.Idempotent/LINGYUN.Abp.AspNetCore.Mvc.Idempotent.csproj" />
</Folder>
<Folder Name="/framework/localization/">
<Project Path="framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<Project Path="framework/localization/LINGYUN.Abp.Localization.CultureMap/LINGYUN.Abp.Localization.CultureMap.csproj" />
</Folder>
<Folder Name="/framework/open-api/">
<Project Path="framework/open-api/LINGYUN.Abp.OpenApi.Authorization/LINGYUN.Abp.OpenApi.Authorization.csproj" />
<Project Path="framework/open-api/LINGYUN.Abp.OpenApi/LINGYUN.Abp.OpenApi.csproj" />
</Folder>
<Folder Name="/framework/realtime/">
<Project Path="framework/common/LINGYUN.Abp.RealTime/LINGYUN.Abp.RealTime.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.IM.SignalR/LINGYUN.Abp.IM.SignalR.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.IM/LINGYUN.Abp.IM.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Common/LINGYUN.Abp.Notifications.Common.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Core/LINGYUN.Abp.Notifications.Core.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Emailing/LINGYUN.Abp.Notifications.Emailing.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.SignalR/LINGYUN.Abp.Notifications.SignalR.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Templating/LINGYUN.Abp.Notifications.Templating.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications/LINGYUN.Abp.Notifications.csproj" />
</Folder>
<Folder Name="/framework/saas/">
<Project Path="framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/LINGYUN.Abp.MultiTenancy.Editions.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.MultiTenancy.Saas/LINGYUN.Abp.MultiTenancy.Saas.csproj" />
</Folder>
<Folder Name="/framework/settings/">
<Project Path="framework/settings/LINGYUN.Abp.SettingManagement.Application.Contracts/LINGYUN.Abp.SettingManagement.Application.Contracts.csproj" />
<Project Path="framework/settings/LINGYUN.Abp.Settings/LINGYUN.Abp.Settings.csproj" />
</Folder>
<Folder Name="/framework/tencent-cloud/">
<Project Path="framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN.Abp.BlobStoring.Tencent.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Sms.Tencent/LINGYUN.Abp.Sms.Tencent.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Tencent.QQ/LINGYUN.Abp.Tencent.QQ.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Tencent.SettingManagement/LINGYUN.Abp.Tencent.SettingManagement.csproj" />
<Project Path="framework/cloud-tencent/LINGYUN.Abp.Tencent/LINGYUN.Abp.Tencent.csproj" />
</Folder>
<Folder Name="/framework/tencent-wechat/">
<Project Path="framework/wechat/LINGYUN.Abp.Identity.WeChat.Work/LINGYUN.Abp.Identity.WeChat.Work.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.Identity.WeChat/LINGYUN.Abp.Identity.WeChat.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Common/LINGYUN.Abp.WeChat.Common.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN.Abp.WeChat.MiniProgram.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Application.Contracts/LINGYUN.Abp.WeChat.Official.Application.Contracts.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Application/LINGYUN.Abp.WeChat.Official.Application.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.Handlers/LINGYUN.Abp.WeChat.Official.Handlers.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official.HttpApi/LINGYUN.Abp.WeChat.Official.HttpApi.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN.Abp.WeChat.Official.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.SettingManagement/LINGYUN.Abp.WeChat.SettingManagement.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Application.Contracts/LINGYUN.Abp.WeChat.Work.Application.Contracts.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Application/LINGYUN.Abp.WeChat.Work.Application.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.AspNetCore/LINGYUN.Abp.WeChat.Work.AspNetCore.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Common/LINGYUN.Abp.WeChat.Work.Common.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Contacts/LINGYUN.Abp.WeChat.Work.Contacts.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.ExternalContact/LINGYUN.Abp.WeChat.Work.ExternalContact.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.Handlers/LINGYUN.Abp.WeChat.Work.Handlers.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.HttpApi/LINGYUN.Abp.WeChat.Work.HttpApi.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work.OA/LINGYUN.Abp.WeChat.Work.OA.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN.Abp.WeChat.Work.csproj" />
<Project Path="framework/wechat/LINGYUN.Abp.WeChat/LINGYUN.Abp.WeChat.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN.Abp.Notifications.WeChat.MiniProgram.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.Work/LINGYUN.Abp.Notifications.WeChat.Work.csproj" />
</Folder>
<Folder Name="/framework/wrapper/">
<Project Path="framework/common/LINGYUN.Abp.AspNetCore.Wrapper/LINGYUN.Abp.AspNetCore.Wrapper.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Http.Client.Wrapper/LINGYUN.Abp.Http.Client.Wrapper.csproj" />
<Project Path="framework/common/LINGYUN.Abp.Wrapper/LINGYUN.Abp.Wrapper.csproj" />
<Project Path="framework/mvc/LINGYUN.Abp.AspNetCore.Mvc.Wrapper/LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj" />
</Folder>
<Folder Name="/hosts/">
<Project Path="../gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.ApiGateway/LINGYUN.MicroService.Internal.ApiGateway.csproj" />
<Project Path="services/LY.AIO.Applications.Single/LY.AIO.Applications.Single.csproj" />
<Project Path="services/LY.MicroService.Applications.Single/LY.MicroService.Applications.Single.csproj" />
</Folder>
<Folder Name="/migrations/" />
<Folder Name="/migrations/single-project/">
<Project Path="migrations/LY.MicroService.Applications.Single.DbMigrator/LY.MicroService.Applications.Single.DbMigrator.csproj" />
<Project Path="migrations/LY.MicroService.Applications.Single.EntityFrameworkCore.MySql/LY.MicroService.Applications.Single.EntityFrameworkCore.MySql.csproj" />
<Project Path="migrations/LY.MicroService.Applications.Single.EntityFrameworkCore.PostgreSql/LY.MicroService.Applications.Single.EntityFrameworkCore.PostgreSql.csproj" />
<Project Path="migrations/LY.MicroService.Applications.Single.EntityFrameworkCore.SqlServer/LY.MicroService.Applications.Single.EntityFrameworkCore.SqlServer.csproj" />
<Project Path="migrations/LY.MicroService.Applications.Single.EntityFrameworkCore/LY.MicroService.Applications.Single.EntityFrameworkCore.csproj" />
</Folder>
<Folder Name="/modules/" />
<Folder Name="/modules/account/">
<Project Path="modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN.Abp.Account.Application.Contracts.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Application/LINGYUN.Abp.Account.Application.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN.Abp.Account.HttpApi.Client.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN.Abp.Account.HttpApi.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.OAuth/LINGYUN.Abp.Account.OAuth.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Security/LINGYUN.Abp.Account.Security.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web.OAuth/LINGYUN.Abp.Account.Web.OAuth.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj" />
<Project Path="modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj" />
</Folder>
<Folder Name="/modules/ai/">
<Project Path="modules/ai/LINGYUN.Abp.AI.Agent/LINGYUN.Abp.AI.Agent.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AI.Core/LINGYUN.Abp.AI.Core.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN.Abp.AI.Tools.Http.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN.Abp.AI.Tools.Mcp.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN.Abp.AI.Tools.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.Application.Contracts/LINGYUN.Abp.AIManagement.Application.Contracts.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.Application/LINGYUN.Abp.AIManagement.Application.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.Domain.Shared/LINGYUN.Abp.AIManagement.Domain.Shared.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.Domain/LINGYUN.Abp.AIManagement.Domain.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.EntityFrameworkCore/LINGYUN.Abp.AIManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.HttpApi.Client/LINGYUN.Abp.AIManagement.HttpApi.Client.csproj" />
<Project Path="modules/ai/LINGYUN.Abp.AIManagement.HttpApi/LINGYUN.Abp.AIManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/auditing/">
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN.Abp.AuditLogging.Elasticsearch.csproj" />
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN.Abp.AuditLogging.EntityFrameworkCore.csproj" />
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging.IP.Location/LINGYUN.Abp.AuditLogging.IP.Location.csproj" />
<Project Path="framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN.Abp.AuditLogging.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN.Abp.Auditing.Application.Contracts.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN.Abp.Auditing.Application.csproj" />
<Project Path="modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN.Abp.Auditing.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/blob-management/">
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Aliyun/LINGYUN.Abp.BlobManagement.Aliyun.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Application.Contracts/LINGYUN.Abp.BlobManagement.Application.Contracts.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Application/LINGYUN.Abp.BlobManagement.Application.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Domain.Shared/LINGYUN.Abp.BlobManagement.Domain.Shared.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Domain/LINGYUN.Abp.BlobManagement.Domain.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.EntityFrameworkCore/LINGYUN.Abp.BlobManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.FileSystem/LINGYUN.Abp.BlobManagement.FileSystem.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.HttpApi.Client/LINGYUN.Abp.BlobManagement.HttpApi.Client.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.HttpApi/LINGYUN.Abp.BlobManagement.HttpApi.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Minio/LINGYUN.Abp.BlobManagement.Minio.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.SettingManagement/LINGYUN.Abp.BlobManagement.SettingManagement.csproj" Id="649cb4c3-e7c9-4736-b254-0899bb26bfcb" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobManagement.Tencent/LINGYUN.Abp.BlobManagement.Tencent.csproj" />
<Project Path="modules/blob-management/LINGYUN.Abp.BlobStoring.BlobManagement/LINGYUN.Abp.BlobStoring.BlobManagement.csproj" />
</Folder>
<Folder Name="/modules/caching/">
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Application.Contracts/LINGYUN.Abp.CachingManagement.Application.Contracts.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Application/LINGYUN.Abp.CachingManagement.Application.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.Domain/LINGYUN.Abp.CachingManagement.Domain.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.HttpApi/LINGYUN.Abp.CachingManagement.HttpApi.csproj" />
<Project Path="modules/caching-management/LINGYUN.Abp.CachingManagement.StackExchangeRedis/LINGYUN.Abp.CachingManagement.StackExchangeRedis.csproj" />
</Folder>
<Folder Name="/modules/data-protection/">
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Application.Contracts/LINGYUN.Abp.DataProtectionManagement.Application.Contracts.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Application/LINGYUN.Abp.DataProtectionManagement.Application.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Domain.Shared/LINGYUN.Abp.DataProtectionManagement.Domain.Shared.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.Domain/LINGYUN.Abp.DataProtectionManagement.Domain.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore/LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/data-protection/LINGYUN.Abp.DataProtectionManagement.HttpApi/LINGYUN.Abp.DataProtectionManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/demo/">
<Project Path="modules/demo/LINGYUN.Abp.Demo.Application.Contracts/LINGYUN.Abp.Demo.Application.Contracts.csproj" />
<Project Path="modules/demo/LINGYUN.Abp.Demo.Application/LINGYUN.Abp.Demo.Application.csproj" />
<Project Path="modules/demo/LINGYUN.Abp.Demo.Domain.Shared/LINGYUN.Abp.Demo.Domain.Shared.csproj" />
<Project Path="modules/demo/LINGYUN.Abp.Demo.Domain/LINGYUN.Abp.Demo.Domain.csproj" />
<Project Path="modules/demo/LINGYUN.Abp.Demo.EntityFrameworkCore/LINGYUN.Abp.Demo.EntityFrameworkCore.csproj" />
<Project Path="modules/demo/LINGYUN.Abp.Demo.HttpApi/LINGYUN.Abp.Demo.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/feature-management/">
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.Application.Contracts/LINGYUN.Abp.FeatureManagement.Application.Contracts.csproj" />
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.Application/LINGYUN.Abp.FeatureManagement.Application.csproj" />
<Project Path="modules/feature-management/LINGYUN.Abp.FeatureManagement.HttpApi/LINGYUN.Abp.FeatureManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/gdpr/">
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Application.Contracts/LINGYUN.Abp.Gdpr.Application.Contracts.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Application/LINGYUN.Abp.Gdpr.Application.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Identity/LINGYUN.Abp.Gdpr.Domain.Identity.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Shared/LINGYUN.Abp.Gdpr.Domain.Shared.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Domain/LINGYUN.Abp.Gdpr.Domain.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.EntityFrameworkCore/LINGYUN.Abp.Gdpr.EntityFrameworkCore.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN.Abp.Gdpr.HttpApi.Client.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi/LINGYUN.Abp.Gdpr.HttpApi.csproj" />
<Project Path="modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj" />
</Folder>
<Folder Name="/modules/identity-server/">
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.Application.Contracts/LINGYUN.Abp.IdentityServer.Application.Contracts.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.Application/LINGYUN.Abp.IdentityServer.Application.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.Domain/LINGYUN.Abp.IdentityServer.Domain.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.EntityFrameworkCore/LINGYUN.Abp.IdentityServer.EntityFrameworkCore.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.HttpApi/LINGYUN.Abp.IdentityServer.HttpApi.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.LinkUser/LINGYUN.Abp.IdentityServer.LinkUser.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.Portal/LINGYUN.Abp.IdentityServer.Portal.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.Session/LINGYUN.Abp.IdentityServer.Session.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN.Abp.IdentityServer.SmsValidator.csproj" />
<Project Path="modules/identityServer/LINGYUN.Abp.IdentityServer.WeChat.Work/LINGYUN.Abp.IdentityServer.WeChat.Work.csproj" />
</Folder>
<Folder Name="/modules/identity/">
<Project Path="modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN.Abp.Identity.Application.Contracts.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN.Abp.Identity.Application.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore.QrCode/LINGYUN.Abp.Identity.AspNetCore.QrCode.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.AspNetCore.Session/LINGYUN.Abp.Identity.AspNetCore.Session.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN.Abp.Identity.Domain.Shared.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Domain/LINGYUN.Abp.Identity.Domain.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.HttpApi/LINGYUN.Abp.Identity.HttpApi.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Notifications/LINGYUN.Abp.Identity.Notifications.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.QrCode/LINGYUN.Abp.Identity.QrCode.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Session.AspNetCore/LINGYUN.Abp.Identity.Session.AspNetCore.csproj" />
<Project Path="modules/identity/LINGYUN.Abp.Identity.Session/LINGYUN.Abp.Identity.Session.csproj" />
</Folder>
<Folder Name="/modules/localization-management/">
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN.Abp.LocalizationManagement.Application.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/localization-management/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/logging/">
<Project Path="framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN.Abp.Logging.Serilog.Elasticsearch.csproj" />
<Project Path="framework/logging/LINGYUN.Abp.Logging/LINGYUN.Abp.Logging.csproj" />
<Project Path="framework/logging/LINGYUN.Abp.Serilog.Enrichers.Application/LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />
<Project Path="framework/logging/LINGYUN.Abp.Serilog.Enrichers.UniqueId/LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" />
</Folder>
<Folder Name="/modules/messages/">
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Application.Contracts/LINGYUN.Abp.MessageService.Application.Contracts.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Application/LINGYUN.Abp.MessageService.Application.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Domain.Shared/LINGYUN.Abp.MessageService.Domain.Shared.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.Domain/LINGYUN.Abp.MessageService.Domain.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.EntityFrameworkCore/LINGYUN.Abp.MessageService.EntityFrameworkCore.csproj" />
<Project Path="modules/realtime-message/LINGYUN.Abp.MessageService.HttpApi/LINGYUN.Abp.MessageService.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/notifications/">
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Application.Contracts/LINGYUN.Abp.Notifications.Application.Contracts.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Application/LINGYUN.Abp.Notifications.Application.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain.Shared/LINGYUN.Abp.Notifications.Domain.Shared.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN.Abp.Notifications.Domain.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.EntityFrameworkCore/LINGYUN.Abp.Notifications.EntityFrameworkCore.csproj" />
<Project Path="modules/realtime-notifications/LINGYUN.Abp.Notifications.HttpApi/LINGYUN.Abp.Notifications.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/openIddict/">
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Application.Contracts/LINGYUN.Abp.OpenIddict.Application.Contracts.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Application/LINGYUN.Abp.OpenIddict.Application.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore.Session/LINGYUN.Abp.OpenIddict.AspNetCore.Session.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.HttpApi/LINGYUN.Abp.OpenIddict.HttpApi.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.LinkUser/LINGYUN.Abp.OpenIddict.LinkUser.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Portal/LINGYUN.Abp.OpenIddict.Portal.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.QrCode/LINGYUN.Abp.OpenIddict.QrCode.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.Sms/LINGYUN.Abp.OpenIddict.Sms.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.WeChat.Work/LINGYUN.Abp.OpenIddict.WeChat.Work.csproj" />
<Project Path="modules/openIddict/LINGYUN.Abp.OpenIddict.WeChat/LINGYUN.Abp.OpenIddict.WeChat.csproj" />
</Folder>
<Folder Name="/modules/permissions-management/">
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Application.Contracts/LINGYUN.Abp.PermissionManagement.Application.Contracts.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Application/LINGYUN.Abp.PermissionManagement.Application.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.Domain.OrganizationUnits/LINGYUN.Abp.PermissionManagement.Domain.OrganizationUnits.csproj" />
<Project Path="modules/permissions-management/LINGYUN.Abp.PermissionManagement.HttpApi/LINGYUN.Abp.PermissionManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/platform/">
<Project Path="modules/platform/LINGYUN.Abp.Emailing.Platform/LINGYUN.Abp.Emailing.Platform.csproj" />
<Project Path="modules/platform/LINGYUN.Abp.Sms.Platform/LINGYUN.Abp.Sms.Platform.csproj" />
<Project Path="modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj" />
<Project Path="modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin5/LINGYUN.Abp.UI.Navigation.VueVbenAdmin5.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN.Platform.Application.Contracts.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Application/LINGYUN.Platform.Application.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN.Platform.Domain.Shared.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Domain/LINGYUN.Platform.Domain.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN.Platform.EntityFrameworkCore.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi.Client/LINGYUN.Platform.HttpApi.Client.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.HttpApi/LINGYUN.Platform.HttpApi.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj" />
<Project Path="modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj" />
</Folder>
<Folder Name="/modules/saas/">
<Project Path="modules/saas/LINGYUN.Abp.Saas.Application.Contracts/LINGYUN.Abp.Saas.Application.Contracts.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Application/LINGYUN.Abp.Saas.Application.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.DbChecker/LINGYUN.Abp.Saas.DbChecker.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN.Abp.Saas.Domain.Shared.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Domain/LINGYUN.Abp.Saas.Domain.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.EntityFrameworkCore/LINGYUN.Abp.Saas.EntityFrameworkCore.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.HttpApi.Client/LINGYUN.Abp.Saas.HttpApi.Client.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.HttpApi/LINGYUN.Abp.Saas.HttpApi.csproj" />
<Project Path="modules/saas/LINGYUN.Abp.Saas.Jobs/LINGYUN.Abp.Saas.Jobs.csproj" />
</Folder>
<Folder Name="/modules/settings/">
<Project Path="modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN.Abp.SettingManagement.Application.csproj" />
<Project Path="modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN.Abp.SettingManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/system-info/">
<Project Path="modules/system-info/LINGYUN.Abp.SystemInfo.HttpApi/LINGYUN.Abp.SystemInfo.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/task-management/">
<Project Path="modules/task-management/LINGYUN.Abp.BackgroundTasks.TaskManagement/LINGYUN.Abp.BackgroundTasks.TaskManagement.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Application.Contracts/LINGYUN.Abp.TaskManagement.Application.Contracts.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN.Abp.TaskManagement.Application.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Domain.Shared/LINGYUN.Abp.TaskManagement.Domain.Shared.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN.Abp.TaskManagement.Domain.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.EntityFrameworkCore/LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.HttpApi.Client/LINGYUN.Abp.TaskManagement.HttpApi.Client.csproj" />
<Project Path="modules/task-management/LINGYUN.Abp.TaskManagement.HttpApi/LINGYUN.Abp.TaskManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/text-templating/">
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Application.Contracts/LINGYUN.Abp.TextTemplating.Application.Contracts.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Application/LINGYUN.Abp.TextTemplating.Application.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Domain.Shared/LINGYUN.Abp.TextTemplating.Domain.Shared.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN.Abp.TextTemplating.Domain.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.EntityFrameworkCore/LINGYUN.Abp.TextTemplating.EntityFrameworkCore.csproj" />
<Project Path="modules/text-templating/LINGYUN.Abp.TextTemplating.HttpApi/LINGYUN.Abp.TextTemplating.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/webhooks/">
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.Core/LINGYUN.Abp.Webhooks.Core.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.EventBus/LINGYUN.Abp.Webhooks.EventBus.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.Identity/LINGYUN.Abp.Webhooks.Identity.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks.Saas/LINGYUN.Abp.Webhooks.Saas.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.Webhooks/LINGYUN.Abp.Webhooks.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN.Abp.WebhooksManagement.Application.Contracts.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN.Abp.WebhooksManagement.Application.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain.Shared/LINGYUN.Abp.WebhooksManagement.Domain.Shared.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN.Abp.WebhooksManagement.Domain.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore/LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore.csproj" />
<Project Path="modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN.Abp.WebhooksManagement.HttpApi.csproj" />
</Folder>
<Folder Name="/modules/workflow/" />
<Folder Name="/modules/workflow/elsa/">
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.BlobStoring/LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN.Abp.Elsa.Activities.Emailing.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.IM/LINGYUN.Abp.Elsa.Activities.IM.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Notifications/LINGYUN.Abp.Elsa.Activities.Notifications.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Sms/LINGYUN.Abp.Elsa.Activities.Sms.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities.Webhooks/LINGYUN.Abp.Elsa.Activities.Webhooks.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN.Abp.Elsa.Activities.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Designer/LINGYUN.Abp.Elsa.Designer.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql/LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql/LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore.SqlServer/LINGYUN.Abp.Elsa.EntityFrameworkCore.SqlServer.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.EntityFrameworkCore/LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa.Server/LINGYUN.Abp.Elsa.Server.csproj" />
<Project Path="modules/elsa/LINGYUN.Abp.Elsa/LINGYUN.Abp.Elsa.csproj" />
</Folder>
<Folder Name="/Solution Items/">
<File Path="../common.props" />
<File Path="../common.secrets.props" />
<File Path="../configureawait.props" />
<File Path="../Directory.Build.props" />
<File Path="../Directory.Packages.props" />
<File Path="../docs/startup-aio-readme.md" />
<File Path="../NuGet.Config" />
<File Path="../README.en.md" />
<File Path="../README.md" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/LINGYUN.Abp.Aliyun.Tests/LINGYUN.Abp.Aliyun.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.IP2Region.Tests/LINGYUN.Abp.IP2Region.Tests.csproj" />
<Project Path="tests/LINGYUN.Abp.TestBase/LINGYUN.Abp.TestsBase.csproj" />
</Folder>
</Solution>

123
aspnet-core/LINGYUN.MicroService.Startup.sln

@ -1,123 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31919.166
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "backend", "backend", "{18C61233-DAE0-4285-AD1F-0928E752FB30}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity-server", "identity-server", "{099F0FD1-645D-4029-8149-46523AD34933}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity-server-api", "identity-server-api", "{BA506EAD-E2DD-4EEA-B993-2AB90F32B8E4}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "realtime", "realtime", "{A3275CEC-C5CB-4F22-875A-8270B5F4D698}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{1D445339-DB00-4A4D-B7C1-6F112A46CFF6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{D425983A-9FCE-41E1-BA09-07EB9355EEEC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.BackendAdmin.HttpApi.Host", "services\LY.MicroService.BackendAdmin.HttpApi.Host\LY.MicroService.BackendAdmin.HttpApi.Host.csproj", "{DCC1CBA7-1783-4022-88AE-FAB123B43277}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.IdentityServer.HttpApi.Host", "services\LY.MicroService.IdentityServer.HttpApi.Host\LY.MicroService.IdentityServer.HttpApi.Host.csproj", "{98F102FA-09B4-4C34-B28D-D172C608897F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.LocalizationManagement.HttpApi.Host", "services\LY.MicroService.LocalizationManagement.HttpApi.Host\LY.MicroService.LocalizationManagement.HttpApi.Host.csproj", "{241680C6-55ED-42DD-ABAB-9CA76CA649A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.PlatformManagement.HttpApi.Host", "services\LY.MicroService.PlatformManagement.HttpApi.Host\LY.MicroService.PlatformManagement.HttpApi.Host.csproj", "{B459FB80-74C6-4988-BE65-B0FE84EF0632}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.RealtimeMessage.HttpApi.Host", "services\LY.MicroService.RealtimeMessage.HttpApi.Host\LY.MicroService.RealtimeMessage.HttpApi.Host.csproj", "{0DBBB371-B1FC-421E-A4FB-900B016AFE6A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.IdentityServer", "services\LY.MicroService.IdentityServer\LY.MicroService.IdentityServer.csproj", "{03A07A13-D9F3-4E70-B4D2-57BA2CF1E8DB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflow", "workflow", "{E47CDAF7-1046-4886-A0CB-ADF9650F8318}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "task-management", "task-management", "{3F453010-BA07-471D-87E5-B12346ED81EF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.TaskManagement.HttpApi.Host", "services\LY.MicroService.TaskManagement.HttpApi.Host\LY.MicroService.TaskManagement.HttpApi.Host.csproj", "{EDE83705-EFEA-46DC-A8EE-68A5D8159B84}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WorkflowManagement.HttpApi.Host", "services\LY.MicroService.WorkflowManagement.HttpApi.Host\LY.MicroService.WorkflowManagement.HttpApi.Host.csproj", "{48F376EC-B951-4123-AF33-54217AD00B96}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "webhook", "webhook", "{E38F0CBE-BCFF-4F75-AA19-1959B7B75EF6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WebhooksManagement.HttpApi.Host", "services\LY.MicroService.WebhooksManagement.HttpApi.Host\LY.MicroService.WebhooksManagement.HttpApi.Host.csproj", "{CDA6B0F4-389E-48C5-99CF-E2F1DB1163C2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gateway", "gateway", "{78413EF4-17A8-49DD-9E4C-D15BF547AEEB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.MicroService.Internal.ApiGateway", "..\gateways\internal\LINGYUN.MicroService.Internal.ApiGateway\src\LINGYUN.MicroService.Internal.ApiGateway\LINGYUN.MicroService.Internal.ApiGateway.csproj", "{068D6BBE-BB98-40FF-84E1-D34166263623}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.ApiGateway", "..\gateways\web\LY.MicroService.ApiGateway\LY.MicroService.ApiGateway.csproj", "{46BC00EE-3265-4B85-819E-0C28F16134C3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "document", "document", "{D70EABBE-BDB5-4FDE-92DC-2EADE17E98D1}"
ProjectSection(SolutionItems) = preProject
..\docs\startup-readme.md = ..\docs\startup-readme.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DCC1CBA7-1783-4022-88AE-FAB123B43277}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DCC1CBA7-1783-4022-88AE-FAB123B43277}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DCC1CBA7-1783-4022-88AE-FAB123B43277}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DCC1CBA7-1783-4022-88AE-FAB123B43277}.Release|Any CPU.Build.0 = Release|Any CPU
{98F102FA-09B4-4C34-B28D-D172C608897F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{98F102FA-09B4-4C34-B28D-D172C608897F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98F102FA-09B4-4C34-B28D-D172C608897F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98F102FA-09B4-4C34-B28D-D172C608897F}.Release|Any CPU.Build.0 = Release|Any CPU
{241680C6-55ED-42DD-ABAB-9CA76CA649A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{241680C6-55ED-42DD-ABAB-9CA76CA649A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{241680C6-55ED-42DD-ABAB-9CA76CA649A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{241680C6-55ED-42DD-ABAB-9CA76CA649A3}.Release|Any CPU.Build.0 = Release|Any CPU
{B459FB80-74C6-4988-BE65-B0FE84EF0632}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B459FB80-74C6-4988-BE65-B0FE84EF0632}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B459FB80-74C6-4988-BE65-B0FE84EF0632}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B459FB80-74C6-4988-BE65-B0FE84EF0632}.Release|Any CPU.Build.0 = Release|Any CPU
{0DBBB371-B1FC-421E-A4FB-900B016AFE6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DBBB371-B1FC-421E-A4FB-900B016AFE6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DBBB371-B1FC-421E-A4FB-900B016AFE6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DBBB371-B1FC-421E-A4FB-900B016AFE6A}.Release|Any CPU.Build.0 = Release|Any CPU
{03A07A13-D9F3-4E70-B4D2-57BA2CF1E8DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03A07A13-D9F3-4E70-B4D2-57BA2CF1E8DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03A07A13-D9F3-4E70-B4D2-57BA2CF1E8DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03A07A13-D9F3-4E70-B4D2-57BA2CF1E8DB}.Release|Any CPU.Build.0 = Release|Any CPU
{EDE83705-EFEA-46DC-A8EE-68A5D8159B84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EDE83705-EFEA-46DC-A8EE-68A5D8159B84}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EDE83705-EFEA-46DC-A8EE-68A5D8159B84}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EDE83705-EFEA-46DC-A8EE-68A5D8159B84}.Release|Any CPU.Build.0 = Release|Any CPU
{48F376EC-B951-4123-AF33-54217AD00B96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48F376EC-B951-4123-AF33-54217AD00B96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48F376EC-B951-4123-AF33-54217AD00B96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48F376EC-B951-4123-AF33-54217AD00B96}.Release|Any CPU.Build.0 = Release|Any CPU
{CDA6B0F4-389E-48C5-99CF-E2F1DB1163C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CDA6B0F4-389E-48C5-99CF-E2F1DB1163C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CDA6B0F4-389E-48C5-99CF-E2F1DB1163C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDA6B0F4-389E-48C5-99CF-E2F1DB1163C2}.Release|Any CPU.Build.0 = Release|Any CPU
{068D6BBE-BB98-40FF-84E1-D34166263623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{068D6BBE-BB98-40FF-84E1-D34166263623}.Debug|Any CPU.Build.0 = Debug|Any CPU
{068D6BBE-BB98-40FF-84E1-D34166263623}.Release|Any CPU.ActiveCfg = Release|Any CPU
{068D6BBE-BB98-40FF-84E1-D34166263623}.Release|Any CPU.Build.0 = Release|Any CPU
{46BC00EE-3265-4B85-819E-0C28F16134C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46BC00EE-3265-4B85-819E-0C28F16134C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46BC00EE-3265-4B85-819E-0C28F16134C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46BC00EE-3265-4B85-819E-0C28F16134C3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{DCC1CBA7-1783-4022-88AE-FAB123B43277} = {18C61233-DAE0-4285-AD1F-0928E752FB30}
{98F102FA-09B4-4C34-B28D-D172C608897F} = {BA506EAD-E2DD-4EEA-B993-2AB90F32B8E4}
{241680C6-55ED-42DD-ABAB-9CA76CA649A3} = {D425983A-9FCE-41E1-BA09-07EB9355EEEC}
{B459FB80-74C6-4988-BE65-B0FE84EF0632} = {1D445339-DB00-4A4D-B7C1-6F112A46CFF6}
{0DBBB371-B1FC-421E-A4FB-900B016AFE6A} = {A3275CEC-C5CB-4F22-875A-8270B5F4D698}
{03A07A13-D9F3-4E70-B4D2-57BA2CF1E8DB} = {099F0FD1-645D-4029-8149-46523AD34933}
{EDE83705-EFEA-46DC-A8EE-68A5D8159B84} = {3F453010-BA07-471D-87E5-B12346ED81EF}
{48F376EC-B951-4123-AF33-54217AD00B96} = {E47CDAF7-1046-4886-A0CB-ADF9650F8318}
{CDA6B0F4-389E-48C5-99CF-E2F1DB1163C2} = {E38F0CBE-BCFF-4F75-AA19-1959B7B75EF6}
{068D6BBE-BB98-40FF-84E1-D34166263623} = {78413EF4-17A8-49DD-9E4C-D15BF547AEEB}
{46BC00EE-3265-4B85-819E-0C28F16134C3} = {78413EF4-17A8-49DD-9E4C-D15BF547AEEB}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A3905D9F-6EF7-4BFD-80B3-E0DD6AA82228}
EndGlobalSection
EndGlobal

578
aspnet-core/LINGYUN.MicroService.TaskManagement.sln

@ -1,578 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11205.157
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{8DA8A2EE-0B26-487E-A6C4-518906E92B1B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C38EB7EF-BAE9-4129-862A-71C652B81775}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{77341F31-F54C-436A-AF8D-F78D91303C45}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Domain.Shared", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain.Shared\LINGYUN.Abp.TaskManagement.Domain.Shared.csproj", "{691CD138-9FFA-4988-BAC4-A32F0DAE1090}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Domain", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain\LINGYUN.Abp.TaskManagement.Domain.csproj", "{8873A651-4F83-43B3-A34E-7AAA8A3ED4CF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Application.Contracts", "modules\task-management\LINGYUN.Abp.TaskManagement.Application.Contracts\LINGYUN.Abp.TaskManagement.Application.Contracts.csproj", "{D5EC4CA0-7E16-4D17-B08E-E162EF332C77}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Application", "modules\task-management\LINGYUN.Abp.TaskManagement.Application\LINGYUN.Abp.TaskManagement.Application.csproj", "{09039DDF-5B0E-4670-8055-CC0BE82D4D2C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.HttpApi", "modules\task-management\LINGYUN.Abp.TaskManagement.HttpApi\LINGYUN.Abp.TaskManagement.HttpApi.csproj", "{283B0039-F67C-41F7-B554-DF5EE9178C4A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.EntityFrameworkCore", "modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj", "{B8AB5E9B-9711-470E-8072-7444579EC5F6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C99728F6-FB3C-4D26-8917-1D30725209B9}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
..\common.props = ..\common.props
..\common.secrets.props = ..\common.secrets.props
..\configureawait.props = ..\configureawait.props
..\Directory.Build.props = ..\Directory.Build.props
..\Directory.Packages.props = ..\Directory.Packages.props
..\NuGet.Config = ..\NuGet.Config
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "provider", "provider", "{385578CC-C0F1-4377-A7A2-682B8F416234}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks", "modules\task-management\LINGYUN.Abp.BackgroundTasks\LINGYUN.Abp.BackgroundTasks.csproj", "{AC0B4342-9C9B-41E6-9646-E505C763EE77}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Quartz", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Quartz\LINGYUN.Abp.BackgroundTasks.Quartz.csproj", "{7051C251-11D0-4971-B13E-F6929AE6DE89}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.TaskManagement.HttpApi.Host", "services\LY.MicroService.TaskManagement.HttpApi.Host\LY.MicroService.TaskManagement.HttpApi.Host.csproj", "{E8022994-A19F-4540-B9D1-7EF4AA85D18A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Abstractions", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Abstractions\LINGYUN.Abp.BackgroundTasks.Abstractions.csproj", "{4A049C32-55F2-4A5F-954A-C8A977C2D87F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Jobs", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Jobs\LINGYUN.Abp.BackgroundTasks.Jobs.csproj", "{4C59F590-AA6C-4C46-8060-DA65D8305980}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.ExceptionHandling", "modules\task-management\LINGYUN.Abp.BackgroundTasks.ExceptionHandling\LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj", "{8507BBFA-FE56-4426-BBFA-C92906CB8407}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.HttpApi.Client", "modules\task-management\LINGYUN.Abp.TaskManagement.HttpApi.Client\LINGYUN.Abp.TaskManagement.HttpApi.Client.csproj", "{56C759D1-6FE6-4111-A2DB-CD65DCE82061}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.TaskManagement", "modules\task-management\LINGYUN.Abp.BackgroundTasks.TaskManagement\LINGYUN.Abp.BackgroundTasks.TaskManagement.csproj", "{7937785C-0D28-46B3-A7E7-0B592821A1F2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.EventBus", "modules\task-management\LINGYUN.Abp.BackgroundTasks.EventBus\LINGYUN.Abp.BackgroundTasks.EventBus.csproj", "{D17DEF79-635B-478D-89D7-32EAE616869A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.DistributedLocking", "modules\task-management\LINGYUN.Abp.BackgroundTasks.DistributedLocking\LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj", "{A817B7B7-A225-404A-A301-B42D400DE4B7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Activities", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Activities\LINGYUN.Abp.BackgroundTasks.Activities.csproj", "{3D0A1901-36FB-4DA2-9F8D-05308598E98C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "extend-jobs", "extend-jobs", "{A9536BD2-2573-44CA-B033-DC16B7E345E5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Jobs", "modules\task-management\LINGYUN.Abp.Notifications.Jobs\LINGYUN.Abp.Notifications.Jobs.csproj", "{17D7ED0F-E789-4637-9B06-57DF693C6E1E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Notifications", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Notifications\LINGYUN.Abp.BackgroundTasks.Notifications.csproj", "{1978B64C-B2F5-4F68-9E5C-B45F948E7155}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "realtime", "realtime", "{18918B94-BB48-48F3-874D-B91B0252440A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime", "framework\common\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj", "{23620224-93A1-4A88-93B7-23D37929FCF7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications", "modules\realtime-notifications\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj", "{09F7171C-6DA1-4466-AB4A-DC92E93368EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dapr", "dapr", "{FA5E30C9-05E3-4E35-AEDD-7DC5534E3A01}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr", "framework\dapr\LINGYUN.Abp.Dapr\LINGYUN.Abp.Dapr.csproj", "{2FA23894-E598-4896-A336-3E7C682699D9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client", "framework\dapr\LINGYUN.Abp.Dapr.Client\LINGYUN.Abp.Dapr.Client.csproj", "{194DAB61-BC3C-4003-BFF0-C87763E7B8B0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Core", "modules\realtime-notifications\LINGYUN.Abp.Notifications.Core\LINGYUN.Abp.Notifications.Core.csproj", "{DD51A1AE-830F-4909-A729-7EBC398B17AD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "exten-plugin", "exten-plugin", "{B38D2141-AC0F-4F4A-9315-4292E3856C15}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Linq.Dynamic.Queryable", "framework\dynamic-queryable\LINGYUN.Linq.Dynamic.Queryable\LINGYUN.Linq.Dynamic.Queryable.csproj", "{3EE8383C-6F25-4BCD-8852-B23D1C864324}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dynamic.Queryable.Application.Contracts", "framework\dynamic-queryable\LINGYUN.Abp.Dynamic.Queryable.Application.Contracts\LINGYUN.Abp.Dynamic.Queryable.Application.Contracts.csproj", "{B54F200C-D648-477B-BE39-B40A1D956F13}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dynamic.Queryable.Application", "framework\dynamic-queryable\LINGYUN.Abp.Dynamic.Queryable.Application\LINGYUN.Abp.Dynamic.Queryable.Application.csproj", "{FEC5FD25-9B26-4245-88D8-7621B26C7C3A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dynamic.Queryable.HttpApi", "framework\dynamic-queryable\LINGYUN.Abp.Dynamic.Queryable.HttpApi\LINGYUN.Abp.Dynamic.Queryable.HttpApi.csproj", "{DF963ABB-E713-49E9-A03C-DEB431E369DF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations", "{820A8FA4-17C4-44DF-8C31-9F211D00F790}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.TaskManagement.DbMigrator", "migrations\LY.MicroService.TaskManagement.DbMigrator\LY.MicroService.TaskManagement.DbMigrator.csproj", "{52FD8F39-0AB6-4C51-A584-187C219AC8B5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.TaskManagement.EntityFrameworkCore", "migrations\LY.MicroService.TaskManagement.EntityFrameworkCore\LY.MicroService.TaskManagement.EntityFrameworkCore.csproj", "{58F51875-6D2C-4A65-9DD3-8BC004B39B72}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elasticsearch", "elasticsearch", "{DC7ACD8B-044B-435D-94C5-06C75A8BD026}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elasticsearch", "framework\elasticsearch\LINGYUN.Abp.Elasticsearch\LINGYUN.Abp.Elasticsearch.csproj", "{167CE485-72D3-4E95-80B1-00430CBB8888}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elasticsearch.Jobs", "modules\task-management\LINGYUN.Abp.Elasticsearch.Jobs\LINGYUN.Abp.Elasticsearch.Jobs.csproj", "{798FEFB4-B65F-4B6C-A36D-611DD71A48AB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{5A41C31A-B966-418B-B446-5BA1D7E61A62}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Data.DbMigrator", "framework\common\LINGYUN.Abp.Data.DbMigrator\LINGYUN.Abp.Data.DbMigrator.csproj", "{6A82AEB7-A048-420A-ACFB-94DC52ADADDC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging", "framework\auditing\LINGYUN.Abp.AuditLogging\LINGYUN.Abp.AuditLogging.csproj", "{8EB3C845-BF73-446D-8C5D-FE855CFF2A90}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging.Elasticsearch", "framework\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj", "{8729BEEB-CABF-4B3B-8228-8AEE2E760796}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Authorization.OrganizationUnits", "framework\authorization\LINGYUN.Abp.Authorization.OrganizationUnits\LINGYUN.Abp.Authorization.OrganizationUnits.csproj", "{AC15003C-473B-4049-B268-DE02ECD58097}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "framework\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{AC99FAF5-6321-447A-BB13-41CAAEA3E459}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "framework\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{3FDE2E70-EA02-4296-BA1A-ADABA5054DD1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "framework\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{F72E1F2E-0064-4159-9327-884D7CB83D48}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Wrapper", "framework\common\LINGYUN.Abp.Wrapper\LINGYUN.Abp.Wrapper.csproj", "{0979BDAB-B4D3-48DD-88EC-64AED972B8FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Http.Client.Wrapper", "framework\common\LINGYUN.Abp.Http.Client.Wrapper\LINGYUN.Abp.Http.Client.Wrapper.csproj", "{83FCF202-0625-46BB-96CD-4D9D684508FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{6BAABDAC-C172-419D-A75D-E7823C86E871}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.CultureMap", "framework\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj", "{988BDB8E-FD0D-457B-8B45-CFFD70CCB203}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.Application", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj", "{CD88BE12-F08D-40AB-9D13-63D6DC5B9DAE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.UniqueId", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj", "{97271BF5-D965-4EE1-A2DD-58ADD35B529D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Wrapper", "framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj", "{CA5D2340-00EF-4248-A288-A9244A1C6A61}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain.Shared", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj", "{DC42B5FE-C5EA-49A7-A92A-3F19D82009E3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj", "{469D4CA9-D6C8-4A47-8795-31D5AA81B4AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj", "{6E030005-EEA7-480E-9E68-4FC74CFCAF42}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.Editions", "framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj", "{B3E81983-629A-4380-B4C2-50E247916F5E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "framework\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{088064DD-D141-4E9A-B185-E332920A323A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Security", "framework\security\LINGYUN.Abp.Security\LINGYUN.Abp.Security.csproj", "{BEE1B759-5B65-481B-928B-8BC6A89A7C13}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{F36E71F7-B05F-4513-A923-81E2A7474EAE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain.Shared", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain.Shared\LINGYUN.Abp.OssManagement.Domain.Shared.csproj", "{94D1C512-09E4-4A68-8989-6DB49FEABA67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{96B4D255-BB21-4BAF-902A-ADE3F25A44C2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.HttpApi.Client", "modules\oss-management\LINGYUN.Abp.OssManagement.HttpApi.Client\LINGYUN.Abp.OssManagement.HttpApi.Client.csproj", "{44778F3C-7610-4F1C-A2B6-DF8925B1CBE0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Tests", "tests\LINGYUN.Abp.BackgroundTasks.Tests\LINGYUN.Abp.BackgroundTasks.Tests.csproj", "{A8EFC95D-6700-4840-A7FD-1F5BF4D0C71C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TestsBase", "tests\LINGYUN.Abp.TestBase\LINGYUN.Abp.TestsBase.csproj", "{6CC06BD8-FA30-45E0-BD3A-25FF39906EF5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Activities.Tests", "tests\LINGYUN.Abp.BackgroundTasks.Activities.Tests\LINGYUN.Abp.BackgroundTasks.Activities.Tests.csproj", "{3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{34042B8E-B896-4E5E-A243-31E2802264CE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Domain.Shared", "modules\platform\LINGYUN.Platform.Domain.Shared\LINGYUN.Platform.Domain.Shared.csproj", "{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Application.Contracts", "modules\platform\LINGYUN.Platform.Application.Contracts\LINGYUN.Platform.Application.Contracts.csproj", "{16C5E2EC-7A8F-2697-F611-0F2C22087192}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.HttpApi.Client", "modules\platform\LINGYUN.Platform.HttpApi.Client\LINGYUN.Platform.HttpApi.Client.csproj", "{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Emailing.Platform", "modules\platform\LINGYUN.Abp.Emailing.Platform\LINGYUN.Abp.Emailing.Platform.csproj", "{8BAB6A91-865C-A599-BE2A-7C487129D83A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Sms.Platform", "modules\platform\LINGYUN.Abp.Sms.Platform\LINGYUN.Abp.Sms.Platform.csproj", "{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.SkyWalking", "framework\telemetry\LINGYUN.Abp.Telemetry.SkyWalking\LINGYUN.Abp.Telemetry.SkyWalking.csproj", "{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.MySqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.MySqlInstaller\LINGYUN.Abp.Quartz.MySqlInstaller.csproj", "{B6452D3F-E58C-C433-E52A-F65EE2657E01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.SqlServerInstaller", "modules\task-management\LINGYUN.Abp.Quartz.SqlServerInstaller\LINGYUN.Abp.Quartz.SqlServerInstaller.csproj", "{D613F393-9CEE-2D3B-33C9-90630F8348E7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.SqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.SqlInstaller\LINGYUN.Abp.Quartz.SqlInstaller.csproj", "{0EEA73CA-D8DD-F044-045D-F070F8831E26}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "saas", "saas", "{DE7B8B71-635D-4113-AA49-B218D6998CEC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Saas.Domain.Shared", "modules\saas\LINGYUN.Abp.Saas.Domain.Shared\LINGYUN.Abp.Saas.Domain.Shared.csproj", "{1CC72170-6771-46A2-CDE4-57D826E3C841}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Saas.Domain", "modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN.Abp.Saas.Domain.csproj", "{618C7EAF-8D6C-50B5-84E4-AE733CEA4A8C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Saas.EntityFrameworkCore", "modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj", "{F58A7141-AC0D-26EC-F22A-DF0DB1BA6955}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.MultiTenancy.Saas", "modules\saas\LINGYUN.Abp.MultiTenancy.Saas\LINGYUN.Abp.MultiTenancy.Saas.csproj", "{E09374FE-6B13-D69E-B171-94C63E6B80E5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.OpenTelemetry", "framework\telemetry\LINGYUN.Abp.Telemetry.OpenTelemetry\LINGYUN.Abp.Telemetry.OpenTelemetry.csproj", "{164E4514-4E84-F13A-E24E-2A743753CDB3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.PostgresSqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.PostgresSqlInstaller\LINGYUN.Abp.Quartz.PostgresSqlInstaller.csproj", "{CD7B8501-57B7-6C0E-472F-4E9B894ED6C2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{691CD138-9FFA-4988-BAC4-A32F0DAE1090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{691CD138-9FFA-4988-BAC4-A32F0DAE1090}.Debug|Any CPU.Build.0 = Debug|Any CPU
{691CD138-9FFA-4988-BAC4-A32F0DAE1090}.Release|Any CPU.ActiveCfg = Release|Any CPU
{691CD138-9FFA-4988-BAC4-A32F0DAE1090}.Release|Any CPU.Build.0 = Release|Any CPU
{8873A651-4F83-43B3-A34E-7AAA8A3ED4CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8873A651-4F83-43B3-A34E-7AAA8A3ED4CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8873A651-4F83-43B3-A34E-7AAA8A3ED4CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8873A651-4F83-43B3-A34E-7AAA8A3ED4CF}.Release|Any CPU.Build.0 = Release|Any CPU
{D5EC4CA0-7E16-4D17-B08E-E162EF332C77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5EC4CA0-7E16-4D17-B08E-E162EF332C77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5EC4CA0-7E16-4D17-B08E-E162EF332C77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5EC4CA0-7E16-4D17-B08E-E162EF332C77}.Release|Any CPU.Build.0 = Release|Any CPU
{09039DDF-5B0E-4670-8055-CC0BE82D4D2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09039DDF-5B0E-4670-8055-CC0BE82D4D2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09039DDF-5B0E-4670-8055-CC0BE82D4D2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09039DDF-5B0E-4670-8055-CC0BE82D4D2C}.Release|Any CPU.Build.0 = Release|Any CPU
{283B0039-F67C-41F7-B554-DF5EE9178C4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{283B0039-F67C-41F7-B554-DF5EE9178C4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{283B0039-F67C-41F7-B554-DF5EE9178C4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{283B0039-F67C-41F7-B554-DF5EE9178C4A}.Release|Any CPU.Build.0 = Release|Any CPU
{B8AB5E9B-9711-470E-8072-7444579EC5F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8AB5E9B-9711-470E-8072-7444579EC5F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8AB5E9B-9711-470E-8072-7444579EC5F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8AB5E9B-9711-470E-8072-7444579EC5F6}.Release|Any CPU.Build.0 = Release|Any CPU
{AC0B4342-9C9B-41E6-9646-E505C763EE77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC0B4342-9C9B-41E6-9646-E505C763EE77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC0B4342-9C9B-41E6-9646-E505C763EE77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC0B4342-9C9B-41E6-9646-E505C763EE77}.Release|Any CPU.Build.0 = Release|Any CPU
{7051C251-11D0-4971-B13E-F6929AE6DE89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7051C251-11D0-4971-B13E-F6929AE6DE89}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7051C251-11D0-4971-B13E-F6929AE6DE89}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7051C251-11D0-4971-B13E-F6929AE6DE89}.Release|Any CPU.Build.0 = Release|Any CPU
{E8022994-A19F-4540-B9D1-7EF4AA85D18A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8022994-A19F-4540-B9D1-7EF4AA85D18A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8022994-A19F-4540-B9D1-7EF4AA85D18A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8022994-A19F-4540-B9D1-7EF4AA85D18A}.Release|Any CPU.Build.0 = Release|Any CPU
{4A049C32-55F2-4A5F-954A-C8A977C2D87F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A049C32-55F2-4A5F-954A-C8A977C2D87F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A049C32-55F2-4A5F-954A-C8A977C2D87F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A049C32-55F2-4A5F-954A-C8A977C2D87F}.Release|Any CPU.Build.0 = Release|Any CPU
{4C59F590-AA6C-4C46-8060-DA65D8305980}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C59F590-AA6C-4C46-8060-DA65D8305980}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C59F590-AA6C-4C46-8060-DA65D8305980}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C59F590-AA6C-4C46-8060-DA65D8305980}.Release|Any CPU.Build.0 = Release|Any CPU
{8507BBFA-FE56-4426-BBFA-C92906CB8407}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8507BBFA-FE56-4426-BBFA-C92906CB8407}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8507BBFA-FE56-4426-BBFA-C92906CB8407}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8507BBFA-FE56-4426-BBFA-C92906CB8407}.Release|Any CPU.Build.0 = Release|Any CPU
{56C759D1-6FE6-4111-A2DB-CD65DCE82061}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{56C759D1-6FE6-4111-A2DB-CD65DCE82061}.Debug|Any CPU.Build.0 = Debug|Any CPU
{56C759D1-6FE6-4111-A2DB-CD65DCE82061}.Release|Any CPU.ActiveCfg = Release|Any CPU
{56C759D1-6FE6-4111-A2DB-CD65DCE82061}.Release|Any CPU.Build.0 = Release|Any CPU
{7937785C-0D28-46B3-A7E7-0B592821A1F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7937785C-0D28-46B3-A7E7-0B592821A1F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7937785C-0D28-46B3-A7E7-0B592821A1F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7937785C-0D28-46B3-A7E7-0B592821A1F2}.Release|Any CPU.Build.0 = Release|Any CPU
{D17DEF79-635B-478D-89D7-32EAE616869A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D17DEF79-635B-478D-89D7-32EAE616869A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D17DEF79-635B-478D-89D7-32EAE616869A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D17DEF79-635B-478D-89D7-32EAE616869A}.Release|Any CPU.Build.0 = Release|Any CPU
{A817B7B7-A225-404A-A301-B42D400DE4B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A817B7B7-A225-404A-A301-B42D400DE4B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A817B7B7-A225-404A-A301-B42D400DE4B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A817B7B7-A225-404A-A301-B42D400DE4B7}.Release|Any CPU.Build.0 = Release|Any CPU
{3D0A1901-36FB-4DA2-9F8D-05308598E98C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D0A1901-36FB-4DA2-9F8D-05308598E98C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D0A1901-36FB-4DA2-9F8D-05308598E98C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D0A1901-36FB-4DA2-9F8D-05308598E98C}.Release|Any CPU.Build.0 = Release|Any CPU
{17D7ED0F-E789-4637-9B06-57DF693C6E1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17D7ED0F-E789-4637-9B06-57DF693C6E1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17D7ED0F-E789-4637-9B06-57DF693C6E1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17D7ED0F-E789-4637-9B06-57DF693C6E1E}.Release|Any CPU.Build.0 = Release|Any CPU
{1978B64C-B2F5-4F68-9E5C-B45F948E7155}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1978B64C-B2F5-4F68-9E5C-B45F948E7155}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1978B64C-B2F5-4F68-9E5C-B45F948E7155}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1978B64C-B2F5-4F68-9E5C-B45F948E7155}.Release|Any CPU.Build.0 = Release|Any CPU
{23620224-93A1-4A88-93B7-23D37929FCF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23620224-93A1-4A88-93B7-23D37929FCF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23620224-93A1-4A88-93B7-23D37929FCF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{23620224-93A1-4A88-93B7-23D37929FCF7}.Release|Any CPU.Build.0 = Release|Any CPU
{09F7171C-6DA1-4466-AB4A-DC92E93368EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09F7171C-6DA1-4466-AB4A-DC92E93368EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09F7171C-6DA1-4466-AB4A-DC92E93368EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09F7171C-6DA1-4466-AB4A-DC92E93368EC}.Release|Any CPU.Build.0 = Release|Any CPU
{2FA23894-E598-4896-A336-3E7C682699D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FA23894-E598-4896-A336-3E7C682699D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FA23894-E598-4896-A336-3E7C682699D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FA23894-E598-4896-A336-3E7C682699D9}.Release|Any CPU.Build.0 = Release|Any CPU
{194DAB61-BC3C-4003-BFF0-C87763E7B8B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{194DAB61-BC3C-4003-BFF0-C87763E7B8B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{194DAB61-BC3C-4003-BFF0-C87763E7B8B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{194DAB61-BC3C-4003-BFF0-C87763E7B8B0}.Release|Any CPU.Build.0 = Release|Any CPU
{DD51A1AE-830F-4909-A729-7EBC398B17AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD51A1AE-830F-4909-A729-7EBC398B17AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD51A1AE-830F-4909-A729-7EBC398B17AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD51A1AE-830F-4909-A729-7EBC398B17AD}.Release|Any CPU.Build.0 = Release|Any CPU
{3EE8383C-6F25-4BCD-8852-B23D1C864324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EE8383C-6F25-4BCD-8852-B23D1C864324}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EE8383C-6F25-4BCD-8852-B23D1C864324}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EE8383C-6F25-4BCD-8852-B23D1C864324}.Release|Any CPU.Build.0 = Release|Any CPU
{B54F200C-D648-477B-BE39-B40A1D956F13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B54F200C-D648-477B-BE39-B40A1D956F13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B54F200C-D648-477B-BE39-B40A1D956F13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B54F200C-D648-477B-BE39-B40A1D956F13}.Release|Any CPU.Build.0 = Release|Any CPU
{FEC5FD25-9B26-4245-88D8-7621B26C7C3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FEC5FD25-9B26-4245-88D8-7621B26C7C3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FEC5FD25-9B26-4245-88D8-7621B26C7C3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FEC5FD25-9B26-4245-88D8-7621B26C7C3A}.Release|Any CPU.Build.0 = Release|Any CPU
{DF963ABB-E713-49E9-A03C-DEB431E369DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF963ABB-E713-49E9-A03C-DEB431E369DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF963ABB-E713-49E9-A03C-DEB431E369DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF963ABB-E713-49E9-A03C-DEB431E369DF}.Release|Any CPU.Build.0 = Release|Any CPU
{52FD8F39-0AB6-4C51-A584-187C219AC8B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52FD8F39-0AB6-4C51-A584-187C219AC8B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52FD8F39-0AB6-4C51-A584-187C219AC8B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52FD8F39-0AB6-4C51-A584-187C219AC8B5}.Release|Any CPU.Build.0 = Release|Any CPU
{58F51875-6D2C-4A65-9DD3-8BC004B39B72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58F51875-6D2C-4A65-9DD3-8BC004B39B72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58F51875-6D2C-4A65-9DD3-8BC004B39B72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58F51875-6D2C-4A65-9DD3-8BC004B39B72}.Release|Any CPU.Build.0 = Release|Any CPU
{167CE485-72D3-4E95-80B1-00430CBB8888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{167CE485-72D3-4E95-80B1-00430CBB8888}.Debug|Any CPU.Build.0 = Debug|Any CPU
{167CE485-72D3-4E95-80B1-00430CBB8888}.Release|Any CPU.ActiveCfg = Release|Any CPU
{167CE485-72D3-4E95-80B1-00430CBB8888}.Release|Any CPU.Build.0 = Release|Any CPU
{798FEFB4-B65F-4B6C-A36D-611DD71A48AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{798FEFB4-B65F-4B6C-A36D-611DD71A48AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{798FEFB4-B65F-4B6C-A36D-611DD71A48AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{798FEFB4-B65F-4B6C-A36D-611DD71A48AB}.Release|Any CPU.Build.0 = Release|Any CPU
{6A82AEB7-A048-420A-ACFB-94DC52ADADDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6A82AEB7-A048-420A-ACFB-94DC52ADADDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A82AEB7-A048-420A-ACFB-94DC52ADADDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A82AEB7-A048-420A-ACFB-94DC52ADADDC}.Release|Any CPU.Build.0 = Release|Any CPU
{8EB3C845-BF73-446D-8C5D-FE855CFF2A90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EB3C845-BF73-446D-8C5D-FE855CFF2A90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EB3C845-BF73-446D-8C5D-FE855CFF2A90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EB3C845-BF73-446D-8C5D-FE855CFF2A90}.Release|Any CPU.Build.0 = Release|Any CPU
{8729BEEB-CABF-4B3B-8228-8AEE2E760796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8729BEEB-CABF-4B3B-8228-8AEE2E760796}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8729BEEB-CABF-4B3B-8228-8AEE2E760796}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8729BEEB-CABF-4B3B-8228-8AEE2E760796}.Release|Any CPU.Build.0 = Release|Any CPU
{AC15003C-473B-4049-B268-DE02ECD58097}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC15003C-473B-4049-B268-DE02ECD58097}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC15003C-473B-4049-B268-DE02ECD58097}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC15003C-473B-4049-B268-DE02ECD58097}.Release|Any CPU.Build.0 = Release|Any CPU
{AC99FAF5-6321-447A-BB13-41CAAEA3E459}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC99FAF5-6321-447A-BB13-41CAAEA3E459}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC99FAF5-6321-447A-BB13-41CAAEA3E459}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC99FAF5-6321-447A-BB13-41CAAEA3E459}.Release|Any CPU.Build.0 = Release|Any CPU
{3FDE2E70-EA02-4296-BA1A-ADABA5054DD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3FDE2E70-EA02-4296-BA1A-ADABA5054DD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3FDE2E70-EA02-4296-BA1A-ADABA5054DD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3FDE2E70-EA02-4296-BA1A-ADABA5054DD1}.Release|Any CPU.Build.0 = Release|Any CPU
{F72E1F2E-0064-4159-9327-884D7CB83D48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F72E1F2E-0064-4159-9327-884D7CB83D48}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F72E1F2E-0064-4159-9327-884D7CB83D48}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F72E1F2E-0064-4159-9327-884D7CB83D48}.Release|Any CPU.Build.0 = Release|Any CPU
{0979BDAB-B4D3-48DD-88EC-64AED972B8FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0979BDAB-B4D3-48DD-88EC-64AED972B8FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0979BDAB-B4D3-48DD-88EC-64AED972B8FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0979BDAB-B4D3-48DD-88EC-64AED972B8FC}.Release|Any CPU.Build.0 = Release|Any CPU
{83FCF202-0625-46BB-96CD-4D9D684508FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83FCF202-0625-46BB-96CD-4D9D684508FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83FCF202-0625-46BB-96CD-4D9D684508FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83FCF202-0625-46BB-96CD-4D9D684508FC}.Release|Any CPU.Build.0 = Release|Any CPU
{6BAABDAC-C172-419D-A75D-E7823C86E871}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6BAABDAC-C172-419D-A75D-E7823C86E871}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6BAABDAC-C172-419D-A75D-E7823C86E871}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6BAABDAC-C172-419D-A75D-E7823C86E871}.Release|Any CPU.Build.0 = Release|Any CPU
{988BDB8E-FD0D-457B-8B45-CFFD70CCB203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{988BDB8E-FD0D-457B-8B45-CFFD70CCB203}.Debug|Any CPU.Build.0 = Debug|Any CPU
{988BDB8E-FD0D-457B-8B45-CFFD70CCB203}.Release|Any CPU.ActiveCfg = Release|Any CPU
{988BDB8E-FD0D-457B-8B45-CFFD70CCB203}.Release|Any CPU.Build.0 = Release|Any CPU
{CD88BE12-F08D-40AB-9D13-63D6DC5B9DAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD88BE12-F08D-40AB-9D13-63D6DC5B9DAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CD88BE12-F08D-40AB-9D13-63D6DC5B9DAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD88BE12-F08D-40AB-9D13-63D6DC5B9DAE}.Release|Any CPU.Build.0 = Release|Any CPU
{97271BF5-D965-4EE1-A2DD-58ADD35B529D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97271BF5-D965-4EE1-A2DD-58ADD35B529D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{97271BF5-D965-4EE1-A2DD-58ADD35B529D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97271BF5-D965-4EE1-A2DD-58ADD35B529D}.Release|Any CPU.Build.0 = Release|Any CPU
{CA5D2340-00EF-4248-A288-A9244A1C6A61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA5D2340-00EF-4248-A288-A9244A1C6A61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA5D2340-00EF-4248-A288-A9244A1C6A61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA5D2340-00EF-4248-A288-A9244A1C6A61}.Release|Any CPU.Build.0 = Release|Any CPU
{DC42B5FE-C5EA-49A7-A92A-3F19D82009E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC42B5FE-C5EA-49A7-A92A-3F19D82009E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC42B5FE-C5EA-49A7-A92A-3F19D82009E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC42B5FE-C5EA-49A7-A92A-3F19D82009E3}.Release|Any CPU.Build.0 = Release|Any CPU
{469D4CA9-D6C8-4A47-8795-31D5AA81B4AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{469D4CA9-D6C8-4A47-8795-31D5AA81B4AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{469D4CA9-D6C8-4A47-8795-31D5AA81B4AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{469D4CA9-D6C8-4A47-8795-31D5AA81B4AD}.Release|Any CPU.Build.0 = Release|Any CPU
{6E030005-EEA7-480E-9E68-4FC74CFCAF42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E030005-EEA7-480E-9E68-4FC74CFCAF42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E030005-EEA7-480E-9E68-4FC74CFCAF42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E030005-EEA7-480E-9E68-4FC74CFCAF42}.Release|Any CPU.Build.0 = Release|Any CPU
{B3E81983-629A-4380-B4C2-50E247916F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B3E81983-629A-4380-B4C2-50E247916F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B3E81983-629A-4380-B4C2-50E247916F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B3E81983-629A-4380-B4C2-50E247916F5E}.Release|Any CPU.Build.0 = Release|Any CPU
{088064DD-D141-4E9A-B185-E332920A323A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{088064DD-D141-4E9A-B185-E332920A323A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{088064DD-D141-4E9A-B185-E332920A323A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{088064DD-D141-4E9A-B185-E332920A323A}.Release|Any CPU.Build.0 = Release|Any CPU
{BEE1B759-5B65-481B-928B-8BC6A89A7C13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BEE1B759-5B65-481B-928B-8BC6A89A7C13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BEE1B759-5B65-481B-928B-8BC6A89A7C13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BEE1B759-5B65-481B-928B-8BC6A89A7C13}.Release|Any CPU.Build.0 = Release|Any CPU
{94D1C512-09E4-4A68-8989-6DB49FEABA67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94D1C512-09E4-4A68-8989-6DB49FEABA67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94D1C512-09E4-4A68-8989-6DB49FEABA67}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94D1C512-09E4-4A68-8989-6DB49FEABA67}.Release|Any CPU.Build.0 = Release|Any CPU
{96B4D255-BB21-4BAF-902A-ADE3F25A44C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96B4D255-BB21-4BAF-902A-ADE3F25A44C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96B4D255-BB21-4BAF-902A-ADE3F25A44C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96B4D255-BB21-4BAF-902A-ADE3F25A44C2}.Release|Any CPU.Build.0 = Release|Any CPU
{44778F3C-7610-4F1C-A2B6-DF8925B1CBE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44778F3C-7610-4F1C-A2B6-DF8925B1CBE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44778F3C-7610-4F1C-A2B6-DF8925B1CBE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44778F3C-7610-4F1C-A2B6-DF8925B1CBE0}.Release|Any CPU.Build.0 = Release|Any CPU
{A8EFC95D-6700-4840-A7FD-1F5BF4D0C71C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8EFC95D-6700-4840-A7FD-1F5BF4D0C71C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8EFC95D-6700-4840-A7FD-1F5BF4D0C71C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8EFC95D-6700-4840-A7FD-1F5BF4D0C71C}.Release|Any CPU.Build.0 = Release|Any CPU
{6CC06BD8-FA30-45E0-BD3A-25FF39906EF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CC06BD8-FA30-45E0-BD3A-25FF39906EF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CC06BD8-FA30-45E0-BD3A-25FF39906EF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CC06BD8-FA30-45E0-BD3A-25FF39906EF5}.Release|Any CPU.Build.0 = Release|Any CPU
{3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07}.Release|Any CPU.Build.0 = Release|Any CPU
{34042B8E-B896-4E5E-A243-31E2802264CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34042B8E-B896-4E5E-A243-31E2802264CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34042B8E-B896-4E5E-A243-31E2802264CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34042B8E-B896-4E5E-A243-31E2802264CE}.Release|Any CPU.Build.0 = Release|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.Build.0 = Release|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.Build.0 = Release|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.Build.0 = Release|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.Build.0 = Release|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.Build.0 = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.Build.0 = Release|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Release|Any CPU.Build.0 = Release|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Release|Any CPU.Build.0 = Release|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Release|Any CPU.Build.0 = Release|Any CPU
{1CC72170-6771-46A2-CDE4-57D826E3C841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1CC72170-6771-46A2-CDE4-57D826E3C841}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CC72170-6771-46A2-CDE4-57D826E3C841}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CC72170-6771-46A2-CDE4-57D826E3C841}.Release|Any CPU.Build.0 = Release|Any CPU
{618C7EAF-8D6C-50B5-84E4-AE733CEA4A8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{618C7EAF-8D6C-50B5-84E4-AE733CEA4A8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{618C7EAF-8D6C-50B5-84E4-AE733CEA4A8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{618C7EAF-8D6C-50B5-84E4-AE733CEA4A8C}.Release|Any CPU.Build.0 = Release|Any CPU
{F58A7141-AC0D-26EC-F22A-DF0DB1BA6955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F58A7141-AC0D-26EC-F22A-DF0DB1BA6955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F58A7141-AC0D-26EC-F22A-DF0DB1BA6955}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F58A7141-AC0D-26EC-F22A-DF0DB1BA6955}.Release|Any CPU.Build.0 = Release|Any CPU
{E09374FE-6B13-D69E-B171-94C63E6B80E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E09374FE-6B13-D69E-B171-94C63E6B80E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E09374FE-6B13-D69E-B171-94C63E6B80E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E09374FE-6B13-D69E-B171-94C63E6B80E5}.Release|Any CPU.Build.0 = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.Build.0 = Release|Any CPU
{CD7B8501-57B7-6C0E-472F-4E9B894ED6C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CD7B8501-57B7-6C0E-472F-4E9B894ED6C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CD7B8501-57B7-6C0E-472F-4E9B894ED6C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD7B8501-57B7-6C0E-472F-4E9B894ED6C2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{691CD138-9FFA-4988-BAC4-A32F0DAE1090} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{8873A651-4F83-43B3-A34E-7AAA8A3ED4CF} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{D5EC4CA0-7E16-4D17-B08E-E162EF332C77} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{09039DDF-5B0E-4670-8055-CC0BE82D4D2C} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{283B0039-F67C-41F7-B554-DF5EE9178C4A} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{B8AB5E9B-9711-470E-8072-7444579EC5F6} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{AC0B4342-9C9B-41E6-9646-E505C763EE77} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{7051C251-11D0-4971-B13E-F6929AE6DE89} = {385578CC-C0F1-4377-A7A2-682B8F416234}
{E8022994-A19F-4540-B9D1-7EF4AA85D18A} = {8DA8A2EE-0B26-487E-A6C4-518906E92B1B}
{4A049C32-55F2-4A5F-954A-C8A977C2D87F} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{4C59F590-AA6C-4C46-8060-DA65D8305980} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{8507BBFA-FE56-4426-BBFA-C92906CB8407} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{56C759D1-6FE6-4111-A2DB-CD65DCE82061} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{7937785C-0D28-46B3-A7E7-0B592821A1F2} = {385578CC-C0F1-4377-A7A2-682B8F416234}
{D17DEF79-635B-478D-89D7-32EAE616869A} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{A817B7B7-A225-404A-A301-B42D400DE4B7} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{3D0A1901-36FB-4DA2-9F8D-05308598E98C} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{17D7ED0F-E789-4637-9B06-57DF693C6E1E} = {A9536BD2-2573-44CA-B033-DC16B7E345E5}
{1978B64C-B2F5-4F68-9E5C-B45F948E7155} = {C38EB7EF-BAE9-4129-862A-71C652B81775}
{23620224-93A1-4A88-93B7-23D37929FCF7} = {18918B94-BB48-48F3-874D-B91B0252440A}
{09F7171C-6DA1-4466-AB4A-DC92E93368EC} = {18918B94-BB48-48F3-874D-B91B0252440A}
{2FA23894-E598-4896-A336-3E7C682699D9} = {FA5E30C9-05E3-4E35-AEDD-7DC5534E3A01}
{194DAB61-BC3C-4003-BFF0-C87763E7B8B0} = {FA5E30C9-05E3-4E35-AEDD-7DC5534E3A01}
{DD51A1AE-830F-4909-A729-7EBC398B17AD} = {18918B94-BB48-48F3-874D-B91B0252440A}
{3EE8383C-6F25-4BCD-8852-B23D1C864324} = {B38D2141-AC0F-4F4A-9315-4292E3856C15}
{B54F200C-D648-477B-BE39-B40A1D956F13} = {B38D2141-AC0F-4F4A-9315-4292E3856C15}
{FEC5FD25-9B26-4245-88D8-7621B26C7C3A} = {B38D2141-AC0F-4F4A-9315-4292E3856C15}
{DF963ABB-E713-49E9-A03C-DEB431E369DF} = {B38D2141-AC0F-4F4A-9315-4292E3856C15}
{52FD8F39-0AB6-4C51-A584-187C219AC8B5} = {820A8FA4-17C4-44DF-8C31-9F211D00F790}
{58F51875-6D2C-4A65-9DD3-8BC004B39B72} = {820A8FA4-17C4-44DF-8C31-9F211D00F790}
{167CE485-72D3-4E95-80B1-00430CBB8888} = {DC7ACD8B-044B-435D-94C5-06C75A8BD026}
{798FEFB4-B65F-4B6C-A36D-611DD71A48AB} = {A9536BD2-2573-44CA-B033-DC16B7E345E5}
{6A82AEB7-A048-420A-ACFB-94DC52ADADDC} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{8EB3C845-BF73-446D-8C5D-FE855CFF2A90} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{8729BEEB-CABF-4B3B-8228-8AEE2E760796} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{AC15003C-473B-4049-B268-DE02ECD58097} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{AC99FAF5-6321-447A-BB13-41CAAEA3E459} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{3FDE2E70-EA02-4296-BA1A-ADABA5054DD1} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{F72E1F2E-0064-4159-9327-884D7CB83D48} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{0979BDAB-B4D3-48DD-88EC-64AED972B8FC} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{83FCF202-0625-46BB-96CD-4D9D684508FC} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{6BAABDAC-C172-419D-A75D-E7823C86E871} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{988BDB8E-FD0D-457B-8B45-CFFD70CCB203} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{CD88BE12-F08D-40AB-9D13-63D6DC5B9DAE} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{97271BF5-D965-4EE1-A2DD-58ADD35B529D} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{CA5D2340-00EF-4248-A288-A9244A1C6A61} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{DC42B5FE-C5EA-49A7-A92A-3F19D82009E3} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{469D4CA9-D6C8-4A47-8795-31D5AA81B4AD} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{6E030005-EEA7-480E-9E68-4FC74CFCAF42} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{B3E81983-629A-4380-B4C2-50E247916F5E} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{088064DD-D141-4E9A-B185-E332920A323A} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{BEE1B759-5B65-481B-928B-8BC6A89A7C13} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{94D1C512-09E4-4A68-8989-6DB49FEABA67} = {F36E71F7-B05F-4513-A923-81E2A7474EAE}
{96B4D255-BB21-4BAF-902A-ADE3F25A44C2} = {F36E71F7-B05F-4513-A923-81E2A7474EAE}
{44778F3C-7610-4F1C-A2B6-DF8925B1CBE0} = {F36E71F7-B05F-4513-A923-81E2A7474EAE}
{A8EFC95D-6700-4840-A7FD-1F5BF4D0C71C} = {77341F31-F54C-436A-AF8D-F78D91303C45}
{6CC06BD8-FA30-45E0-BD3A-25FF39906EF5} = {77341F31-F54C-436A-AF8D-F78D91303C45}
{3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07} = {77341F31-F54C-436A-AF8D-F78D91303C45}
{34042B8E-B896-4E5E-A243-31E2802264CE} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{16C5E2EC-7A8F-2697-F611-0F2C22087192} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{8BAB6A91-865C-A599-BE2A-7C487129D83A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{B6452D3F-E58C-C433-E52A-F65EE2657E01} = {385578CC-C0F1-4377-A7A2-682B8F416234}
{D613F393-9CEE-2D3B-33C9-90630F8348E7} = {385578CC-C0F1-4377-A7A2-682B8F416234}
{0EEA73CA-D8DD-F044-045D-F070F8831E26} = {385578CC-C0F1-4377-A7A2-682B8F416234}
{1CC72170-6771-46A2-CDE4-57D826E3C841} = {DE7B8B71-635D-4113-AA49-B218D6998CEC}
{618C7EAF-8D6C-50B5-84E4-AE733CEA4A8C} = {DE7B8B71-635D-4113-AA49-B218D6998CEC}
{F58A7141-AC0D-26EC-F22A-DF0DB1BA6955} = {DE7B8B71-635D-4113-AA49-B218D6998CEC}
{E09374FE-6B13-D69E-B171-94C63E6B80E5} = {DE7B8B71-635D-4113-AA49-B218D6998CEC}
{164E4514-4E84-F13A-E24E-2A743753CDB3} = {5A41C31A-B966-418B-B446-5BA1D7E61A62}
{CD7B8501-57B7-6C0E-472F-4E9B894ED6C2} = {385578CC-C0F1-4377-A7A2-682B8F416234}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E1FD1F4C-D344-408B-97CF-B6F1F6D7D293}
EndGlobalSection
EndGlobal

547
aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln

@ -1,547 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9BEC7A37-AECA-4096-B4B3-57A2172C1296}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{8052BB2D-93A3-4C1D-9B4C-7080DCDF5B36}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{FB7A9794-06D2-42CF-939E-4626497B97BD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks", "modules\webhooks\LINGYUN.Abp.Webhooks\LINGYUN.Abp.Webhooks.csproj", "{7DFE9385-2FFD-45CE-97B0-8FF4E967F19E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.Domain.Shared", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Domain.Shared\LINGYUN.Abp.WebhooksManagement.Domain.Shared.csproj", "{B3953343-4067-4F12-8F2C-900761934E89}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.Domain", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Domain\LINGYUN.Abp.WebhooksManagement.Domain.csproj", "{416F0E1F-3B52-421C-8E94-1DC9E4EE5949}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.Application.Contracts", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Application.Contracts\LINGYUN.Abp.WebhooksManagement.Application.Contracts.csproj", "{453C29F1-E52E-4DFE-A91A-5DE47611874D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.Application", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Application\LINGYUN.Abp.WebhooksManagement.Application.csproj", "{3B356F97-5D0D-4306-A7C1-56696D581641}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore\LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore.csproj", "{75ED12F9-3884-453E-8EDE-481949BF177A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.HttpApi", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.HttpApi\LINGYUN.Abp.WebhooksManagement.HttpApi.csproj", "{0155C501-026B-4F58-A2BB-02518BBF1BB5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.HttpApi.Client", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.HttpApi.Client\LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj", "{7E5850A0-4CC8-4AB5-8988-067B9B1A00EA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WebhooksManagement.Dapr.Client", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Dapr.Client\LINGYUN.Abp.WebhooksManagement.Dapr.Client.csproj", "{983F568C-3477-4B13-B3FC-95CE23BB2208}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WebhooksManagement.HttpApi.Host", "services\LY.MicroService.WebhooksManagement.HttpApi.Host\LY.MicroService.WebhooksManagement.HttpApi.Host.csproj", "{7C790142-61E7-4C7E-8E8B-3D5EBF71E8BC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.ClientProxies", "modules\webhooks\LINGYUN.Abp.Webhooks.ClientProxies\LINGYUN.Abp.Webhooks.ClientProxies.csproj", "{F4966BE6-CC96-4C23-9363-3BE4103F02E8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.Identity", "modules\webhooks\LINGYUN.Abp.Webhooks.Identity\LINGYUN.Abp.Webhooks.Identity.csproj", "{93BB030A-EA01-4F08-BD41-0800D838162C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.Saas", "modules\webhooks\LINGYUN.Abp.Webhooks.Saas\LINGYUN.Abp.Webhooks.Saas.csproj", "{D7F2B64C-02F2-4097-80C1-DC41CE8FEE38}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.EventBus", "modules\webhooks\LINGYUN.Abp.Webhooks.EventBus\LINGYUN.Abp.Webhooks.EventBus.csproj", "{46C08EF3-4C81-411E-B5E4-AC3A5040DC67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.Core", "modules\webhooks\LINGYUN.Abp.Webhooks.Core\LINGYUN.Abp.Webhooks.Core.csproj", "{BBF1C93D-EF73-4B00-919F-5E7F360BDB03}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations", "{2868332B-7D4F-4B43-8FC3-BA5CACC36C7E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WebhooksManagement.DbMigrator", "migrations\LY.MicroService.WebhooksManagement.DbMigrator\LY.MicroService.WebhooksManagement.DbMigrator.csproj", "{3BC77471-D273-4C9C-8985-7FE450DA4686}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WebhooksManagement.EntityFrameworkCore", "migrations\LY.MicroService.WebhooksManagement.EntityFrameworkCore\LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj", "{CC0BF1BE-A938-4BED-B5DD-AEA0235FF978}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Abstractions", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Abstractions\LINGYUN.Abp.BackgroundTasks.Abstractions.csproj", "{8BFCE8C7-D41A-4D9C-9567-4155B7AC79FE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks", "modules\task-management\LINGYUN.Abp.BackgroundTasks\LINGYUN.Abp.BackgroundTasks.csproj", "{B01A8350-EFA3-4080-9CD6-0E991F99578E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wrapper", "wrapper", "{4530BC52-D8D7-4022-B1E9-F327A0574835}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dapr", "dapr", "{E677C08C-DF2A-44DB-A2E2-E491734F3D5B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr", "framework\dapr\LINGYUN.Abp.Dapr\LINGYUN.Abp.Dapr.csproj", "{FCA0D08C-9F5B-4933-899B-EDF72E868691}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client", "framework\dapr\LINGYUN.Abp.Dapr.Client\LINGYUN.Abp.Dapr.Client.csproj", "{FA12A8B4-255B-4619-B670-0F07C677C736}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client.Wrapper", "framework\dapr\LINGYUN.Abp.Dapr.Client.Wrapper\LINGYUN.Abp.Dapr.Client.Wrapper.csproj", "{37053701-FD7D-4204-BF82-4FEDE0A28E60}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Wrapper", "framework\common\LINGYUN.Abp.Wrapper\LINGYUN.Abp.Wrapper.csproj", "{9AEE2B36-D7A7-4EA2-8A22-888E896012E8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Wrapper", "framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj", "{FFE603F9-DB7E-45C8-9852-354363F9D799}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "saas", "saas", "{E5060632-E9DF-44D4-BB82-B0C45A39BFF8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.EntityFrameworkCore", "modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj", "{AFB07F2B-4858-448D-8882-30A1142A0E7C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Data.DbMigrator", "framework\common\LINGYUN.Abp.Data.DbMigrator\LINGYUN.Abp.Data.DbMigrator.csproj", "{80804006-EED4-4CEA-88F8-A8F45EDFBF0D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain.Shared", "modules\saas\LINGYUN.Abp.Saas.Domain.Shared\LINGYUN.Abp.Saas.Domain.Shared.csproj", "{2C948A5C-0BA4-40EE-8EAF-851D81077E7E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain", "modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN.Abp.Saas.Domain.csproj", "{56642E5F-B344-4C31-8501-ECDAADEA1C36}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Application.Contracts", "modules\saas\LINGYUN.Abp.Saas.Application.Contracts\LINGYUN.Abp.Saas.Application.Contracts.csproj", "{92CCFBCE-AF47-4F66-A900-FD29CDF284A2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Application", "modules\saas\LINGYUN.Abp.Saas.Application\LINGYUN.Abp.Saas.Application.csproj", "{59B6ABC7-8492-46F2-8139-2551E5796D2A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "task-management", "task-management", "{8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Quartz", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Quartz\LINGYUN.Abp.BackgroundTasks.Quartz.csproj", "{C5E82A68-9343-4BCB-AC3A-ED74172212FE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.ExceptionHandling", "modules\task-management\LINGYUN.Abp.BackgroundTasks.ExceptionHandling\LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj", "{A383E007-340B-489F-88DA-D44BCC7E37FA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "framework\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{F94612B7-7F6F-4AEC-A895-6B524C1313AC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "authorization", "authorization", "{416CC55B-C2CD-486D-9BE9-5F0843317240}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Authorization.OrganizationUnits", "framework\authorization\LINGYUN.Abp.Authorization.OrganizationUnits\LINGYUN.Abp.Authorization.OrganizationUnits.csproj", "{D95BC108-BB30-4C88-A381-0AC5F7371184}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "logging", "logging", "{C1134321-E1D5-477A-A580-AB3E5E833778}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.Application", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj", "{2F1541CB-8FA2-4AEF-9036-73B93FF8742C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{93E7C9F3-68E9-4E4C-8810-4986AF7B2DC0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{1A4E882C-6651-4F9D-A432-6FA26E17673F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Http.Client.Wrapper", "framework\common\LINGYUN.Abp.Http.Client.Wrapper\LINGYUN.Abp.Http.Client.Wrapper.csproj", "{2B1CE080-588B-4824-AA84-7DBBB3FFCB37}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.DistributedLocking", "modules\task-management\LINGYUN.Abp.BackgroundTasks.DistributedLocking\LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj", "{36BEE9C9-8D1A-43AE-880F-EAF646750099}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.CultureMap", "framework\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj", "{0DAA2C37-FDEB-4E32-8514-E10432AC6DEF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.UniqueId", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj", "{7EE853B4-B795-4036-97F1-42674DE7CD7D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization-management", "localization-management", "{32755A4F-2D52-44D0-88FB-3038007851EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj", "{10A795AB-710F-4FDF-8F84-0058CC22C08F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "framework\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{96EE3984-0ABB-49B0-9779-DF3709C9B13F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auditing", "auditing", "{64643A14-D2F9-4E42-84B0-719C01017539}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging.Elasticsearch", "framework\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj", "{1A483DA8-A316-4D82-85CF-7AF2DE88FB68}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.EntityFrameworkCore", "modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj", "{16ADDA63-31EA-4096-94B1-380E7B8260E3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain.Shared", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj", "{032F4262-20F5-4221-973E-3E0C732CD161}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj", "{607E62C0-90E7-4CAA-876D-BC298193015E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{4EC3658B-5CA8-4156-A28B-69423777A030}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.Editions", "framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj", "{98320D5C-1686-4616-8DDB-1A7B86848359}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Activities", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Activities\LINGYUN.Abp.BackgroundTasks.Activities.csproj", "{AFEF7FC1-31FD-4708-A7C2-B44E85A61BC2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Domain.Shared", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain.Shared\LINGYUN.Abp.TaskManagement.Domain.Shared.csproj", "{E365E183-0843-44D4-A629-79E3AD0A6C18}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Domain", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain\LINGYUN.Abp.TaskManagement.Domain.csproj", "{1907352F-C39E-435C-9EE3-277DD5B812CE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdGenerator", "framework\common\LINGYUN.Abp.IdGenerator\LINGYUN.Abp.IdGenerator.csproj", "{64D3A785-EA8D-4AAB-B3F8-715065DEAC43}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "framework\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{5C1E48DE-6247-475B-BDB5-651521AC3A47}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elasticsearch", "framework\elasticsearch\LINGYUN.Abp.Elasticsearch\LINGYUN.Abp.Elasticsearch.csproj", "{004CC7A9-92FF-4E98-8F1D-550D07CB47F0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "framework\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{0DFDAC71-BCB9-44CF-A44A-E8288E75246F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Security", "framework\security\LINGYUN.Abp.Security\LINGYUN.Abp.Security.csproj", "{8F11DADB-557A-4ECF-BEBB-19AFA71998A1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{047F892F-F8D2-4952-A1E9-93AA2B030F76}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{23E99204-F7C1-47BA-84CD-3C9D05210F4F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Domain.Shared", "modules\platform\LINGYUN.Platform.Domain.Shared\LINGYUN.Platform.Domain.Shared.csproj", "{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Application.Contracts", "modules\platform\LINGYUN.Platform.Application.Contracts\LINGYUN.Platform.Application.Contracts.csproj", "{16C5E2EC-7A8F-2697-F611-0F2C22087192}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.HttpApi.Client", "modules\platform\LINGYUN.Platform.HttpApi.Client\LINGYUN.Platform.HttpApi.Client.csproj", "{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Sms.Platform", "modules\platform\LINGYUN.Abp.Sms.Platform\LINGYUN.Abp.Sms.Platform.csproj", "{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Emailing.Platform", "modules\platform\LINGYUN.Abp.Emailing.Platform\LINGYUN.Abp.Emailing.Platform.csproj", "{8BAB6A91-865C-A599-BE2A-7C487129D83A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.SkyWalking", "framework\telemetry\LINGYUN.Abp.Telemetry.SkyWalking\LINGYUN.Abp.Telemetry.SkyWalking.csproj", "{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telemetry", "telemetry", "{CE07B9F4-54E8-4E74-BE14-8E5C1FB7AFC8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.MySqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.MySqlInstaller\LINGYUN.Abp.Quartz.MySqlInstaller.csproj", "{B6452D3F-E58C-C433-E52A-F65EE2657E01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.SqlServerInstaller", "modules\task-management\LINGYUN.Abp.Quartz.SqlServerInstaller\LINGYUN.Abp.Quartz.SqlServerInstaller.csproj", "{D613F393-9CEE-2D3B-33C9-90630F8348E7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.SqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.SqlInstaller\LINGYUN.Abp.Quartz.SqlInstaller.csproj", "{0EEA73CA-D8DD-F044-045D-F070F8831E26}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.OpenTelemetry", "framework\telemetry\LINGYUN.Abp.Telemetry.OpenTelemetry\LINGYUN.Abp.Telemetry.OpenTelemetry.csproj", "{164E4514-4E84-F13A-E24E-2A743753CDB3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7DFE9385-2FFD-45CE-97B0-8FF4E967F19E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7DFE9385-2FFD-45CE-97B0-8FF4E967F19E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7DFE9385-2FFD-45CE-97B0-8FF4E967F19E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DFE9385-2FFD-45CE-97B0-8FF4E967F19E}.Release|Any CPU.Build.0 = Release|Any CPU
{B3953343-4067-4F12-8F2C-900761934E89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B3953343-4067-4F12-8F2C-900761934E89}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B3953343-4067-4F12-8F2C-900761934E89}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B3953343-4067-4F12-8F2C-900761934E89}.Release|Any CPU.Build.0 = Release|Any CPU
{416F0E1F-3B52-421C-8E94-1DC9E4EE5949}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{416F0E1F-3B52-421C-8E94-1DC9E4EE5949}.Debug|Any CPU.Build.0 = Debug|Any CPU
{416F0E1F-3B52-421C-8E94-1DC9E4EE5949}.Release|Any CPU.ActiveCfg = Release|Any CPU
{416F0E1F-3B52-421C-8E94-1DC9E4EE5949}.Release|Any CPU.Build.0 = Release|Any CPU
{453C29F1-E52E-4DFE-A91A-5DE47611874D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{453C29F1-E52E-4DFE-A91A-5DE47611874D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{453C29F1-E52E-4DFE-A91A-5DE47611874D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{453C29F1-E52E-4DFE-A91A-5DE47611874D}.Release|Any CPU.Build.0 = Release|Any CPU
{3B356F97-5D0D-4306-A7C1-56696D581641}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B356F97-5D0D-4306-A7C1-56696D581641}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B356F97-5D0D-4306-A7C1-56696D581641}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B356F97-5D0D-4306-A7C1-56696D581641}.Release|Any CPU.Build.0 = Release|Any CPU
{75ED12F9-3884-453E-8EDE-481949BF177A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75ED12F9-3884-453E-8EDE-481949BF177A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75ED12F9-3884-453E-8EDE-481949BF177A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75ED12F9-3884-453E-8EDE-481949BF177A}.Release|Any CPU.Build.0 = Release|Any CPU
{0155C501-026B-4F58-A2BB-02518BBF1BB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0155C501-026B-4F58-A2BB-02518BBF1BB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0155C501-026B-4F58-A2BB-02518BBF1BB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0155C501-026B-4F58-A2BB-02518BBF1BB5}.Release|Any CPU.Build.0 = Release|Any CPU
{7E5850A0-4CC8-4AB5-8988-067B9B1A00EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E5850A0-4CC8-4AB5-8988-067B9B1A00EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E5850A0-4CC8-4AB5-8988-067B9B1A00EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E5850A0-4CC8-4AB5-8988-067B9B1A00EA}.Release|Any CPU.Build.0 = Release|Any CPU
{983F568C-3477-4B13-B3FC-95CE23BB2208}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{983F568C-3477-4B13-B3FC-95CE23BB2208}.Debug|Any CPU.Build.0 = Debug|Any CPU
{983F568C-3477-4B13-B3FC-95CE23BB2208}.Release|Any CPU.ActiveCfg = Release|Any CPU
{983F568C-3477-4B13-B3FC-95CE23BB2208}.Release|Any CPU.Build.0 = Release|Any CPU
{7C790142-61E7-4C7E-8E8B-3D5EBF71E8BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C790142-61E7-4C7E-8E8B-3D5EBF71E8BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C790142-61E7-4C7E-8E8B-3D5EBF71E8BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C790142-61E7-4C7E-8E8B-3D5EBF71E8BC}.Release|Any CPU.Build.0 = Release|Any CPU
{F4966BE6-CC96-4C23-9363-3BE4103F02E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F4966BE6-CC96-4C23-9363-3BE4103F02E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F4966BE6-CC96-4C23-9363-3BE4103F02E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F4966BE6-CC96-4C23-9363-3BE4103F02E8}.Release|Any CPU.Build.0 = Release|Any CPU
{93BB030A-EA01-4F08-BD41-0800D838162C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93BB030A-EA01-4F08-BD41-0800D838162C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{93BB030A-EA01-4F08-BD41-0800D838162C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93BB030A-EA01-4F08-BD41-0800D838162C}.Release|Any CPU.Build.0 = Release|Any CPU
{D7F2B64C-02F2-4097-80C1-DC41CE8FEE38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D7F2B64C-02F2-4097-80C1-DC41CE8FEE38}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D7F2B64C-02F2-4097-80C1-DC41CE8FEE38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D7F2B64C-02F2-4097-80C1-DC41CE8FEE38}.Release|Any CPU.Build.0 = Release|Any CPU
{46C08EF3-4C81-411E-B5E4-AC3A5040DC67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46C08EF3-4C81-411E-B5E4-AC3A5040DC67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46C08EF3-4C81-411E-B5E4-AC3A5040DC67}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46C08EF3-4C81-411E-B5E4-AC3A5040DC67}.Release|Any CPU.Build.0 = Release|Any CPU
{BBF1C93D-EF73-4B00-919F-5E7F360BDB03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BBF1C93D-EF73-4B00-919F-5E7F360BDB03}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BBF1C93D-EF73-4B00-919F-5E7F360BDB03}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BBF1C93D-EF73-4B00-919F-5E7F360BDB03}.Release|Any CPU.Build.0 = Release|Any CPU
{3BC77471-D273-4C9C-8985-7FE450DA4686}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3BC77471-D273-4C9C-8985-7FE450DA4686}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3BC77471-D273-4C9C-8985-7FE450DA4686}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3BC77471-D273-4C9C-8985-7FE450DA4686}.Release|Any CPU.Build.0 = Release|Any CPU
{CC0BF1BE-A938-4BED-B5DD-AEA0235FF978}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC0BF1BE-A938-4BED-B5DD-AEA0235FF978}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC0BF1BE-A938-4BED-B5DD-AEA0235FF978}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC0BF1BE-A938-4BED-B5DD-AEA0235FF978}.Release|Any CPU.Build.0 = Release|Any CPU
{8BFCE8C7-D41A-4D9C-9567-4155B7AC79FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BFCE8C7-D41A-4D9C-9567-4155B7AC79FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BFCE8C7-D41A-4D9C-9567-4155B7AC79FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BFCE8C7-D41A-4D9C-9567-4155B7AC79FE}.Release|Any CPU.Build.0 = Release|Any CPU
{B01A8350-EFA3-4080-9CD6-0E991F99578E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B01A8350-EFA3-4080-9CD6-0E991F99578E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B01A8350-EFA3-4080-9CD6-0E991F99578E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B01A8350-EFA3-4080-9CD6-0E991F99578E}.Release|Any CPU.Build.0 = Release|Any CPU
{FCA0D08C-9F5B-4933-899B-EDF72E868691}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FCA0D08C-9F5B-4933-899B-EDF72E868691}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCA0D08C-9F5B-4933-899B-EDF72E868691}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCA0D08C-9F5B-4933-899B-EDF72E868691}.Release|Any CPU.Build.0 = Release|Any CPU
{FA12A8B4-255B-4619-B670-0F07C677C736}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA12A8B4-255B-4619-B670-0F07C677C736}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA12A8B4-255B-4619-B670-0F07C677C736}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA12A8B4-255B-4619-B670-0F07C677C736}.Release|Any CPU.Build.0 = Release|Any CPU
{37053701-FD7D-4204-BF82-4FEDE0A28E60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{37053701-FD7D-4204-BF82-4FEDE0A28E60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37053701-FD7D-4204-BF82-4FEDE0A28E60}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37053701-FD7D-4204-BF82-4FEDE0A28E60}.Release|Any CPU.Build.0 = Release|Any CPU
{9AEE2B36-D7A7-4EA2-8A22-888E896012E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9AEE2B36-D7A7-4EA2-8A22-888E896012E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9AEE2B36-D7A7-4EA2-8A22-888E896012E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9AEE2B36-D7A7-4EA2-8A22-888E896012E8}.Release|Any CPU.Build.0 = Release|Any CPU
{FFE603F9-DB7E-45C8-9852-354363F9D799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFE603F9-DB7E-45C8-9852-354363F9D799}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFE603F9-DB7E-45C8-9852-354363F9D799}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFE603F9-DB7E-45C8-9852-354363F9D799}.Release|Any CPU.Build.0 = Release|Any CPU
{AFB07F2B-4858-448D-8882-30A1142A0E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFB07F2B-4858-448D-8882-30A1142A0E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFB07F2B-4858-448D-8882-30A1142A0E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFB07F2B-4858-448D-8882-30A1142A0E7C}.Release|Any CPU.Build.0 = Release|Any CPU
{80804006-EED4-4CEA-88F8-A8F45EDFBF0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80804006-EED4-4CEA-88F8-A8F45EDFBF0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80804006-EED4-4CEA-88F8-A8F45EDFBF0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80804006-EED4-4CEA-88F8-A8F45EDFBF0D}.Release|Any CPU.Build.0 = Release|Any CPU
{2C948A5C-0BA4-40EE-8EAF-851D81077E7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C948A5C-0BA4-40EE-8EAF-851D81077E7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C948A5C-0BA4-40EE-8EAF-851D81077E7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C948A5C-0BA4-40EE-8EAF-851D81077E7E}.Release|Any CPU.Build.0 = Release|Any CPU
{56642E5F-B344-4C31-8501-ECDAADEA1C36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{56642E5F-B344-4C31-8501-ECDAADEA1C36}.Debug|Any CPU.Build.0 = Debug|Any CPU
{56642E5F-B344-4C31-8501-ECDAADEA1C36}.Release|Any CPU.ActiveCfg = Release|Any CPU
{56642E5F-B344-4C31-8501-ECDAADEA1C36}.Release|Any CPU.Build.0 = Release|Any CPU
{92CCFBCE-AF47-4F66-A900-FD29CDF284A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92CCFBCE-AF47-4F66-A900-FD29CDF284A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92CCFBCE-AF47-4F66-A900-FD29CDF284A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92CCFBCE-AF47-4F66-A900-FD29CDF284A2}.Release|Any CPU.Build.0 = Release|Any CPU
{59B6ABC7-8492-46F2-8139-2551E5796D2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59B6ABC7-8492-46F2-8139-2551E5796D2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59B6ABC7-8492-46F2-8139-2551E5796D2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59B6ABC7-8492-46F2-8139-2551E5796D2A}.Release|Any CPU.Build.0 = Release|Any CPU
{C5E82A68-9343-4BCB-AC3A-ED74172212FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5E82A68-9343-4BCB-AC3A-ED74172212FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5E82A68-9343-4BCB-AC3A-ED74172212FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5E82A68-9343-4BCB-AC3A-ED74172212FE}.Release|Any CPU.Build.0 = Release|Any CPU
{A383E007-340B-489F-88DA-D44BCC7E37FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A383E007-340B-489F-88DA-D44BCC7E37FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A383E007-340B-489F-88DA-D44BCC7E37FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A383E007-340B-489F-88DA-D44BCC7E37FA}.Release|Any CPU.Build.0 = Release|Any CPU
{F94612B7-7F6F-4AEC-A895-6B524C1313AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F94612B7-7F6F-4AEC-A895-6B524C1313AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F94612B7-7F6F-4AEC-A895-6B524C1313AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F94612B7-7F6F-4AEC-A895-6B524C1313AC}.Release|Any CPU.Build.0 = Release|Any CPU
{D95BC108-BB30-4C88-A381-0AC5F7371184}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D95BC108-BB30-4C88-A381-0AC5F7371184}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D95BC108-BB30-4C88-A381-0AC5F7371184}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D95BC108-BB30-4C88-A381-0AC5F7371184}.Release|Any CPU.Build.0 = Release|Any CPU
{2F1541CB-8FA2-4AEF-9036-73B93FF8742C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2F1541CB-8FA2-4AEF-9036-73B93FF8742C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2F1541CB-8FA2-4AEF-9036-73B93FF8742C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2F1541CB-8FA2-4AEF-9036-73B93FF8742C}.Release|Any CPU.Build.0 = Release|Any CPU
{1A4E882C-6651-4F9D-A432-6FA26E17673F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A4E882C-6651-4F9D-A432-6FA26E17673F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A4E882C-6651-4F9D-A432-6FA26E17673F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A4E882C-6651-4F9D-A432-6FA26E17673F}.Release|Any CPU.Build.0 = Release|Any CPU
{2B1CE080-588B-4824-AA84-7DBBB3FFCB37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2B1CE080-588B-4824-AA84-7DBBB3FFCB37}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B1CE080-588B-4824-AA84-7DBBB3FFCB37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B1CE080-588B-4824-AA84-7DBBB3FFCB37}.Release|Any CPU.Build.0 = Release|Any CPU
{36BEE9C9-8D1A-43AE-880F-EAF646750099}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{36BEE9C9-8D1A-43AE-880F-EAF646750099}.Debug|Any CPU.Build.0 = Debug|Any CPU
{36BEE9C9-8D1A-43AE-880F-EAF646750099}.Release|Any CPU.ActiveCfg = Release|Any CPU
{36BEE9C9-8D1A-43AE-880F-EAF646750099}.Release|Any CPU.Build.0 = Release|Any CPU
{0DAA2C37-FDEB-4E32-8514-E10432AC6DEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DAA2C37-FDEB-4E32-8514-E10432AC6DEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DAA2C37-FDEB-4E32-8514-E10432AC6DEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DAA2C37-FDEB-4E32-8514-E10432AC6DEF}.Release|Any CPU.Build.0 = Release|Any CPU
{7EE853B4-B795-4036-97F1-42674DE7CD7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7EE853B4-B795-4036-97F1-42674DE7CD7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7EE853B4-B795-4036-97F1-42674DE7CD7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7EE853B4-B795-4036-97F1-42674DE7CD7D}.Release|Any CPU.Build.0 = Release|Any CPU
{10A795AB-710F-4FDF-8F84-0058CC22C08F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10A795AB-710F-4FDF-8F84-0058CC22C08F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10A795AB-710F-4FDF-8F84-0058CC22C08F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10A795AB-710F-4FDF-8F84-0058CC22C08F}.Release|Any CPU.Build.0 = Release|Any CPU
{96EE3984-0ABB-49B0-9779-DF3709C9B13F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96EE3984-0ABB-49B0-9779-DF3709C9B13F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96EE3984-0ABB-49B0-9779-DF3709C9B13F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96EE3984-0ABB-49B0-9779-DF3709C9B13F}.Release|Any CPU.Build.0 = Release|Any CPU
{1A483DA8-A316-4D82-85CF-7AF2DE88FB68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A483DA8-A316-4D82-85CF-7AF2DE88FB68}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A483DA8-A316-4D82-85CF-7AF2DE88FB68}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A483DA8-A316-4D82-85CF-7AF2DE88FB68}.Release|Any CPU.Build.0 = Release|Any CPU
{16ADDA63-31EA-4096-94B1-380E7B8260E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16ADDA63-31EA-4096-94B1-380E7B8260E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16ADDA63-31EA-4096-94B1-380E7B8260E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16ADDA63-31EA-4096-94B1-380E7B8260E3}.Release|Any CPU.Build.0 = Release|Any CPU
{032F4262-20F5-4221-973E-3E0C732CD161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{032F4262-20F5-4221-973E-3E0C732CD161}.Debug|Any CPU.Build.0 = Debug|Any CPU
{032F4262-20F5-4221-973E-3E0C732CD161}.Release|Any CPU.ActiveCfg = Release|Any CPU
{032F4262-20F5-4221-973E-3E0C732CD161}.Release|Any CPU.Build.0 = Release|Any CPU
{607E62C0-90E7-4CAA-876D-BC298193015E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{607E62C0-90E7-4CAA-876D-BC298193015E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{607E62C0-90E7-4CAA-876D-BC298193015E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{607E62C0-90E7-4CAA-876D-BC298193015E}.Release|Any CPU.Build.0 = Release|Any CPU
{98320D5C-1686-4616-8DDB-1A7B86848359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{98320D5C-1686-4616-8DDB-1A7B86848359}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98320D5C-1686-4616-8DDB-1A7B86848359}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98320D5C-1686-4616-8DDB-1A7B86848359}.Release|Any CPU.Build.0 = Release|Any CPU
{AFEF7FC1-31FD-4708-A7C2-B44E85A61BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFEF7FC1-31FD-4708-A7C2-B44E85A61BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFEF7FC1-31FD-4708-A7C2-B44E85A61BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFEF7FC1-31FD-4708-A7C2-B44E85A61BC2}.Release|Any CPU.Build.0 = Release|Any CPU
{E365E183-0843-44D4-A629-79E3AD0A6C18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E365E183-0843-44D4-A629-79E3AD0A6C18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E365E183-0843-44D4-A629-79E3AD0A6C18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E365E183-0843-44D4-A629-79E3AD0A6C18}.Release|Any CPU.Build.0 = Release|Any CPU
{1907352F-C39E-435C-9EE3-277DD5B812CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1907352F-C39E-435C-9EE3-277DD5B812CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1907352F-C39E-435C-9EE3-277DD5B812CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1907352F-C39E-435C-9EE3-277DD5B812CE}.Release|Any CPU.Build.0 = Release|Any CPU
{64D3A785-EA8D-4AAB-B3F8-715065DEAC43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64D3A785-EA8D-4AAB-B3F8-715065DEAC43}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64D3A785-EA8D-4AAB-B3F8-715065DEAC43}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64D3A785-EA8D-4AAB-B3F8-715065DEAC43}.Release|Any CPU.Build.0 = Release|Any CPU
{5C1E48DE-6247-475B-BDB5-651521AC3A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C1E48DE-6247-475B-BDB5-651521AC3A47}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C1E48DE-6247-475B-BDB5-651521AC3A47}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C1E48DE-6247-475B-BDB5-651521AC3A47}.Release|Any CPU.Build.0 = Release|Any CPU
{004CC7A9-92FF-4E98-8F1D-550D07CB47F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{004CC7A9-92FF-4E98-8F1D-550D07CB47F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{004CC7A9-92FF-4E98-8F1D-550D07CB47F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{004CC7A9-92FF-4E98-8F1D-550D07CB47F0}.Release|Any CPU.Build.0 = Release|Any CPU
{0DFDAC71-BCB9-44CF-A44A-E8288E75246F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DFDAC71-BCB9-44CF-A44A-E8288E75246F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DFDAC71-BCB9-44CF-A44A-E8288E75246F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DFDAC71-BCB9-44CF-A44A-E8288E75246F}.Release|Any CPU.Build.0 = Release|Any CPU
{8F11DADB-557A-4ECF-BEBB-19AFA71998A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8F11DADB-557A-4ECF-BEBB-19AFA71998A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8F11DADB-557A-4ECF-BEBB-19AFA71998A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F11DADB-557A-4ECF-BEBB-19AFA71998A1}.Release|Any CPU.Build.0 = Release|Any CPU
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Release|Any CPU.Build.0 = Release|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Release|Any CPU.Build.0 = Release|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Release|Any CPU.Build.0 = Release|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.Build.0 = Release|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.Build.0 = Release|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.Build.0 = Release|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.Build.0 = Release|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.Build.0 = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.Build.0 = Release|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B6452D3F-E58C-C433-E52A-F65EE2657E01}.Release|Any CPU.Build.0 = Release|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D613F393-9CEE-2D3B-33C9-90630F8348E7}.Release|Any CPU.Build.0 = Release|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Release|Any CPU.Build.0 = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{FB7A9794-06D2-42CF-939E-4626497B97BD} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{7DFE9385-2FFD-45CE-97B0-8FF4E967F19E} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{B3953343-4067-4F12-8F2C-900761934E89} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{416F0E1F-3B52-421C-8E94-1DC9E4EE5949} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{453C29F1-E52E-4DFE-A91A-5DE47611874D} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{3B356F97-5D0D-4306-A7C1-56696D581641} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{75ED12F9-3884-453E-8EDE-481949BF177A} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{0155C501-026B-4F58-A2BB-02518BBF1BB5} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{7E5850A0-4CC8-4AB5-8988-067B9B1A00EA} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{983F568C-3477-4B13-B3FC-95CE23BB2208} = {9BEC7A37-AECA-4096-B4B3-57A2172C1296}
{7C790142-61E7-4C7E-8E8B-3D5EBF71E8BC} = {8052BB2D-93A3-4C1D-9B4C-7080DCDF5B36}
{F4966BE6-CC96-4C23-9363-3BE4103F02E8} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{93BB030A-EA01-4F08-BD41-0800D838162C} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{D7F2B64C-02F2-4097-80C1-DC41CE8FEE38} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{46C08EF3-4C81-411E-B5E4-AC3A5040DC67} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{BBF1C93D-EF73-4B00-919F-5E7F360BDB03} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{3BC77471-D273-4C9C-8985-7FE450DA4686} = {2868332B-7D4F-4B43-8FC3-BA5CACC36C7E}
{CC0BF1BE-A938-4BED-B5DD-AEA0235FF978} = {2868332B-7D4F-4B43-8FC3-BA5CACC36C7E}
{8BFCE8C7-D41A-4D9C-9567-4155B7AC79FE} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{B01A8350-EFA3-4080-9CD6-0E991F99578E} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{4530BC52-D8D7-4022-B1E9-F327A0574835} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{E677C08C-DF2A-44DB-A2E2-E491734F3D5B} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{FCA0D08C-9F5B-4933-899B-EDF72E868691} = {E677C08C-DF2A-44DB-A2E2-E491734F3D5B}
{FA12A8B4-255B-4619-B670-0F07C677C736} = {E677C08C-DF2A-44DB-A2E2-E491734F3D5B}
{37053701-FD7D-4204-BF82-4FEDE0A28E60} = {E677C08C-DF2A-44DB-A2E2-E491734F3D5B}
{9AEE2B36-D7A7-4EA2-8A22-888E896012E8} = {4530BC52-D8D7-4022-B1E9-F327A0574835}
{FFE603F9-DB7E-45C8-9852-354363F9D799} = {4530BC52-D8D7-4022-B1E9-F327A0574835}
{E5060632-E9DF-44D4-BB82-B0C45A39BFF8} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{AFB07F2B-4858-448D-8882-30A1142A0E7C} = {E5060632-E9DF-44D4-BB82-B0C45A39BFF8}
{80804006-EED4-4CEA-88F8-A8F45EDFBF0D} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{2C948A5C-0BA4-40EE-8EAF-851D81077E7E} = {E5060632-E9DF-44D4-BB82-B0C45A39BFF8}
{56642E5F-B344-4C31-8501-ECDAADEA1C36} = {E5060632-E9DF-44D4-BB82-B0C45A39BFF8}
{92CCFBCE-AF47-4F66-A900-FD29CDF284A2} = {E5060632-E9DF-44D4-BB82-B0C45A39BFF8}
{59B6ABC7-8492-46F2-8139-2551E5796D2A} = {E5060632-E9DF-44D4-BB82-B0C45A39BFF8}
{8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{C5E82A68-9343-4BCB-AC3A-ED74172212FE} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{A383E007-340B-489F-88DA-D44BCC7E37FA} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{F94612B7-7F6F-4AEC-A895-6B524C1313AC} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{416CC55B-C2CD-486D-9BE9-5F0843317240} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{D95BC108-BB30-4C88-A381-0AC5F7371184} = {416CC55B-C2CD-486D-9BE9-5F0843317240}
{C1134321-E1D5-477A-A580-AB3E5E833778} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{2F1541CB-8FA2-4AEF-9036-73B93FF8742C} = {C1134321-E1D5-477A-A580-AB3E5E833778}
{93E7C9F3-68E9-4E4C-8810-4986AF7B2DC0} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{1A4E882C-6651-4F9D-A432-6FA26E17673F} = {93E7C9F3-68E9-4E4C-8810-4986AF7B2DC0}
{2B1CE080-588B-4824-AA84-7DBBB3FFCB37} = {4530BC52-D8D7-4022-B1E9-F327A0574835}
{36BEE9C9-8D1A-43AE-880F-EAF646750099} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{0DAA2C37-FDEB-4E32-8514-E10432AC6DEF} = {93E7C9F3-68E9-4E4C-8810-4986AF7B2DC0}
{7EE853B4-B795-4036-97F1-42674DE7CD7D} = {C1134321-E1D5-477A-A580-AB3E5E833778}
{32755A4F-2D52-44D0-88FB-3038007851EC} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{10A795AB-710F-4FDF-8F84-0058CC22C08F} = {32755A4F-2D52-44D0-88FB-3038007851EC}
{96EE3984-0ABB-49B0-9779-DF3709C9B13F} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{64643A14-D2F9-4E42-84B0-719C01017539} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{1A483DA8-A316-4D82-85CF-7AF2DE88FB68} = {64643A14-D2F9-4E42-84B0-719C01017539}
{16ADDA63-31EA-4096-94B1-380E7B8260E3} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{032F4262-20F5-4221-973E-3E0C732CD161} = {32755A4F-2D52-44D0-88FB-3038007851EC}
{607E62C0-90E7-4CAA-876D-BC298193015E} = {32755A4F-2D52-44D0-88FB-3038007851EC}
{4EC3658B-5CA8-4156-A28B-69423777A030} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{98320D5C-1686-4616-8DDB-1A7B86848359} = {4EC3658B-5CA8-4156-A28B-69423777A030}
{AFEF7FC1-31FD-4708-A7C2-B44E85A61BC2} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{E365E183-0843-44D4-A629-79E3AD0A6C18} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{1907352F-C39E-435C-9EE3-277DD5B812CE} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{64D3A785-EA8D-4AAB-B3F8-715065DEAC43} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{5C1E48DE-6247-475B-BDB5-651521AC3A47} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{004CC7A9-92FF-4E98-8F1D-550D07CB47F0} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{0DFDAC71-BCB9-44CF-A44A-E8288E75246F} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{8F11DADB-557A-4ECF-BEBB-19AFA71998A1} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{047F892F-F8D2-4952-A1E9-93AA2B030F76} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{23E99204-F7C1-47BA-84CD-3C9D05210F4F} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1} = {23E99204-F7C1-47BA-84CD-3C9D05210F4F}
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1} = {23E99204-F7C1-47BA-84CD-3C9D05210F4F}
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{16C5E2EC-7A8F-2697-F611-0F2C22087192} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{8BAB6A91-865C-A599-BE2A-7C487129D83A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE} = {CE07B9F4-54E8-4E74-BE14-8E5C1FB7AFC8}
{CE07B9F4-54E8-4E74-BE14-8E5C1FB7AFC8} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{B6452D3F-E58C-C433-E52A-F65EE2657E01} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{D613F393-9CEE-2D3B-33C9-90630F8348E7} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{0EEA73CA-D8DD-F044-045D-F070F8831E26} = {8C3DF571-BAC3-48C4-B46A-AC0E0EAA9871}
{164E4514-4E84-F13A-E24E-2A743753CDB3} = {CE07B9F4-54E8-4E74-BE14-8E5C1FB7AFC8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {80ED12A5-C899-459F-A181-ADCC9D680DE5}
EndGlobalSection
EndGlobal

423
aspnet-core/LINGYUN.MicroService.WechatManagement.sln

@ -1,423 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11205.157 d18.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "framework", "framework", "{BD5616DF-D493-4170-8E78-46486BE77FC2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{EDB927C3-0589-4DAD-B5FE-5A4B5C727122}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hosts", "hosts", "{1B7F2C6E-1712-4F22-989C-D56C7AEF7F16}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "framework\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{915E4DB5-8017-43C5-B547-08658F0ED488}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Common", "framework\wechat\LINGYUN.Abp.WeChat.Common\LINGYUN.Abp.WeChat.Common.csproj", "{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "framework\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{08361B78-A90E-45BD-8517-B64208D7DAA0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "framework\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official.Application", "framework\wechat\LINGYUN.Abp.WeChat.Official.Application\LINGYUN.Abp.WeChat.Official.Application.csproj", "{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official.Application.Contracts", "framework\wechat\LINGYUN.Abp.WeChat.Official.Application.Contracts\LINGYUN.Abp.WeChat.Official.Application.Contracts.csproj", "{6A652115-DED9-486E-BEA1-5F652C297359}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official.HttpApi", "framework\wechat\LINGYUN.Abp.WeChat.Official.HttpApi\LINGYUN.Abp.WeChat.Official.HttpApi.csproj", "{343E5900-511F-449B-95C1-7AC070395DB5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "framework\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work", "framework\wechat\LINGYUN.Abp.WeChat.Work\LINGYUN.Abp.WeChat.Work.csproj", "{785D6536-DE97-40C5-AEE3-65C529AAE39F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Application", "framework\wechat\LINGYUN.Abp.WeChat.Work.Application\LINGYUN.Abp.WeChat.Work.Application.csproj", "{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Application.Contracts", "framework\wechat\LINGYUN.Abp.WeChat.Work.Application.Contracts\LINGYUN.Abp.WeChat.Work.Application.Contracts.csproj", "{8D781A51-9B85-4B8D-B6E2-00020B4D744B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Common", "framework\wechat\LINGYUN.Abp.WeChat.Work.Common\LINGYUN.Abp.WeChat.Work.Common.csproj", "{12486482-960D-44B3-828A-F2FF304618D5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.HttpApi", "framework\wechat\LINGYUN.Abp.WeChat.Work.HttpApi\LINGYUN.Abp.WeChat.Work.HttpApi.csproj", "{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WechatManagement.HttpApi.Host", "services\LY.MicroService.WechatManagement.HttpApi.Host\LY.MicroService.WechatManagement.HttpApi.Host.csproj", "{23ADD956-A69D-494C-ABA0-1577DC46C72F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auditing", "auditing", "{DC3710B9-2B39-4B03-A21E-20282E6AC053}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "authorization", "authorization", "{1A4D7CDD-9F77-40A0-A384-44DE0503FA2E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elasticsearch", "framework\elasticsearch\LINGYUN.Abp.Elasticsearch\LINGYUN.Abp.Elasticsearch.csproj", "{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "logging", "logging", "{D59249AA-A555-4AD0-A465-6835854628D9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.Application", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj", "{7CAADF78-13ED-4832-B0F6-184EBAF4B162}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.UniqueId", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj", "{0943AFDE-B14C-412B-8AE5-9BCBA5031698}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging.Elasticsearch", "framework\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj", "{F1B094CC-E6FB-41F4-AC05-0D34360480A7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging", "framework\auditing\LINGYUN.Abp.AuditLogging\LINGYUN.Abp.AuditLogging.csproj", "{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Authorization.OrganizationUnits", "framework\authorization\LINGYUN.Abp.Authorization.OrganizationUnits\LINGYUN.Abp.Authorization.OrganizationUnits.csproj", "{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "framework\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{10A83D35-D37F-4D21-A79D-5E03B95EE400}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "saas", "saas", "{EA746F97-941A-4D63-9EFB-230D78B965C2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain.Shared", "modules\saas\LINGYUN.Abp.Saas.Domain.Shared\LINGYUN.Abp.Saas.Domain.Shared.csproj", "{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain", "modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN.Abp.Saas.Domain.csproj", "{83B3E21A-5D8B-45E1-8E61-A00D87663A11}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.EntityFrameworkCore", "modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj", "{87204045-FACA-44CF-ADF9-A716CF3B86B5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{F5AFCEF2-B0D5-4138-A576-BE8033D9613C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.Editions", "framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj", "{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "framework\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{48C72408-42E3-440B-B168-CE7F429872C2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "framework\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{807A74FA-39D6-449D-8B1D-E8B10DF39447}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "framework\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Wrapper", "framework\common\LINGYUN.Abp.Wrapper\LINGYUN.Abp.Wrapper.csproj", "{045015A5-4693-45E2-9EAB-F8DCD175036B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mvc", "mvc", "{FE68AF9E-D218-4601-A853-140D6AFEC314}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Wrapper", "framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj", "{BB666C40-149E-4C17-B4D0-B585CE6C3794}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Http.Client.Wrapper", "framework\common\LINGYUN.Abp.Http.Client.Wrapper\LINGYUN.Abp.Http.Client.Wrapper.csproj", "{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Wrapper", "framework\common\LINGYUN.Abp.AspNetCore.Wrapper\LINGYUN.Abp.AspNetCore.Wrapper.csproj", "{1E1696BE-8227-4CCD-9D05-A4C583680C9C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.CultureMap", "framework\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj", "{E5A995FD-2338-4D86-A269-FECB636583ED}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{B89C5DC7-0570-4D3D-8317-6C57AA310953}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{73ED64BB-7C39-42EA-B821-3DD697B9C36A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{52701ECE-3EBD-45EC-AD2C-0AAB15322311}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain.Shared", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj", "{1251068B-DD70-4946-AD3A-40183523B9A2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj", "{37454EB7-9CE9-4250-92E4-7316F16B5328}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj", "{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{80EBBECC-EF11-4E5E-91DA-EEECED832F21}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.SkyWalking", "framework\telemetry\LINGYUN.Abp.Telemetry.SkyWalking\LINGYUN.Abp.Telemetry.SkyWalking.csproj", "{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.OpenTelemetry", "framework\telemetry\LINGYUN.Abp.Telemetry.OpenTelemetry\LINGYUN.Abp.Telemetry.OpenTelemetry.csproj", "{164E4514-4E84-F13A-E24E-2A743753CDB3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Identity.WeChat.Work", "framework\wechat\LINGYUN.Abp.Identity.WeChat.Work\LINGYUN.Abp.Identity.WeChat.Work.csproj", "{CCC8A29C-1FC1-044F-895A-EC6894CDC8E5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.ExternalContact", "framework\wechat\LINGYUN.Abp.WeChat.Work.ExternalContact\LINGYUN.Abp.WeChat.Work.ExternalContact.csproj", "{3A6D0EA9-FA3F-4252-87D9-31845D57180D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.TestsBase", "tests\LINGYUN.Abp.TestBase\LINGYUN.Abp.TestsBase.csproj", "{757279EC-708D-D1AD-5E9E-7B757F3F7785}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.Tests", "tests\LINGYUN.Abp.WeChat.Work.Tests\LINGYUN.Abp.WeChat.Work.Tests.csproj", "{9DC2A982-8FA2-93BE-5FE1-3D7F7C105C39}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.ExternalContact.Tests", "tests\LINGYUN.Abp.WeChat.Work.ExternalContact.Tests\LINGYUN.Abp.WeChat.Work.ExternalContact.Tests.csproj", "{6628FB84-66C0-4023-9AA0-AAC4C0CC5917}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.Handlers", "framework\wechat\LINGYUN.Abp.WeChat.Work.Handlers\LINGYUN.Abp.WeChat.Work.Handlers.csproj", "{E0DFCAD9-8AFE-A816-10F7-B4CA6691E910}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.Contacts", "framework\wechat\LINGYUN.Abp.WeChat.Work.Contacts\LINGYUN.Abp.WeChat.Work.Contacts.csproj", "{69419D6B-9DA5-D9BD-1D6C-61BBAE331057}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.Contacts.Tests", "tests\LINGYUN.Abp.WeChat.Work.Contacts.Tests\LINGYUN.Abp.WeChat.Work.Contacts.Tests.csproj", "{C3BEBB5D-EF3A-4387-8357-0C3829756E41}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.OA", "framework\wechat\LINGYUN.Abp.WeChat.Work.OA\LINGYUN.Abp.WeChat.Work.OA.csproj", "{BA80572F-49BD-41E3-89D8-AE5BF15B00F9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.OA.Tests", "tests\LINGYUN.Abp.WeChat.Work.OA.Tests\LINGYUN.Abp.WeChat.Work.OA.Tests.csproj", "{0209DBBA-CF63-4538-AB8D-452E9A591336}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{915E4DB5-8017-43C5-B547-08658F0ED488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{915E4DB5-8017-43C5-B547-08658F0ED488}.Debug|Any CPU.Build.0 = Debug|Any CPU
{915E4DB5-8017-43C5-B547-08658F0ED488}.Release|Any CPU.ActiveCfg = Release|Any CPU
{915E4DB5-8017-43C5-B547-08658F0ED488}.Release|Any CPU.Build.0 = Release|Any CPU
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Release|Any CPU.Build.0 = Release|Any CPU
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Release|Any CPU.Build.0 = Release|Any CPU
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Release|Any CPU.Build.0 = Release|Any CPU
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Release|Any CPU.Build.0 = Release|Any CPU
{6A652115-DED9-486E-BEA1-5F652C297359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6A652115-DED9-486E-BEA1-5F652C297359}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A652115-DED9-486E-BEA1-5F652C297359}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A652115-DED9-486E-BEA1-5F652C297359}.Release|Any CPU.Build.0 = Release|Any CPU
{343E5900-511F-449B-95C1-7AC070395DB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{343E5900-511F-449B-95C1-7AC070395DB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{343E5900-511F-449B-95C1-7AC070395DB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{343E5900-511F-449B-95C1-7AC070395DB5}.Release|Any CPU.Build.0 = Release|Any CPU
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Release|Any CPU.Build.0 = Release|Any CPU
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Release|Any CPU.Build.0 = Release|Any CPU
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Release|Any CPU.Build.0 = Release|Any CPU
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Release|Any CPU.Build.0 = Release|Any CPU
{12486482-960D-44B3-828A-F2FF304618D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{12486482-960D-44B3-828A-F2FF304618D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{12486482-960D-44B3-828A-F2FF304618D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{12486482-960D-44B3-828A-F2FF304618D5}.Release|Any CPU.Build.0 = Release|Any CPU
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Debug|Any CPU.Build.0 = Debug|Any CPU
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Release|Any CPU.ActiveCfg = Release|Any CPU
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Release|Any CPU.Build.0 = Release|Any CPU
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Release|Any CPU.Build.0 = Release|Any CPU
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Release|Any CPU.Build.0 = Release|Any CPU
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Release|Any CPU.Build.0 = Release|Any CPU
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Release|Any CPU.Build.0 = Release|Any CPU
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Release|Any CPU.Build.0 = Release|Any CPU
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Release|Any CPU.Build.0 = Release|Any CPU
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Release|Any CPU.Build.0 = Release|Any CPU
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Release|Any CPU.Build.0 = Release|Any CPU
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Release|Any CPU.Build.0 = Release|Any CPU
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Release|Any CPU.Build.0 = Release|Any CPU
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Release|Any CPU.Build.0 = Release|Any CPU
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Release|Any CPU.Build.0 = Release|Any CPU
{48C72408-42E3-440B-B168-CE7F429872C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48C72408-42E3-440B-B168-CE7F429872C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48C72408-42E3-440B-B168-CE7F429872C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48C72408-42E3-440B-B168-CE7F429872C2}.Release|Any CPU.Build.0 = Release|Any CPU
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Debug|Any CPU.Build.0 = Debug|Any CPU
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Release|Any CPU.ActiveCfg = Release|Any CPU
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Release|Any CPU.Build.0 = Release|Any CPU
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Release|Any CPU.Build.0 = Release|Any CPU
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Release|Any CPU.Build.0 = Release|Any CPU
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Release|Any CPU.Build.0 = Release|Any CPU
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Release|Any CPU.Build.0 = Release|Any CPU
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Release|Any CPU.Build.0 = Release|Any CPU
{E5A995FD-2338-4D86-A269-FECB636583ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5A995FD-2338-4D86-A269-FECB636583ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E5A995FD-2338-4D86-A269-FECB636583ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5A995FD-2338-4D86-A269-FECB636583ED}.Release|Any CPU.Build.0 = Release|Any CPU
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Release|Any CPU.Build.0 = Release|Any CPU
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Release|Any CPU.Build.0 = Release|Any CPU
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Release|Any CPU.Build.0 = Release|Any CPU
{1251068B-DD70-4946-AD3A-40183523B9A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1251068B-DD70-4946-AD3A-40183523B9A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1251068B-DD70-4946-AD3A-40183523B9A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1251068B-DD70-4946-AD3A-40183523B9A2}.Release|Any CPU.Build.0 = Release|Any CPU
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Release|Any CPU.Build.0 = Release|Any CPU
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Release|Any CPU.Build.0 = Release|Any CPU
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Release|Any CPU.Build.0 = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.Build.0 = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.Build.0 = Release|Any CPU
{CCC8A29C-1FC1-044F-895A-EC6894CDC8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CCC8A29C-1FC1-044F-895A-EC6894CDC8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CCC8A29C-1FC1-044F-895A-EC6894CDC8E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CCC8A29C-1FC1-044F-895A-EC6894CDC8E5}.Release|Any CPU.Build.0 = Release|Any CPU
{3A6D0EA9-FA3F-4252-87D9-31845D57180D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A6D0EA9-FA3F-4252-87D9-31845D57180D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A6D0EA9-FA3F-4252-87D9-31845D57180D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A6D0EA9-FA3F-4252-87D9-31845D57180D}.Release|Any CPU.Build.0 = Release|Any CPU
{757279EC-708D-D1AD-5E9E-7B757F3F7785}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{757279EC-708D-D1AD-5E9E-7B757F3F7785}.Debug|Any CPU.Build.0 = Debug|Any CPU
{757279EC-708D-D1AD-5E9E-7B757F3F7785}.Release|Any CPU.ActiveCfg = Release|Any CPU
{757279EC-708D-D1AD-5E9E-7B757F3F7785}.Release|Any CPU.Build.0 = Release|Any CPU
{9DC2A982-8FA2-93BE-5FE1-3D7F7C105C39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9DC2A982-8FA2-93BE-5FE1-3D7F7C105C39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9DC2A982-8FA2-93BE-5FE1-3D7F7C105C39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9DC2A982-8FA2-93BE-5FE1-3D7F7C105C39}.Release|Any CPU.Build.0 = Release|Any CPU
{6628FB84-66C0-4023-9AA0-AAC4C0CC5917}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6628FB84-66C0-4023-9AA0-AAC4C0CC5917}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6628FB84-66C0-4023-9AA0-AAC4C0CC5917}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6628FB84-66C0-4023-9AA0-AAC4C0CC5917}.Release|Any CPU.Build.0 = Release|Any CPU
{E0DFCAD9-8AFE-A816-10F7-B4CA6691E910}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0DFCAD9-8AFE-A816-10F7-B4CA6691E910}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0DFCAD9-8AFE-A816-10F7-B4CA6691E910}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0DFCAD9-8AFE-A816-10F7-B4CA6691E910}.Release|Any CPU.Build.0 = Release|Any CPU
{69419D6B-9DA5-D9BD-1D6C-61BBAE331057}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{69419D6B-9DA5-D9BD-1D6C-61BBAE331057}.Debug|Any CPU.Build.0 = Debug|Any CPU
{69419D6B-9DA5-D9BD-1D6C-61BBAE331057}.Release|Any CPU.ActiveCfg = Release|Any CPU
{69419D6B-9DA5-D9BD-1D6C-61BBAE331057}.Release|Any CPU.Build.0 = Release|Any CPU
{C3BEBB5D-EF3A-4387-8357-0C3829756E41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C3BEBB5D-EF3A-4387-8357-0C3829756E41}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3BEBB5D-EF3A-4387-8357-0C3829756E41}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3BEBB5D-EF3A-4387-8357-0C3829756E41}.Release|Any CPU.Build.0 = Release|Any CPU
{BA80572F-49BD-41E3-89D8-AE5BF15B00F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA80572F-49BD-41E3-89D8-AE5BF15B00F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA80572F-49BD-41E3-89D8-AE5BF15B00F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA80572F-49BD-41E3-89D8-AE5BF15B00F9}.Release|Any CPU.Build.0 = Release|Any CPU
{0209DBBA-CF63-4538-AB8D-452E9A591336}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0209DBBA-CF63-4538-AB8D-452E9A591336}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0209DBBA-CF63-4538-AB8D-452E9A591336}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0209DBBA-CF63-4538-AB8D-452E9A591336}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{915E4DB5-8017-43C5-B547-08658F0ED488} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{08361B78-A90E-45BD-8517-B64208D7DAA0} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{6A652115-DED9-486E-BEA1-5F652C297359} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{343E5900-511F-449B-95C1-7AC070395DB5} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{785D6536-DE97-40C5-AEE3-65C529AAE39F} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{8D781A51-9B85-4B8D-B6E2-00020B4D744B} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{12486482-960D-44B3-828A-F2FF304618D5} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{23ADD956-A69D-494C-ABA0-1577DC46C72F} = {1B7F2C6E-1712-4F22-989C-D56C7AEF7F16}
{DC3710B9-2B39-4B03-A21E-20282E6AC053} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{1A4D7CDD-9F77-40A0-A384-44DE0503FA2E} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{D59249AA-A555-4AD0-A465-6835854628D9} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{7CAADF78-13ED-4832-B0F6-184EBAF4B162} = {D59249AA-A555-4AD0-A465-6835854628D9}
{0943AFDE-B14C-412B-8AE5-9BCBA5031698} = {D59249AA-A555-4AD0-A465-6835854628D9}
{F1B094CC-E6FB-41F4-AC05-0D34360480A7} = {DC3710B9-2B39-4B03-A21E-20282E6AC053}
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0} = {DC3710B9-2B39-4B03-A21E-20282E6AC053}
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3} = {1A4D7CDD-9F77-40A0-A384-44DE0503FA2E}
{10A83D35-D37F-4D21-A79D-5E03B95EE400} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{EA746F97-941A-4D63-9EFB-230D78B965C2} = {EDB927C3-0589-4DAD-B5FE-5A4B5C727122}
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C} = {EA746F97-941A-4D63-9EFB-230D78B965C2}
{83B3E21A-5D8B-45E1-8E61-A00D87663A11} = {EA746F97-941A-4D63-9EFB-230D78B965C2}
{87204045-FACA-44CF-ADF9-A716CF3B86B5} = {EA746F97-941A-4D63-9EFB-230D78B965C2}
{F5AFCEF2-B0D5-4138-A576-BE8033D9613C} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781} = {F5AFCEF2-B0D5-4138-A576-BE8033D9613C}
{48C72408-42E3-440B-B168-CE7F429872C2} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{807A74FA-39D6-449D-8B1D-E8B10DF39447} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{045015A5-4693-45E2-9EAB-F8DCD175036B} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{FE68AF9E-D218-4601-A853-140D6AFEC314} = {BD5616DF-D493-4170-8E78-46486BE77FC2}
{BB666C40-149E-4C17-B4D0-B585CE6C3794} = {FE68AF9E-D218-4601-A853-140D6AFEC314}
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{1E1696BE-8227-4CCD-9D05-A4C583680C9C} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{E5A995FD-2338-4D86-A269-FECB636583ED} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{B89C5DC7-0570-4D3D-8317-6C57AA310953} = {FE68AF9E-D218-4601-A853-140D6AFEC314}
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{73ED64BB-7C39-42EA-B821-3DD697B9C36A} = {EDB927C3-0589-4DAD-B5FE-5A4B5C727122}
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0} = {73ED64BB-7C39-42EA-B821-3DD697B9C36A}
{52701ECE-3EBD-45EC-AD2C-0AAB15322311} = {EDB927C3-0589-4DAD-B5FE-5A4B5C727122}
{1251068B-DD70-4946-AD3A-40183523B9A2} = {52701ECE-3EBD-45EC-AD2C-0AAB15322311}
{37454EB7-9CE9-4250-92E4-7316F16B5328} = {52701ECE-3EBD-45EC-AD2C-0AAB15322311}
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869} = {52701ECE-3EBD-45EC-AD2C-0AAB15322311}
{80EBBECC-EF11-4E5E-91DA-EEECED832F21} = {73ED64BB-7C39-42EA-B821-3DD697B9C36A}
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{164E4514-4E84-F13A-E24E-2A743753CDB3} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}
{CCC8A29C-1FC1-044F-895A-EC6894CDC8E5} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{3A6D0EA9-FA3F-4252-87D9-31845D57180D} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{757279EC-708D-D1AD-5E9E-7B757F3F7785} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{9DC2A982-8FA2-93BE-5FE1-3D7F7C105C39} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{6628FB84-66C0-4023-9AA0-AAC4C0CC5917} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{E0DFCAD9-8AFE-A816-10F7-B4CA6691E910} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{69419D6B-9DA5-D9BD-1D6C-61BBAE331057} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{C3BEBB5D-EF3A-4387-8357-0C3829756E41} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{BA80572F-49BD-41E3-89D8-AE5BF15B00F9} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}
{0209DBBA-CF63-4538-AB8D-452E9A591336} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EC9D01C1-EA3C-48C7-A279-4D35C8AD312E}
EndGlobalSection
EndGlobal

616
aspnet-core/LINGYUN.MicroService.Workflow.sln

@ -1,616 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{6CB521FC-AC40-49A6-B9A5-91399CAA59AB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WorkflowManagement.HttpApi.Host", "services\LY.MicroService.WorkflowManagement.HttpApi.Host\LY.MicroService.WorkflowManagement.HttpApi.Host.csproj", "{D5ED348D-D6F0-4093-BD7D-20E05AA1EB7B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elsa", "elsa", "{F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa", "modules\elsa\LINGYUN.Abp.Elsa\LINGYUN.Abp.Elsa.csproj", "{17EA5194-BBE8-4CE1-B6F9-DF6829622F38}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Server", "modules\elsa\LINGYUN.Abp.Elsa.Server\LINGYUN.Abp.Elsa.Server.csproj", "{88AA0D46-597E-4969-8382-A3F8054B9409}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.EntityFrameworkCore", "modules\elsa\LINGYUN.Abp.Elsa.EntityFrameworkCore\LINGYUN.Abp.Elsa.EntityFrameworkCore.csproj", "{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.BlobStoring", "modules\elsa\LINGYUN.Abp.Elsa.Activities.BlobStoring\LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj", "{81CB5141-4FC5-413A-A516-CD65F40465C0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Notifications", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Notifications\LINGYUN.Abp.Elsa.Activities.Notifications.csproj", "{F5023AD3-D9C5-40C9-B76A-58D95E441997}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.IM", "modules\elsa\LINGYUN.Abp.Elsa.Activities.IM\LINGYUN.Abp.Elsa.Activities.IM.csproj", "{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Sms", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Sms\LINGYUN.Abp.Elsa.Activities.Sms.csproj", "{FF3A193B-6131-4B4D-9729-1BF8A125C0AB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{6DA78E72-BA55-4ECF-97DB-6258174D3E2A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime", "framework\common\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj", "{18A20311-84D8-49C4-B7BA-1187FF25E9BC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications", "modules\realtime-notifications\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj", "{2C3FABD7-808B-47B5-A194-849A1738E9A2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM", "modules\realtime-message\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj", "{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Emailing", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Emailing\LINGYUN.Abp.Elsa.Activities.Emailing.csproj", "{9E213E6F-77CB-4068-93EB-465C47FDA8FA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities", "modules\elsa\LINGYUN.Abp.Elsa.Activities\LINGYUN.Abp.Elsa.Activities.csproj", "{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Core", "modules\realtime-notifications\LINGYUN.Abp.Notifications.Core\LINGYUN.Abp.Notifications.Core.csproj", "{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Webhooks", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Webhooks\LINGYUN.Abp.Elsa.Activities.Webhooks.csproj", "{2CA34976-4A80-485C-8572-6004829BB727}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.Core", "modules\webhooks\LINGYUN.Abp.Webhooks.Core\LINGYUN.Abp.Webhooks.Core.csproj", "{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks", "modules\webhooks\LINGYUN.Abp.Webhooks\LINGYUN.Abp.Webhooks.csproj", "{6489B162-2B28-42B9-9AD4-EB5CCBB8AE85}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Webhooks.EventBus", "modules\webhooks\LINGYUN.Abp.Webhooks.EventBus\LINGYUN.Abp.Webhooks.EventBus.csproj", "{B6246B7A-4095-433A-B981-5D1E43CDF712}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql", "modules\elsa\LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql\LINGYUN.Abp.Elsa.EntityFrameworkCore.MySql.csproj", "{4B20572A-10E7-4414-943A-974F275677B4}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{035B86BF-DD63-4A78-B8CE-29994860C948}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Tests", "tests\LINGYUN.Abp.Elsa.Tests\LINGYUN.Abp.Elsa.Tests.csproj", "{9F96F261-93F7-47C0-8F07-72CE39CE20A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TestsBase", "tests\LINGYUN.Abp.TestBase\LINGYUN.Abp.TestsBase.csproj", "{8395DA41-AF40-4B0D-B36D-FA8A56E75AED}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Activities.Webhooks.Tests", "tests\LINGYUN.Abp.Elsa.Activities.Webhooks.Tests\LINGYUN.Abp.Elsa.Activities.Webhooks.Tests.csproj", "{B3C2AFCC-EE59-4CB4-AB62-B90D60335632}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging", "framework\auditing\LINGYUN.Abp.AuditLogging\LINGYUN.Abp.AuditLogging.csproj", "{A03A98B6-19E9-4CCA-9801-AEFCBAAF5B72}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging.Elasticsearch", "framework\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj", "{00AB0A7E-578E-469C-B049-BCAA0233A9DD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "framework\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{90B326F6-99DF-4EEC-A480-26C27EE22237}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Notifications", "modules\realtime-notifications\LINGYUN.Abp.ExceptionHandling.Notifications\LINGYUN.Abp.ExceptionHandling.Notifications.csproj", "{96EBCB1F-DB7B-40BA-B59E-82FC1AE13EA0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Common", "modules\realtime-notifications\LINGYUN.Abp.Notifications.Common\LINGYUN.Abp.Notifications.Common.csproj", "{6399C2FB-B063-4BB3-B605-88CE5303198B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elsa.Notifications", "modules\elsa\LINGYUN.Abp.Elsa.Notifications\LINGYUN.Abp.Elsa.Notifications.csproj", "{D2F6105D-D667-46DB-8CDA-89B4D3F69067}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.OssManagement", "modules\oss-management\LINGYUN.Abp.BlobStoring.OssManagement\LINGYUN.Abp.BlobStoring.OssManagement.csproj", "{CE550720-FA77-4FF3-B5F0-A2B7A1781E61}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elasticsearch", "framework\elasticsearch\LINGYUN.Abp.Elasticsearch\LINGYUN.Abp.Elasticsearch.csproj", "{ECA9D3FA-248F-4D0E-A612-FE1CC72241D5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{7B82C484-4DDF-45F2-B5FC-DFA9FFC3258B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain.Shared", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain.Shared\LINGYUN.Abp.OssManagement.Domain.Shared.csproj", "{C2F7971A-CFCE-4BE0-9A3A-805972A5F00B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{0DA0B251-66A6-441C-91B3-DFF953C53C4A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.HttpApi.Client", "modules\oss-management\LINGYUN.Abp.OssManagement.HttpApi.Client\LINGYUN.Abp.OssManagement.HttpApi.Client.csproj", "{E71FE3BB-1793-460F-9802-77FB9BBC1356}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "realtime", "realtime", "{54C52918-0B8B-4036-B673-23BE74AFFA95}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "notifications", "notifications", "{927A4A04-56EF-4A0F-B17C-E80ABA78C554}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "message", "message", "{7AF97C49-F445-4D77-9DBF-1A211933A471}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdGenerator", "framework\common\LINGYUN.Abp.IdGenerator\LINGYUN.Abp.IdGenerator.csproj", "{9A5CDAEF-3767-4924-810E-C2018EFB5124}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "webhooks", "webhooks", "{7C1D7F97-1D2C-47F3-B3E7-8275D57267C4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Authorization.OrganizationUnits", "framework\authorization\LINGYUN.Abp.Authorization.OrganizationUnits\LINGYUN.Abp.Authorization.OrganizationUnits.csproj", "{EE20EC4E-9C09-485A-8FBF-AF7FE253714D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "framework\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{B08298CE-D261-4990-8458-17341992AD01}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Data.DbMigrator", "framework\common\LINGYUN.Abp.Data.DbMigrator\LINGYUN.Abp.Data.DbMigrator.csproj", "{9D0D219B-AC06-4371-9BA1-630BC00FE0F0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "framework\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{ADFC9BA9-405D-4900-B5A3-D7A6F6EED38B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Wrapper", "framework\common\LINGYUN.Abp.Wrapper\LINGYUN.Abp.Wrapper.csproj", "{0B7492A2-7B11-4BC1-A55D-5756B74F0055}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Http.Client.Wrapper", "framework\common\LINGYUN.Abp.Http.Client.Wrapper\LINGYUN.Abp.Http.Client.Wrapper.csproj", "{92808D98-A096-4C4D-A038-A1D359812E32}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.CultureMap", "framework\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj", "{D2019F8C-BD18-4DB5-9C38-1AF511D511FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{57ED879F-2A6F-4618-AD0C-5896CAFA3902}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.Application", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj", "{9A21CDDA-E03F-432B-A539-D553B69E1B5E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.UniqueId", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj", "{A3CC8323-B8C0-402E-B0CF-F67029E5E9E9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Wrapper", "framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj", "{0DC9EE7D-7A8E-4CC7-AE0B-CBA74B5C3F72}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization-management", "localization-management", "{26C224A8-EA29-4FB9-BA1D-9FFA1D8608E7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain.Shared", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj", "{E2327757-4988-4710-8A67-06A7EEC12DFA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj", "{28AFEB19-6CDE-4AD9-9A83-BDCD98C3E386}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj", "{B281B9FE-8F1F-471C-B399-C1D07DF575E4}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "task-management", "task-management", "{7844FF58-7DBF-46E1-88B7-9764382A4EE9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Abstractions", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Abstractions\LINGYUN.Abp.BackgroundTasks.Abstractions.csproj", "{927AD997-604B-4553-B768-8BFC595E9D62}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks", "modules\task-management\LINGYUN.Abp.BackgroundTasks\LINGYUN.Abp.BackgroundTasks.csproj", "{76AF3503-CB33-4DFA-BE4F-F2EBB51EEA07}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Activities", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Activities\LINGYUN.Abp.BackgroundTasks.Activities.csproj", "{F2DEFDB5-29FD-44B9-A22C-A7D857BA60A0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.DistributedLocking", "modules\task-management\LINGYUN.Abp.BackgroundTasks.DistributedLocking\LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj", "{004C3502-A1E2-4CCC-AB8E-E823FCE3E916}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.ExceptionHandling", "modules\task-management\LINGYUN.Abp.BackgroundTasks.ExceptionHandling\LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj", "{1E26260F-8D99-4F9D-B20F-4B4B12A315E1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Domain.Shared", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain.Shared\LINGYUN.Abp.TaskManagement.Domain.Shared.csproj", "{A675EBDA-0021-406A-A0AA-5B27AF2902E0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.Domain", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain\LINGYUN.Abp.TaskManagement.Domain.csproj", "{7927F5D8-D950-45E5-B832-894A325445DC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TaskManagement.EntityFrameworkCore", "modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj", "{749899E3-86F3-48FD-AF09-BBFDA8E0EA36}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks.Quartz", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Quartz\LINGYUN.Abp.BackgroundTasks.Quartz.csproj", "{74500EF4-93FE-4B84-A538-BA94CEE73E92}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text-templating", "text-templating", "{459DEA84-19F7-49A2-BD23-F5B871DFF92D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating.Domain.Shared", "modules\text-templating\LINGYUN.Abp.TextTemplating.Domain.Shared\LINGYUN.Abp.TextTemplating.Domain.Shared.csproj", "{8420F159-401F-48F9-A206-CA5D5B0B4CDE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating.Domain", "modules\text-templating\LINGYUN.Abp.TextTemplating.Domain\LINGYUN.Abp.TextTemplating.Domain.csproj", "{7E7E8768-198D-400A-B8C4-7E86BB38BE4E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating.EntityFrameworkCore", "modules\text-templating\LINGYUN.Abp.TextTemplating.EntityFrameworkCore\LINGYUN.Abp.TextTemplating.EntityFrameworkCore.csproj", "{86C48FB7-09D7-47F5-A6C0-FB7C22A362B2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.Editions", "framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj", "{3458DCC4-55CB-424A-A5BF-9DB11F24D41F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "saas", "saas", "{AD002164-CFB4-4583-BF13-62C815009ADE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain.Shared", "modules\saas\LINGYUN.Abp.Saas.Domain.Shared\LINGYUN.Abp.Saas.Domain.Shared.csproj", "{A0869700-2CA0-40F1-8AEA-5ADEA1204294}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain", "modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN.Abp.Saas.Domain.csproj", "{911B7C56-1908-42B5-BCE8-860DE650AE31}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.EntityFrameworkCore", "modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj", "{CAE0492C-11A3-424C-8613-7DAB83E4FB60}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "framework\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{4D055853-DE80-4145-BB2F-33EB6B379F5E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Security", "framework\security\LINGYUN.Abp.Security\LINGYUN.Abp.Security.csproj", "{E4783690-052A-4AB0-837E-BDBC77CC7EEC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{1859E205-88DC-4E08-A0BD-55A045DCC495}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{9C73D4E6-4408-4717-B51C-63C20321D4DA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{6ECF678D-6F3A-4084-8538-A86C1D67C703}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql", "modules\elsa\LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql\LINGYUN.Abp.Elsa.EntityFrameworkCore.PostgreSql.csproj", "{D56851BB-557E-4CF9-B724-8E607EEE9D07}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.EntityFrameworkCore.SqlServer", "modules\elsa\LINGYUN.Abp.Elsa.EntityFrameworkCore.SqlServer\LINGYUN.Abp.Elsa.EntityFrameworkCore.SqlServer.csproj", "{22BB3760-8DA1-4714-ADB7-1585A4EB8496}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2.x", "2.x", "{618DAF98-06CE-48BB-8A48-60C92C55F9FC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3.x", "3.x", "{52E78BD0-DB63-4C5A-A88E-9AD3EFB2E618}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.ElsaNext", "modules\elsa\LINGYUN.Abp.ElsaNext\LINGYUN.Abp.ElsaNext.csproj", "{90D14180-20AC-44E6-BC7B-D9DA0868C5E1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.ElsaNext.Server", "modules\elsa\LINGYUN.Abp.ElsaNext.Server\LINGYUN.Abp.ElsaNext.Server.csproj", "{F6A800FC-3DE0-410E-9096-92404F11E2D1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2.x", "2.x", "{55400168-8E20-4D10-A3F0-FC591271E71F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3.x", "3.x", "{9CD04B74-AA10-4253-BEEC-4837D48AD3EB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LY.MicroService.WorkflowManagement.Next.HttpApi.Host", "services\LY.MicroService.WorkflowManagement.Next.HttpApi.Host\LY.MicroService.WorkflowManagement.Next.HttpApi.Host.csproj", "{09CDA563-DE16-41F6-B61C-56102E7D9B2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.SkyWalking", "framework\telemetry\LINGYUN.Abp.Telemetry.SkyWalking\LINGYUN.Abp.Telemetry.SkyWalking.csproj", "{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.MySqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.MySqlInstaller\LINGYUN.Abp.Quartz.MySqlInstaller.csproj", "{B5C96536-6387-44F4-A2E2-D4D683588AF5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.SqlServerInstaller", "modules\task-management\LINGYUN.Abp.Quartz.SqlServerInstaller\LINGYUN.Abp.Quartz.SqlServerInstaller.csproj", "{52F5A9DE-50B8-42C6-9980-E908DC6A4B52}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Quartz.SqlInstaller", "modules\task-management\LINGYUN.Abp.Quartz.SqlInstaller\LINGYUN.Abp.Quartz.SqlInstaller.csproj", "{0EEA73CA-D8DD-F044-045D-F070F8831E26}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Telemetry.OpenTelemetry", "framework\telemetry\LINGYUN.Abp.Telemetry.OpenTelemetry\LINGYUN.Abp.Telemetry.OpenTelemetry.csproj", "{164E4514-4E84-F13A-E24E-2A743753CDB3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D5ED348D-D6F0-4093-BD7D-20E05AA1EB7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5ED348D-D6F0-4093-BD7D-20E05AA1EB7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5ED348D-D6F0-4093-BD7D-20E05AA1EB7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5ED348D-D6F0-4093-BD7D-20E05AA1EB7B}.Release|Any CPU.Build.0 = Release|Any CPU
{17EA5194-BBE8-4CE1-B6F9-DF6829622F38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17EA5194-BBE8-4CE1-B6F9-DF6829622F38}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17EA5194-BBE8-4CE1-B6F9-DF6829622F38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17EA5194-BBE8-4CE1-B6F9-DF6829622F38}.Release|Any CPU.Build.0 = Release|Any CPU
{88AA0D46-597E-4969-8382-A3F8054B9409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88AA0D46-597E-4969-8382-A3F8054B9409}.Debug|Any CPU.Build.0 = Debug|Any CPU
{88AA0D46-597E-4969-8382-A3F8054B9409}.Release|Any CPU.ActiveCfg = Release|Any CPU
{88AA0D46-597E-4969-8382-A3F8054B9409}.Release|Any CPU.Build.0 = Release|Any CPU
{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288}.Release|Any CPU.Build.0 = Release|Any CPU
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81CB5141-4FC5-413A-A516-CD65F40465C0}.Release|Any CPU.Build.0 = Release|Any CPU
{F5023AD3-D9C5-40C9-B76A-58D95E441997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5023AD3-D9C5-40C9-B76A-58D95E441997}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5023AD3-D9C5-40C9-B76A-58D95E441997}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5023AD3-D9C5-40C9-B76A-58D95E441997}.Release|Any CPU.Build.0 = Release|Any CPU
{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C}.Release|Any CPU.Build.0 = Release|Any CPU
{FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF3A193B-6131-4B4D-9729-1BF8A125C0AB}.Release|Any CPU.Build.0 = Release|Any CPU
{18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18A20311-84D8-49C4-B7BA-1187FF25E9BC}.Release|Any CPU.Build.0 = Release|Any CPU
{2C3FABD7-808B-47B5-A194-849A1738E9A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C3FABD7-808B-47B5-A194-849A1738E9A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C3FABD7-808B-47B5-A194-849A1738E9A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C3FABD7-808B-47B5-A194-849A1738E9A2}.Release|Any CPU.Build.0 = Release|Any CPU
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Release|Any CPU.Build.0 = Release|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Release|Any CPU.Build.0 = Release|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Release|Any CPU.Build.0 = Release|Any CPU
{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9}.Release|Any CPU.Build.0 = Release|Any CPU
{2CA34976-4A80-485C-8572-6004829BB727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2CA34976-4A80-485C-8572-6004829BB727}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2CA34976-4A80-485C-8572-6004829BB727}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2CA34976-4A80-485C-8572-6004829BB727}.Release|Any CPU.Build.0 = Release|Any CPU
{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C}.Release|Any CPU.Build.0 = Release|Any CPU
{6489B162-2B28-42B9-9AD4-EB5CCBB8AE85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6489B162-2B28-42B9-9AD4-EB5CCBB8AE85}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6489B162-2B28-42B9-9AD4-EB5CCBB8AE85}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6489B162-2B28-42B9-9AD4-EB5CCBB8AE85}.Release|Any CPU.Build.0 = Release|Any CPU
{B6246B7A-4095-433A-B981-5D1E43CDF712}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6246B7A-4095-433A-B981-5D1E43CDF712}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6246B7A-4095-433A-B981-5D1E43CDF712}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B6246B7A-4095-433A-B981-5D1E43CDF712}.Release|Any CPU.Build.0 = Release|Any CPU
{4B20572A-10E7-4414-943A-974F275677B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B20572A-10E7-4414-943A-974F275677B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B20572A-10E7-4414-943A-974F275677B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B20572A-10E7-4414-943A-974F275677B4}.Release|Any CPU.Build.0 = Release|Any CPU
{9F96F261-93F7-47C0-8F07-72CE39CE20A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9F96F261-93F7-47C0-8F07-72CE39CE20A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F96F261-93F7-47C0-8F07-72CE39CE20A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F96F261-93F7-47C0-8F07-72CE39CE20A3}.Release|Any CPU.Build.0 = Release|Any CPU
{8395DA41-AF40-4B0D-B36D-FA8A56E75AED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8395DA41-AF40-4B0D-B36D-FA8A56E75AED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8395DA41-AF40-4B0D-B36D-FA8A56E75AED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8395DA41-AF40-4B0D-B36D-FA8A56E75AED}.Release|Any CPU.Build.0 = Release|Any CPU
{B3C2AFCC-EE59-4CB4-AB62-B90D60335632}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B3C2AFCC-EE59-4CB4-AB62-B90D60335632}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B3C2AFCC-EE59-4CB4-AB62-B90D60335632}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B3C2AFCC-EE59-4CB4-AB62-B90D60335632}.Release|Any CPU.Build.0 = Release|Any CPU
{A03A98B6-19E9-4CCA-9801-AEFCBAAF5B72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A03A98B6-19E9-4CCA-9801-AEFCBAAF5B72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A03A98B6-19E9-4CCA-9801-AEFCBAAF5B72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A03A98B6-19E9-4CCA-9801-AEFCBAAF5B72}.Release|Any CPU.Build.0 = Release|Any CPU
{00AB0A7E-578E-469C-B049-BCAA0233A9DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00AB0A7E-578E-469C-B049-BCAA0233A9DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00AB0A7E-578E-469C-B049-BCAA0233A9DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00AB0A7E-578E-469C-B049-BCAA0233A9DD}.Release|Any CPU.Build.0 = Release|Any CPU
{90B326F6-99DF-4EEC-A480-26C27EE22237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90B326F6-99DF-4EEC-A480-26C27EE22237}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90B326F6-99DF-4EEC-A480-26C27EE22237}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90B326F6-99DF-4EEC-A480-26C27EE22237}.Release|Any CPU.Build.0 = Release|Any CPU
{96EBCB1F-DB7B-40BA-B59E-82FC1AE13EA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96EBCB1F-DB7B-40BA-B59E-82FC1AE13EA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96EBCB1F-DB7B-40BA-B59E-82FC1AE13EA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96EBCB1F-DB7B-40BA-B59E-82FC1AE13EA0}.Release|Any CPU.Build.0 = Release|Any CPU
{6399C2FB-B063-4BB3-B605-88CE5303198B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6399C2FB-B063-4BB3-B605-88CE5303198B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6399C2FB-B063-4BB3-B605-88CE5303198B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6399C2FB-B063-4BB3-B605-88CE5303198B}.Release|Any CPU.Build.0 = Release|Any CPU
{D2F6105D-D667-46DB-8CDA-89B4D3F69067}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2F6105D-D667-46DB-8CDA-89B4D3F69067}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2F6105D-D667-46DB-8CDA-89B4D3F69067}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2F6105D-D667-46DB-8CDA-89B4D3F69067}.Release|Any CPU.Build.0 = Release|Any CPU
{CE550720-FA77-4FF3-B5F0-A2B7A1781E61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE550720-FA77-4FF3-B5F0-A2B7A1781E61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE550720-FA77-4FF3-B5F0-A2B7A1781E61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE550720-FA77-4FF3-B5F0-A2B7A1781E61}.Release|Any CPU.Build.0 = Release|Any CPU
{ECA9D3FA-248F-4D0E-A612-FE1CC72241D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECA9D3FA-248F-4D0E-A612-FE1CC72241D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECA9D3FA-248F-4D0E-A612-FE1CC72241D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECA9D3FA-248F-4D0E-A612-FE1CC72241D5}.Release|Any CPU.Build.0 = Release|Any CPU
{C2F7971A-CFCE-4BE0-9A3A-805972A5F00B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2F7971A-CFCE-4BE0-9A3A-805972A5F00B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2F7971A-CFCE-4BE0-9A3A-805972A5F00B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2F7971A-CFCE-4BE0-9A3A-805972A5F00B}.Release|Any CPU.Build.0 = Release|Any CPU
{0DA0B251-66A6-441C-91B3-DFF953C53C4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DA0B251-66A6-441C-91B3-DFF953C53C4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DA0B251-66A6-441C-91B3-DFF953C53C4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DA0B251-66A6-441C-91B3-DFF953C53C4A}.Release|Any CPU.Build.0 = Release|Any CPU
{E71FE3BB-1793-460F-9802-77FB9BBC1356}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E71FE3BB-1793-460F-9802-77FB9BBC1356}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E71FE3BB-1793-460F-9802-77FB9BBC1356}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E71FE3BB-1793-460F-9802-77FB9BBC1356}.Release|Any CPU.Build.0 = Release|Any CPU
{9A5CDAEF-3767-4924-810E-C2018EFB5124}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A5CDAEF-3767-4924-810E-C2018EFB5124}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A5CDAEF-3767-4924-810E-C2018EFB5124}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9A5CDAEF-3767-4924-810E-C2018EFB5124}.Release|Any CPU.Build.0 = Release|Any CPU
{EE20EC4E-9C09-485A-8FBF-AF7FE253714D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EE20EC4E-9C09-485A-8FBF-AF7FE253714D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE20EC4E-9C09-485A-8FBF-AF7FE253714D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE20EC4E-9C09-485A-8FBF-AF7FE253714D}.Release|Any CPU.Build.0 = Release|Any CPU
{B08298CE-D261-4990-8458-17341992AD01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B08298CE-D261-4990-8458-17341992AD01}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B08298CE-D261-4990-8458-17341992AD01}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B08298CE-D261-4990-8458-17341992AD01}.Release|Any CPU.Build.0 = Release|Any CPU
{9D0D219B-AC06-4371-9BA1-630BC00FE0F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D0D219B-AC06-4371-9BA1-630BC00FE0F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D0D219B-AC06-4371-9BA1-630BC00FE0F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D0D219B-AC06-4371-9BA1-630BC00FE0F0}.Release|Any CPU.Build.0 = Release|Any CPU
{ADFC9BA9-405D-4900-B5A3-D7A6F6EED38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ADFC9BA9-405D-4900-B5A3-D7A6F6EED38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ADFC9BA9-405D-4900-B5A3-D7A6F6EED38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ADFC9BA9-405D-4900-B5A3-D7A6F6EED38B}.Release|Any CPU.Build.0 = Release|Any CPU
{0B7492A2-7B11-4BC1-A55D-5756B74F0055}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B7492A2-7B11-4BC1-A55D-5756B74F0055}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0B7492A2-7B11-4BC1-A55D-5756B74F0055}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B7492A2-7B11-4BC1-A55D-5756B74F0055}.Release|Any CPU.Build.0 = Release|Any CPU
{92808D98-A096-4C4D-A038-A1D359812E32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92808D98-A096-4C4D-A038-A1D359812E32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92808D98-A096-4C4D-A038-A1D359812E32}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92808D98-A096-4C4D-A038-A1D359812E32}.Release|Any CPU.Build.0 = Release|Any CPU
{D2019F8C-BD18-4DB5-9C38-1AF511D511FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2019F8C-BD18-4DB5-9C38-1AF511D511FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2019F8C-BD18-4DB5-9C38-1AF511D511FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2019F8C-BD18-4DB5-9C38-1AF511D511FC}.Release|Any CPU.Build.0 = Release|Any CPU
{57ED879F-2A6F-4618-AD0C-5896CAFA3902}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57ED879F-2A6F-4618-AD0C-5896CAFA3902}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57ED879F-2A6F-4618-AD0C-5896CAFA3902}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57ED879F-2A6F-4618-AD0C-5896CAFA3902}.Release|Any CPU.Build.0 = Release|Any CPU
{9A21CDDA-E03F-432B-A539-D553B69E1B5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A21CDDA-E03F-432B-A539-D553B69E1B5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A21CDDA-E03F-432B-A539-D553B69E1B5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9A21CDDA-E03F-432B-A539-D553B69E1B5E}.Release|Any CPU.Build.0 = Release|Any CPU
{A3CC8323-B8C0-402E-B0CF-F67029E5E9E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3CC8323-B8C0-402E-B0CF-F67029E5E9E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3CC8323-B8C0-402E-B0CF-F67029E5E9E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A3CC8323-B8C0-402E-B0CF-F67029E5E9E9}.Release|Any CPU.Build.0 = Release|Any CPU
{0DC9EE7D-7A8E-4CC7-AE0B-CBA74B5C3F72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DC9EE7D-7A8E-4CC7-AE0B-CBA74B5C3F72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DC9EE7D-7A8E-4CC7-AE0B-CBA74B5C3F72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DC9EE7D-7A8E-4CC7-AE0B-CBA74B5C3F72}.Release|Any CPU.Build.0 = Release|Any CPU
{E2327757-4988-4710-8A67-06A7EEC12DFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E2327757-4988-4710-8A67-06A7EEC12DFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E2327757-4988-4710-8A67-06A7EEC12DFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E2327757-4988-4710-8A67-06A7EEC12DFA}.Release|Any CPU.Build.0 = Release|Any CPU
{28AFEB19-6CDE-4AD9-9A83-BDCD98C3E386}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28AFEB19-6CDE-4AD9-9A83-BDCD98C3E386}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28AFEB19-6CDE-4AD9-9A83-BDCD98C3E386}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28AFEB19-6CDE-4AD9-9A83-BDCD98C3E386}.Release|Any CPU.Build.0 = Release|Any CPU
{B281B9FE-8F1F-471C-B399-C1D07DF575E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B281B9FE-8F1F-471C-B399-C1D07DF575E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B281B9FE-8F1F-471C-B399-C1D07DF575E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B281B9FE-8F1F-471C-B399-C1D07DF575E4}.Release|Any CPU.Build.0 = Release|Any CPU
{927AD997-604B-4553-B768-8BFC595E9D62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{927AD997-604B-4553-B768-8BFC595E9D62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{927AD997-604B-4553-B768-8BFC595E9D62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{927AD997-604B-4553-B768-8BFC595E9D62}.Release|Any CPU.Build.0 = Release|Any CPU
{76AF3503-CB33-4DFA-BE4F-F2EBB51EEA07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76AF3503-CB33-4DFA-BE4F-F2EBB51EEA07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{76AF3503-CB33-4DFA-BE4F-F2EBB51EEA07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76AF3503-CB33-4DFA-BE4F-F2EBB51EEA07}.Release|Any CPU.Build.0 = Release|Any CPU
{F2DEFDB5-29FD-44B9-A22C-A7D857BA60A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2DEFDB5-29FD-44B9-A22C-A7D857BA60A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2DEFDB5-29FD-44B9-A22C-A7D857BA60A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2DEFDB5-29FD-44B9-A22C-A7D857BA60A0}.Release|Any CPU.Build.0 = Release|Any CPU
{004C3502-A1E2-4CCC-AB8E-E823FCE3E916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{004C3502-A1E2-4CCC-AB8E-E823FCE3E916}.Debug|Any CPU.Build.0 = Debug|Any CPU
{004C3502-A1E2-4CCC-AB8E-E823FCE3E916}.Release|Any CPU.ActiveCfg = Release|Any CPU
{004C3502-A1E2-4CCC-AB8E-E823FCE3E916}.Release|Any CPU.Build.0 = Release|Any CPU
{1E26260F-8D99-4F9D-B20F-4B4B12A315E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E26260F-8D99-4F9D-B20F-4B4B12A315E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E26260F-8D99-4F9D-B20F-4B4B12A315E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E26260F-8D99-4F9D-B20F-4B4B12A315E1}.Release|Any CPU.Build.0 = Release|Any CPU
{A675EBDA-0021-406A-A0AA-5B27AF2902E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A675EBDA-0021-406A-A0AA-5B27AF2902E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A675EBDA-0021-406A-A0AA-5B27AF2902E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A675EBDA-0021-406A-A0AA-5B27AF2902E0}.Release|Any CPU.Build.0 = Release|Any CPU
{7927F5D8-D950-45E5-B832-894A325445DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7927F5D8-D950-45E5-B832-894A325445DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7927F5D8-D950-45E5-B832-894A325445DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7927F5D8-D950-45E5-B832-894A325445DC}.Release|Any CPU.Build.0 = Release|Any CPU
{749899E3-86F3-48FD-AF09-BBFDA8E0EA36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{749899E3-86F3-48FD-AF09-BBFDA8E0EA36}.Debug|Any CPU.Build.0 = Debug|Any CPU
{749899E3-86F3-48FD-AF09-BBFDA8E0EA36}.Release|Any CPU.ActiveCfg = Release|Any CPU
{749899E3-86F3-48FD-AF09-BBFDA8E0EA36}.Release|Any CPU.Build.0 = Release|Any CPU
{74500EF4-93FE-4B84-A538-BA94CEE73E92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74500EF4-93FE-4B84-A538-BA94CEE73E92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74500EF4-93FE-4B84-A538-BA94CEE73E92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74500EF4-93FE-4B84-A538-BA94CEE73E92}.Release|Any CPU.Build.0 = Release|Any CPU
{8420F159-401F-48F9-A206-CA5D5B0B4CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8420F159-401F-48F9-A206-CA5D5B0B4CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8420F159-401F-48F9-A206-CA5D5B0B4CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8420F159-401F-48F9-A206-CA5D5B0B4CDE}.Release|Any CPU.Build.0 = Release|Any CPU
{7E7E8768-198D-400A-B8C4-7E86BB38BE4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E7E8768-198D-400A-B8C4-7E86BB38BE4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E7E8768-198D-400A-B8C4-7E86BB38BE4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E7E8768-198D-400A-B8C4-7E86BB38BE4E}.Release|Any CPU.Build.0 = Release|Any CPU
{86C48FB7-09D7-47F5-A6C0-FB7C22A362B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{86C48FB7-09D7-47F5-A6C0-FB7C22A362B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{86C48FB7-09D7-47F5-A6C0-FB7C22A362B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{86C48FB7-09D7-47F5-A6C0-FB7C22A362B2}.Release|Any CPU.Build.0 = Release|Any CPU
{3458DCC4-55CB-424A-A5BF-9DB11F24D41F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3458DCC4-55CB-424A-A5BF-9DB11F24D41F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3458DCC4-55CB-424A-A5BF-9DB11F24D41F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3458DCC4-55CB-424A-A5BF-9DB11F24D41F}.Release|Any CPU.Build.0 = Release|Any CPU
{A0869700-2CA0-40F1-8AEA-5ADEA1204294}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A0869700-2CA0-40F1-8AEA-5ADEA1204294}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A0869700-2CA0-40F1-8AEA-5ADEA1204294}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A0869700-2CA0-40F1-8AEA-5ADEA1204294}.Release|Any CPU.Build.0 = Release|Any CPU
{911B7C56-1908-42B5-BCE8-860DE650AE31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{911B7C56-1908-42B5-BCE8-860DE650AE31}.Debug|Any CPU.Build.0 = Debug|Any CPU
{911B7C56-1908-42B5-BCE8-860DE650AE31}.Release|Any CPU.ActiveCfg = Release|Any CPU
{911B7C56-1908-42B5-BCE8-860DE650AE31}.Release|Any CPU.Build.0 = Release|Any CPU
{CAE0492C-11A3-424C-8613-7DAB83E4FB60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CAE0492C-11A3-424C-8613-7DAB83E4FB60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CAE0492C-11A3-424C-8613-7DAB83E4FB60}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CAE0492C-11A3-424C-8613-7DAB83E4FB60}.Release|Any CPU.Build.0 = Release|Any CPU
{4D055853-DE80-4145-BB2F-33EB6B379F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D055853-DE80-4145-BB2F-33EB6B379F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D055853-DE80-4145-BB2F-33EB6B379F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D055853-DE80-4145-BB2F-33EB6B379F5E}.Release|Any CPU.Build.0 = Release|Any CPU
{E4783690-052A-4AB0-837E-BDBC77CC7EEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4783690-052A-4AB0-837E-BDBC77CC7EEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E4783690-052A-4AB0-837E-BDBC77CC7EEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4783690-052A-4AB0-837E-BDBC77CC7EEC}.Release|Any CPU.Build.0 = Release|Any CPU
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Release|Any CPU.Build.0 = Release|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Release|Any CPU.Build.0 = Release|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Release|Any CPU.Build.0 = Release|Any CPU
{D56851BB-557E-4CF9-B724-8E607EEE9D07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D56851BB-557E-4CF9-B724-8E607EEE9D07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D56851BB-557E-4CF9-B724-8E607EEE9D07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D56851BB-557E-4CF9-B724-8E607EEE9D07}.Release|Any CPU.Build.0 = Release|Any CPU
{22BB3760-8DA1-4714-ADB7-1585A4EB8496}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{22BB3760-8DA1-4714-ADB7-1585A4EB8496}.Debug|Any CPU.Build.0 = Debug|Any CPU
{22BB3760-8DA1-4714-ADB7-1585A4EB8496}.Release|Any CPU.ActiveCfg = Release|Any CPU
{22BB3760-8DA1-4714-ADB7-1585A4EB8496}.Release|Any CPU.Build.0 = Release|Any CPU
{90D14180-20AC-44E6-BC7B-D9DA0868C5E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90D14180-20AC-44E6-BC7B-D9DA0868C5E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90D14180-20AC-44E6-BC7B-D9DA0868C5E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90D14180-20AC-44E6-BC7B-D9DA0868C5E1}.Release|Any CPU.Build.0 = Release|Any CPU
{F6A800FC-3DE0-410E-9096-92404F11E2D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6A800FC-3DE0-410E-9096-92404F11E2D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6A800FC-3DE0-410E-9096-92404F11E2D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6A800FC-3DE0-410E-9096-92404F11E2D1}.Release|Any CPU.Build.0 = Release|Any CPU
{09CDA563-DE16-41F6-B61C-56102E7D9B2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09CDA563-DE16-41F6-B61C-56102E7D9B2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09CDA563-DE16-41F6-B61C-56102E7D9B2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09CDA563-DE16-41F6-B61C-56102E7D9B2E}.Release|Any CPU.Build.0 = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE}.Release|Any CPU.Build.0 = Release|Any CPU
{B5C96536-6387-44F4-A2E2-D4D683588AF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B5C96536-6387-44F4-A2E2-D4D683588AF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B5C96536-6387-44F4-A2E2-D4D683588AF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B5C96536-6387-44F4-A2E2-D4D683588AF5}.Release|Any CPU.Build.0 = Release|Any CPU
{52F5A9DE-50B8-42C6-9980-E908DC6A4B52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52F5A9DE-50B8-42C6-9980-E908DC6A4B52}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52F5A9DE-50B8-42C6-9980-E908DC6A4B52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52F5A9DE-50B8-42C6-9980-E908DC6A4B52}.Release|Any CPU.Build.0 = Release|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EEA73CA-D8DD-F044-045D-F070F8831E26}.Release|Any CPU.Build.0 = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{164E4514-4E84-F13A-E24E-2A743753CDB3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D5ED348D-D6F0-4093-BD7D-20E05AA1EB7B} = {55400168-8E20-4D10-A3F0-FC591271E71F}
{17EA5194-BBE8-4CE1-B6F9-DF6829622F38} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{88AA0D46-597E-4969-8382-A3F8054B9409} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{CAC0D3A2-8BFA-4A84-A7FA-550A3BB16288} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{81CB5141-4FC5-413A-A516-CD65F40465C0} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{F5023AD3-D9C5-40C9-B76A-58D95E441997} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{4FD7B21B-3689-4D4A-BDD2-A07E2DC2E80C} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{FF3A193B-6131-4B4D-9729-1BF8A125C0AB} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{18A20311-84D8-49C4-B7BA-1187FF25E9BC} = {54C52918-0B8B-4036-B673-23BE74AFFA95}
{2C3FABD7-808B-47B5-A194-849A1738E9A2} = {927A4A04-56EF-4A0F-B17C-E80ABA78C554}
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126} = {7AF97C49-F445-4D77-9DBF-1A211933A471}
{9E213E6F-77CB-4068-93EB-465C47FDA8FA} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{CE1B9AD0-7CDA-4459-86A3-A3162C1095D9} = {927A4A04-56EF-4A0F-B17C-E80ABA78C554}
{2CA34976-4A80-485C-8572-6004829BB727} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{44E4EBFA-6F25-4FD7-A4B3-536C3A42677C} = {7C1D7F97-1D2C-47F3-B3E7-8275D57267C4}
{6489B162-2B28-42B9-9AD4-EB5CCBB8AE85} = {7C1D7F97-1D2C-47F3-B3E7-8275D57267C4}
{B6246B7A-4095-433A-B981-5D1E43CDF712} = {7C1D7F97-1D2C-47F3-B3E7-8275D57267C4}
{4B20572A-10E7-4414-943A-974F275677B4} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{9F96F261-93F7-47C0-8F07-72CE39CE20A3} = {035B86BF-DD63-4A78-B8CE-29994860C948}
{8395DA41-AF40-4B0D-B36D-FA8A56E75AED} = {035B86BF-DD63-4A78-B8CE-29994860C948}
{B3C2AFCC-EE59-4CB4-AB62-B90D60335632} = {035B86BF-DD63-4A78-B8CE-29994860C948}
{A03A98B6-19E9-4CCA-9801-AEFCBAAF5B72} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{00AB0A7E-578E-469C-B049-BCAA0233A9DD} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{90B326F6-99DF-4EEC-A480-26C27EE22237} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{96EBCB1F-DB7B-40BA-B59E-82FC1AE13EA0} = {927A4A04-56EF-4A0F-B17C-E80ABA78C554}
{6399C2FB-B063-4BB3-B605-88CE5303198B} = {927A4A04-56EF-4A0F-B17C-E80ABA78C554}
{D2F6105D-D667-46DB-8CDA-89B4D3F69067} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{CE550720-FA77-4FF3-B5F0-A2B7A1781E61} = {7B82C484-4DDF-45F2-B5FC-DFA9FFC3258B}
{ECA9D3FA-248F-4D0E-A612-FE1CC72241D5} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{C2F7971A-CFCE-4BE0-9A3A-805972A5F00B} = {7B82C484-4DDF-45F2-B5FC-DFA9FFC3258B}
{0DA0B251-66A6-441C-91B3-DFF953C53C4A} = {7B82C484-4DDF-45F2-B5FC-DFA9FFC3258B}
{E71FE3BB-1793-460F-9802-77FB9BBC1356} = {7B82C484-4DDF-45F2-B5FC-DFA9FFC3258B}
{927A4A04-56EF-4A0F-B17C-E80ABA78C554} = {54C52918-0B8B-4036-B673-23BE74AFFA95}
{7AF97C49-F445-4D77-9DBF-1A211933A471} = {54C52918-0B8B-4036-B673-23BE74AFFA95}
{9A5CDAEF-3767-4924-810E-C2018EFB5124} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{EE20EC4E-9C09-485A-8FBF-AF7FE253714D} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{B08298CE-D261-4990-8458-17341992AD01} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{9D0D219B-AC06-4371-9BA1-630BC00FE0F0} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{ADFC9BA9-405D-4900-B5A3-D7A6F6EED38B} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{0B7492A2-7B11-4BC1-A55D-5756B74F0055} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{92808D98-A096-4C4D-A038-A1D359812E32} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{D2019F8C-BD18-4DB5-9C38-1AF511D511FC} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{57ED879F-2A6F-4618-AD0C-5896CAFA3902} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{9A21CDDA-E03F-432B-A539-D553B69E1B5E} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{A3CC8323-B8C0-402E-B0CF-F67029E5E9E9} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{0DC9EE7D-7A8E-4CC7-AE0B-CBA74B5C3F72} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{E2327757-4988-4710-8A67-06A7EEC12DFA} = {26C224A8-EA29-4FB9-BA1D-9FFA1D8608E7}
{28AFEB19-6CDE-4AD9-9A83-BDCD98C3E386} = {26C224A8-EA29-4FB9-BA1D-9FFA1D8608E7}
{B281B9FE-8F1F-471C-B399-C1D07DF575E4} = {26C224A8-EA29-4FB9-BA1D-9FFA1D8608E7}
{927AD997-604B-4553-B768-8BFC595E9D62} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{76AF3503-CB33-4DFA-BE4F-F2EBB51EEA07} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{F2DEFDB5-29FD-44B9-A22C-A7D857BA60A0} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{004C3502-A1E2-4CCC-AB8E-E823FCE3E916} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{1E26260F-8D99-4F9D-B20F-4B4B12A315E1} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{A675EBDA-0021-406A-A0AA-5B27AF2902E0} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{7927F5D8-D950-45E5-B832-894A325445DC} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{749899E3-86F3-48FD-AF09-BBFDA8E0EA36} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{74500EF4-93FE-4B84-A538-BA94CEE73E92} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{8420F159-401F-48F9-A206-CA5D5B0B4CDE} = {459DEA84-19F7-49A2-BD23-F5B871DFF92D}
{7E7E8768-198D-400A-B8C4-7E86BB38BE4E} = {459DEA84-19F7-49A2-BD23-F5B871DFF92D}
{86C48FB7-09D7-47F5-A6C0-FB7C22A362B2} = {459DEA84-19F7-49A2-BD23-F5B871DFF92D}
{3458DCC4-55CB-424A-A5BF-9DB11F24D41F} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{A0869700-2CA0-40F1-8AEA-5ADEA1204294} = {AD002164-CFB4-4583-BF13-62C815009ADE}
{911B7C56-1908-42B5-BCE8-860DE650AE31} = {AD002164-CFB4-4583-BF13-62C815009ADE}
{CAE0492C-11A3-424C-8613-7DAB83E4FB60} = {AD002164-CFB4-4583-BF13-62C815009ADE}
{4D055853-DE80-4145-BB2F-33EB6B379F5E} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{E4783690-052A-4AB0-837E-BDBC77CC7EEC} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{1859E205-88DC-4E08-A0BD-55A045DCC495} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{6ECF678D-6F3A-4084-8538-A86C1D67C703} = {9C73D4E6-4408-4717-B51C-63C20321D4DA}
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3} = {9C73D4E6-4408-4717-B51C-63C20321D4DA}
{D56851BB-557E-4CF9-B724-8E607EEE9D07} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{22BB3760-8DA1-4714-ADB7-1585A4EB8496} = {618DAF98-06CE-48BB-8A48-60C92C55F9FC}
{618DAF98-06CE-48BB-8A48-60C92C55F9FC} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
{52E78BD0-DB63-4C5A-A88E-9AD3EFB2E618} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
{90D14180-20AC-44E6-BC7B-D9DA0868C5E1} = {52E78BD0-DB63-4C5A-A88E-9AD3EFB2E618}
{F6A800FC-3DE0-410E-9096-92404F11E2D1} = {52E78BD0-DB63-4C5A-A88E-9AD3EFB2E618}
{55400168-8E20-4D10-A3F0-FC591271E71F} = {6CB521FC-AC40-49A6-B9A5-91399CAA59AB}
{9CD04B74-AA10-4253-BEEC-4837D48AD3EB} = {6CB521FC-AC40-49A6-B9A5-91399CAA59AB}
{09CDA563-DE16-41F6-B61C-56102E7D9B2E} = {9CD04B74-AA10-4253-BEEC-4837D48AD3EB}
{7CF83493-6AF5-9C6D-01A7-AC7FC11BC2CE} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{B5C96536-6387-44F4-A2E2-D4D683588AF5} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{52F5A9DE-50B8-42C6-9980-E908DC6A4B52} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{0EEA73CA-D8DD-F044-045D-F070F8831E26} = {7844FF58-7DBF-46E1-88B7-9764382A4EE9}
{164E4514-4E84-F13A-E24E-2A743753CDB3} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6BB7A5DE-DA12-44DC-BC9B-0F6CA524346F}
EndGlobalSection
EndGlobal

34
aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/AIServiceModule.Configure.cs

@ -18,8 +18,9 @@ using Microsoft.Extensions.AI;
using Microsoft.Extensions.Caching.StackExchangeRedis;
using Microsoft.IdentityModel.Logging;
using Microsoft.IdentityModel.Tokens;
using Microsoft.OpenApi.Models;
using Microsoft.OpenApi;
using StackExchange.Redis;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using Volo.Abp.AspNetCore.Mvc;
@ -281,7 +282,7 @@ public partial class AIServiceModule
configuration["AuthServer:Authority"]!,
new Dictionary<string, string>
{
{ "AIService", "AI Service API"}
{ configuration["AuthServer:Audience"]!, "Identity Service API"}
},
options =>
{
@ -302,25 +303,18 @@ public partial class AIServiceModule
});
options.DocInclusionPredicate((docName, description) => true);
options.CustomSchemaIds(type => type.FullName);
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Scheme = "bearer",
Type = SecuritySchemeType.Http,
BearerFormat = "JWT"
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
options.DescribeAllParametersInCamelCase();
var xmlDocFiles = new List<string>();
xmlDocFiles.AddIfNotContains(Directory.GetFiles(AppContext.BaseDirectory, "LINGYUN.Abp.*.xml"));
xmlDocFiles.AddIfNotContains(Directory.GetFiles(AppContext.BaseDirectory, "Volo.Abp.*.xml"));
foreach (var xmlDocFile in xmlDocFiles)
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }
},
new string[] { }
}
});
options.IncludeXmlComments(xmlDocFile);
}
options.SchemaFilter<EnumDescriptionSchemaFilter>();
options.OperationFilter<TenantHeaderParamter>();
});
}

40
aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs

@ -0,0 +1,40 @@
using Microsoft.OpenApi;
using System.ComponentModel;
using System.Reflection;
namespace Swashbuckle.AspNetCore.SwaggerGen;
#nullable enable
public class EnumDescriptionSchemaFilter : ISchemaFilter
{
public void Apply(IOpenApiSchema schema, SchemaFilterContext context)
{
if (context.Type.IsEnum)
{
var enumType = context.Type;
var enumValues = Enum.GetValues(enumType);
var underlyingType = Enum.GetUnderlyingType(enumType);
var enumDesc = enumType.GetCustomAttribute<DescriptionAttribute>()?.Description ?? enumType.Name;
schema.Description += $"{enumDesc}<br />";
schema.Description += "<p>Options:</p><ul>";
foreach (var value in enumValues)
{
string? description = default!;
var name = Enum.GetName(enumType, value);
if (name != null)
{
var memberInfo = enumType.GetMember(name)[0];
description = memberInfo.GetCustomAttribute<DescriptionAttribute>()?.Description ?? name;
}
var numericValue = Convert.ChangeType(value, underlyingType);
schema.Description += $"<li><b>{numericValue}</b>: {name}({description ?? "No description."})</li>";
}
schema.Description += "</ul>";
}
}
}
#nullable disable

7
aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/TenantHeaderParamter.cs → aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs

@ -1,10 +1,9 @@
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.OpenApi;
using Volo.Abp.AspNetCore.MultiTenancy;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Abp.MicroService.AIService;
namespace Swashbuckle.AspNetCore.SwaggerGen;
public class TenantHeaderParamter : IOperationFilter
{
@ -22,7 +21,7 @@ public class TenantHeaderParamter : IOperationFilter
{
if (_multiTenancyOptions.IsEnabled)
{
operation.Parameters = operation.Parameters ?? new List<OpenApiParameter>();
operation.Parameters ??= new List<IOpenApiParameter>();
operation.Parameters.Add(new OpenApiParameter
{
Name = _aspNetCoreMultiTenancyOptions.TenantKey,

2
aspnet-core/aspire/LINGYUN.Abp.MicroService.AIService/appsettings.Development.json

@ -59,7 +59,7 @@
},
"AuthServer": {
"Authority": "http://localhost:44385/",
"Audience": "admin-service",
"Audience": "ai-service",
"ValidAudiences": [ "lingyun-abp-application" ],
"MapInboundClaims": false,
"RequireHttpsMetadata": false,

2
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/AdminServiceMigrationsDbContext.cs

@ -37,6 +37,8 @@ public class AdminServiceMigrationsDbContext :
public DbSet<PermissionGrant> PermissionGrants { get; set; }
public DbSet<ResourcePermissionGrant> ResourcePermissionGrants { get; set; }
public DbSet<Setting> Settings { get; set; }
public DbSet<SettingDefinitionRecord> SettingDefinitionRecords { get; set; }

4
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/AdminServiceMigrationsEntityFrameworkCoreModule.cs

@ -1,5 +1,6 @@
using LINGYUN.Abp.Account;
using LINGYUN.Abp.Auditing;
using LINGYUN.Abp.BlobManagement;
using LINGYUN.Abp.CachingManagement;
using LINGYUN.Abp.Data.DbMigrator;
using LINGYUN.Abp.DataProtectionManagement;
@ -14,7 +15,6 @@ using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore;
using LINGYUN.Abp.MessageService;
using LINGYUN.Abp.Notifications;
using LINGYUN.Abp.OpenIddict;
using LINGYUN.Abp.OssManagement;
using LINGYUN.Abp.ProjectManagement;
using LINGYUN.Abp.RulesEngineManagement;
using LINGYUN.Abp.Saas;
@ -49,7 +49,7 @@ namespace LINGYUN.Abp.MicroService.AdminService;
typeof(AbpIdentityServerApplicationContractsModule),
typeof(AbpLocalizationManagementApplicationContractsModule),
typeof(AbpOpenIddictApplicationContractsModule),
typeof(AbpOssManagementApplicationContractsModule),
typeof(AbpBlobManagementApplicationContractsModule),
typeof(AbpPermissionManagementApplicationContractsModule),
typeof(PlatformApplicationContractModule),
typeof(AbpProjectManagementApplicationContractsModule),

2
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore.csproj

@ -36,7 +36,7 @@
<ProjectReference Include="..\..\modules\identityServer\LINGYUN.Abp.IdentityServer.Application.Contracts\LINGYUN.Abp.IdentityServer.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\localization-management\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\openIddict\LINGYUN.Abp.OpenIddict.Application.Contracts\LINGYUN.Abp.OpenIddict.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\blob-management\LINGYUN.Abp.BlobManagement.Application.Contracts\LINGYUN.Abp.BlobManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\permissions-management\LINGYUN.Abp.PermissionManagement.Application.Contracts\LINGYUN.Abp.PermissionManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\platform\LINGYUN.Platform.Application.Contracts\LINGYUN.Platform.Application.Contracts.csproj" />
<ProjectReference Include="..\..\modules\project\LINGYUN.Abp.ProjectManagement.Application.Contracts\LINGYUN.Abp.ProjectManagement.Application.Contracts.csproj" />

1086
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/Migrations/20260403034826_Upgrade-Abp-Framework-To-10-2-0.Designer.cs

File diff suppressed because it is too large

109
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/Migrations/20260403034826_Upgrade-Abp-Framework-To-10-2-0.cs

@ -0,0 +1,109 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace LINGYUN.Abp.MicroService.AdminService.Migrations
{
/// <inheritdoc />
public partial class UpgradeAbpFrameworkTo1020 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_AbpPermissions_Name",
table: "AbpPermissions");
migrationBuilder.AlterColumn<string>(
name: "GroupName",
table: "AbpPermissions",
type: "character varying(128)",
maxLength: 128,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(128)",
oldMaxLength: 128);
migrationBuilder.AddColumn<string>(
name: "ManagementPermissionName",
table: "AbpPermissions",
type: "character varying(128)",
maxLength: 128,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ResourceName",
table: "AbpPermissions",
type: "character varying(256)",
maxLength: 256,
nullable: true);
migrationBuilder.CreateTable(
name: "AbpResourcePermissionGrants",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
TenantId = table.Column<Guid>(type: "uuid", nullable: true),
Name = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
ProviderName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
ProviderKey = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
ResourceName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
ResourceKey = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpResourcePermissionGrants", x => x.Id);
});
migrationBuilder.CreateIndex(
name: "IX_AbpPermissions_ResourceName_Name",
table: "AbpPermissions",
columns: new[] { "ResourceName", "Name" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_AbpResourcePermissionGrants_TenantId_Name_ResourceName_Reso~",
table: "AbpResourcePermissionGrants",
columns: new[] { "TenantId", "ResourceName", "ResourceKey", "ProviderName", "ProviderKey" },
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "AbpResourcePermissionGrants");
migrationBuilder.DropIndex(
name: "IX_AbpPermissions_ResourceName_Name",
table: "AbpPermissions");
migrationBuilder.DropColumn(
name: "ManagementPermissionName",
table: "AbpPermissions");
migrationBuilder.DropColumn(
name: "ResourceName",
table: "AbpPermissions");
migrationBuilder.AlterColumn<string>(
name: "GroupName",
table: "AbpPermissions",
type: "character varying(128)",
maxLength: 128,
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "character varying(128)",
oldMaxLength: 128,
oldNullable: true);
migrationBuilder.CreateIndex(
name: "IX_AbpPermissions_Name",
table: "AbpPermissions",
column: "Name",
unique: true);
}
}
}

55
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService.EntityFrameworkCore/Migrations/AdminServiceMigrationsDbContextModelSnapshot.cs

@ -19,7 +19,7 @@ namespace LINGYUN.Abp.MicroService.AdminService.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
.HasAnnotation("ProductVersion", "9.0.5")
.HasAnnotation("ProductVersion", "10.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@ -777,13 +777,16 @@ namespace LINGYUN.Abp.MicroService.AdminService.Migrations
.HasColumnName("ExtraProperties");
b.Property<string>("GroupName")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<bool>("IsEnabled")
.HasColumnType("boolean");
b.Property<string>("ManagementPermissionName")
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<byte>("MultiTenancySide")
.HasColumnType("smallint");
@ -800,6 +803,10 @@ namespace LINGYUN.Abp.MicroService.AdminService.Migrations
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<string>("ResourceName")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("StateCheckers")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
@ -808,7 +815,7 @@ namespace LINGYUN.Abp.MicroService.AdminService.Migrations
b.HasIndex("GroupName");
b.HasIndex("Name")
b.HasIndex("ResourceName", "Name")
.IsUnique();
b.ToTable("AbpPermissions", (string)null);
@ -873,6 +880,48 @@ namespace LINGYUN.Abp.MicroService.AdminService.Migrations
b.ToTable("AbpPermissionGroups", (string)null);
});
modelBuilder.Entity("Volo.Abp.PermissionManagement.ResourcePermissionGrant", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<string>("ProviderKey")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)");
b.Property<string>("ProviderName")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)");
b.Property<string>("ResourceKey")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("ResourceName")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("TenantId", "Name", "ResourceName", "ResourceKey", "ProviderName", "ProviderKey")
.IsUnique();
b.ToTable("AbpResourcePermissionGrants", (string)null);
});
modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b =>
{
b.Property<Guid>("Id")

34
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.Configure.cs

@ -14,8 +14,9 @@ using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Caching.StackExchangeRedis;
using Microsoft.IdentityModel.Logging;
using Microsoft.IdentityModel.Tokens;
using Microsoft.OpenApi.Models;
using Microsoft.OpenApi;
using StackExchange.Redis;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using Volo.Abp.AspNetCore.Mvc;
@ -272,7 +273,7 @@ public partial class AdminServiceModule
configuration["AuthServer:Authority"]!,
new Dictionary<string, string>
{
{ "AdminService", "Admin Service API"}
{ configuration["AuthServer:Audience"]!, "Identity Service API"}
},
options =>
{
@ -293,25 +294,18 @@ public partial class AdminServiceModule
});
options.DocInclusionPredicate((docName, description) => true);
options.CustomSchemaIds(type => type.FullName);
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Scheme = "bearer",
Type = SecuritySchemeType.Http,
BearerFormat = "JWT"
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
options.DescribeAllParametersInCamelCase();
var xmlDocFiles = new List<string>();
xmlDocFiles.AddIfNotContains(Directory.GetFiles(AppContext.BaseDirectory, "LINGYUN.Abp.*.xml"));
xmlDocFiles.AddIfNotContains(Directory.GetFiles(AppContext.BaseDirectory, "Volo.Abp.*.xml"));
foreach (var xmlDocFile in xmlDocFiles)
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }
},
new string[] { }
}
});
options.IncludeXmlComments(xmlDocFile);
}
options.SchemaFilter<EnumDescriptionSchemaFilter>();
options.OperationFilter<TenantHeaderParamter>();
});
}

2
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.cs

@ -17,7 +17,6 @@ using LINGYUN.Abp.FeatureManagement.HttpApi;
using LINGYUN.Abp.Identity.Session.AspNetCore;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.Logging.Serilog.Elasticsearch;
using LINGYUN.Abp.OssManagement.SettingManagement;
using LINGYUN.Abp.PermissionManagement;
using LINGYUN.Abp.PermissionManagement.HttpApi;
using LINGYUN.Abp.PermissionManagement.OrganizationUnits;
@ -59,7 +58,6 @@ namespace LINGYUN.Abp.MicroService.AdminService;
typeof(AbpTencentCloudSettingManagementModule),
// typeof(AbpWeChatSettingManagementModule),
typeof(AbpWxPusherSettingManagementModule),
typeof(AbpOssManagementSettingManagementModule),
typeof(AbpSettingManagementApplicationModule),
typeof(AbpSettingManagementHttpApiModule),

70
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Controllers/SettingMergeController.cs

@ -0,0 +1,70 @@
using LINGYUN.Abp.SettingManagement;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.MicroService.AdminService.Controllers;
[ExposeServices(
typeof(SettingController),
typeof(SettingMergeController))]
public class SettingMergeController : SettingController
{
private readonly SettingManagementMergeOptions _mergeOptions;
public SettingMergeController(
ISettingAppService settingAppService,
ISettingTestAppService settingTestAppService,
IOptions<SettingManagementMergeOptions> mergeOptions)
: base(settingAppService, settingTestAppService)
{
_mergeOptions = mergeOptions.Value;
}
[HttpGet]
[Route("by-current-tenant")]
public async override Task<SettingGroupResult> GetAllForCurrentTenantAsync()
{
var result = new SettingGroupResult();
var markTypeMap = new List<Type>
{
typeof(SettingMergeController),
};
foreach (var serviceType in _mergeOptions.GlobalSettingProviders
.Where(type => !markTypeMap.Any(markType => type.IsAssignableFrom(markType))))
{
var settingService = LazyServiceProvider.LazyGetRequiredService(serviceType).As<IReadonlySettingAppService>();
var currentResult = await settingService.GetAllForCurrentTenantAsync();
foreach (var group in currentResult.Items)
{
result.AddGroup(group);
}
markTypeMap.Add(serviceType);
}
return result;
}
[HttpGet]
[Route("by-global")]
public async override Task<SettingGroupResult> GetAllForGlobalAsync()
{
var result = new SettingGroupResult();
var markTypeMap = new List<Type>
{
typeof(SettingMergeController),
};
foreach (var serviceType in _mergeOptions.GlobalSettingProviders
.Where(type => !markTypeMap.Any(markType => type.IsAssignableFrom(markType))))
{
var settingService = LazyServiceProvider.LazyGetRequiredService(serviceType).As<IReadonlySettingAppService>();
var currentResult = await settingService.GetAllForGlobalAsync();
foreach (var group in currentResult.Items)
{
result.AddGroup(group);
}
markTypeMap.Add(serviceType);
}
return result;
}
}

45
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Controllers/UserSettingMergeController.cs

@ -0,0 +1,45 @@
using LINGYUN.Abp.SettingManagement;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.MicroService.AdminService.Controllers;
[ExposeServices(
typeof(UserSettingController),
typeof(UserSettingMergeController))]
public class UserSettingMergeController : UserSettingController
{
private readonly SettingManagementMergeOptions _mergeOptions;
public UserSettingMergeController(
IUserSettingAppService service,
IOptions<SettingManagementMergeOptions> mergeOptions)
: base(service)
{
_mergeOptions = mergeOptions.Value;
}
[HttpGet]
[Route("by-current-user")]
public async override Task<SettingGroupResult> GetAllForCurrentUserAsync()
{
var result = new SettingGroupResult();
var markTypeMap = new List<Type>
{
typeof(UserSettingMergeController),
};
foreach (var serviceType in _mergeOptions.UserSettingProviders
.Where(type => !markTypeMap.Any(markType => type.IsAssignableFrom(markType))))
{
var settingService = LazyServiceProvider.LazyGetRequiredService(serviceType).As<IUserSettingAppService>();
var currentResult = await settingService.GetAllForCurrentUserAsync();
foreach (var group in currentResult.Items)
{
result.AddGroup(group);
}
markTypeMap.Add(serviceType);
}
return result;
}
}

1
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/LINGYUN.Abp.MicroService.AdminService.csproj

@ -69,7 +69,6 @@
<ProjectReference Include="..\..\modules\feature-management\LINGYUN.Abp.FeatureManagement.Application\LINGYUN.Abp.FeatureManagement.Application.csproj" />
<ProjectReference Include="..\..\modules\feature-management\LINGYUN.Abp.FeatureManagement.HttpApi\LINGYUN.Abp.FeatureManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj" />
<ProjectReference Include="..\..\modules\oss-management\LINGYUN.Abp.OssManagement.SettingManagement\LINGYUN.Abp.OssManagement.SettingManagement.csproj" />
<ProjectReference Include="..\..\modules\permissions-management\LINGYUN.Abp.PermissionManagement.Application\LINGYUN.Abp.PermissionManagement.Application.csproj" />
<ProjectReference Include="..\..\modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain.OrganizationUnits\LINGYUN.Abp.PermissionManagement.Domain.OrganizationUnits.csproj" />
<ProjectReference Include="..\..\modules\permissions-management\LINGYUN.Abp.PermissionManagement.HttpApi\LINGYUN.Abp.PermissionManagement.HttpApi.csproj" />

40
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs

@ -0,0 +1,40 @@
using Microsoft.OpenApi;
using System.ComponentModel;
using System.Reflection;
namespace Swashbuckle.AspNetCore.SwaggerGen;
#nullable enable
public class EnumDescriptionSchemaFilter : ISchemaFilter
{
public void Apply(IOpenApiSchema schema, SchemaFilterContext context)
{
if (context.Type.IsEnum)
{
var enumType = context.Type;
var enumValues = Enum.GetValues(enumType);
var underlyingType = Enum.GetUnderlyingType(enumType);
var enumDesc = enumType.GetCustomAttribute<DescriptionAttribute>()?.Description ?? enumType.Name;
schema.Description += $"{enumDesc}<br />";
schema.Description += "<p>Options:</p><ul>";
foreach (var value in enumValues)
{
string? description = default!;
var name = Enum.GetName(enumType, value);
if (name != null)
{
var memberInfo = enumType.GetMember(name)[0];
description = memberInfo.GetCustomAttribute<DescriptionAttribute>()?.Description ?? name;
}
var numericValue = Convert.ChangeType(value, underlyingType);
schema.Description += $"<li><b>{numericValue}</b>: {name}({description ?? "No description."})</li>";
}
schema.Description += "</ul>";
}
}
}
#nullable disable

7
aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/TenantHeaderParamter.cs → aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs

@ -1,10 +1,9 @@
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.OpenApi;
using Volo.Abp.AspNetCore.MultiTenancy;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Abp.MicroService.AdminService;
namespace Swashbuckle.AspNetCore.SwaggerGen;
public class TenantHeaderParamter : IOperationFilter
{
@ -22,7 +21,7 @@ public class TenantHeaderParamter : IOperationFilter
{
if (_multiTenancyOptions.IsEnabled)
{
operation.Parameters = operation.Parameters ?? new List<OpenApiParameter>();
operation.Parameters ??= new List<IOpenApiParameter>();
operation.Parameters.Add(new OpenApiParameter
{
Name = _aspNetCoreMultiTenancyOptions.TenantKey,

6
aspnet-core/aspire/LINGYUN.Abp.MicroService.ApiGateway/ApiGatewayModule.cs

@ -1,5 +1,4 @@
using Autofac.Core;
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper;
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper;
using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using Microsoft.AspNetCore.Authentication.JwtBearer;
@ -8,8 +7,7 @@ using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.WebSockets;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using Microsoft.OpenApi;
using StackExchange.Redis;
using System;
using System.Collections.Generic;

4
aspnet-core/aspire/LINGYUN.Abp.MicroService.ApiGateway/yarp.json

@ -404,10 +404,10 @@
}
]
},
"oss-management-route": {
"blob-management-route": {
"ClusterId": "platform-service-cluster",
"Match": {
"Path": "/api/oss-management/{**everything}"
"Path": "/api/blob-management/{**everything}"
},
"Transforms": [
{

10
aspnet-core/aspire/LINGYUN.Abp.MicroService.AppHost/AppHost.cs

@ -3,10 +3,18 @@ using Microsoft.Extensions.Hosting;
var builder = DistributedApplication.CreateBuilder(args);
// Redis
var redis = builder.AddRedis("redis")
var redis = builder.AddRedis("redis",
password: builder.AddParameter("redis-password", "123456", secret: true))
.WithContainerName("redis")
.WithDataVolume("redis-dev");
if (builder.Environment.IsDevelopment())
{
#pragma warning disable ASPIRECERTIFICATES001
redis.WithoutHttpsCertificate();
#pragma warning restore ASPIRECERTIFICATES001
}
// Elasticsearch
var elasticsearch = builder.AddElasticsearch("elasticsearch")
.WithContainerName("elasticsearch")

23
aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/DataSeeds/OpenIddictDataSeeder.cs

@ -203,6 +203,7 @@ public class OpenIddictDataSeeder : OpenIddictDataSeedContributorBase, ITransien
"api-gateway",
"auth-server",
"admin-service",
"ai-service",
"identity-service",
"localization-service",
"message-service",
@ -423,6 +424,27 @@ public class OpenIddictDataSeeder : OpenIddictDataSeedContributorBase, ITransien
"workflow-service",
}
});
// AI Service
await CreateScopesAsync(new OpenIddictScopeDescriptor
{
Name = "ai-service",
DisplayName = "Artificial Intelligence Service",
DisplayNames =
{
[CultureInfo.GetCultureInfo("zh-Hans")] = "AI管理服务",
[CultureInfo.GetCultureInfo("en")] = "Artificial Intelligence Service"
},
Description = "适用于AI管理服务Swagger授权",
Descriptions =
{
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于AI管理服务Swagger授权",
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Artificial Intelligence service Swagger authorization"
},
Resources =
{
"ai-service",
}
});
}
private async Task CreateApplicationAsync(string scope)
@ -530,6 +552,7 @@ public class OpenIddictDataSeeder : OpenIddictDataSeedContributorBase, ITransien
"api-gateway",
"auth-server",
"admin-service",
"ai-service",
"identity-service",
"localization-service",
"message-service",

1361
aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/Migrations/20260402040021_Upgrade-Abp-Framework-To-10-2-0.Designer.cs

File diff suppressed because it is too large

91
aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/Migrations/20260402040021_Upgrade-Abp-Framework-To-10-2-0.cs

@ -0,0 +1,91 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace LINGYUN.Abp.MicroService.AuthServer.Migrations
{
/// <inheritdoc />
public partial class UpgradeAbpFrameworkTo1020 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTimeOffset>(
name: "LastSignInTime",
table: "AbpUsers",
type: "timestamp with time zone",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Leaved",
table: "AbpUsers",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.CreateTable(
name: "AbpUserPasskeys",
columns: table => new
{
CredentialId = table.Column<byte[]>(type: "bytea", maxLength: 1024, nullable: false),
TenantId = table.Column<Guid>(type: "uuid", nullable: true),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Data = table.Column<string>(type: "jsonb", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpUserPasskeys", x => x.CredentialId);
table.ForeignKey(
name: "FK_AbpUserPasskeys_AbpUsers_UserId",
column: x => x.UserId,
principalTable: "AbpUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AbpUserPasswordHistories",
columns: table => new
{
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Password = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
TenantId = table.Column<Guid>(type: "uuid", nullable: true),
CreatedAt = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpUserPasswordHistories", x => new { x.UserId, x.Password });
table.ForeignKey(
name: "FK_AbpUserPasswordHistories_AbpUsers_UserId",
column: x => x.UserId,
principalTable: "AbpUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_AbpUserPasskeys_UserId",
table: "AbpUserPasskeys",
column: "UserId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "AbpUserPasskeys");
migrationBuilder.DropTable(
name: "AbpUserPasswordHistories");
migrationBuilder.DropColumn(
name: "LastSignInTime",
table: "AbpUsers");
migrationBuilder.DropColumn(
name: "Leaved",
table: "AbpUsers");
}
}
}

112
aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer.EntityFrameworkCore/Migrations/AuthServerMigrationsDbContextModelSnapshot.cs

@ -19,7 +19,7 @@ namespace LINGYUN.Abp.MicroService.AuthServer.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
.HasAnnotation("ProductVersion", "10.0.0")
.HasAnnotation("ProductVersion", "10.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@ -458,6 +458,15 @@ namespace LINGYUN.Abp.MicroService.AuthServer.Migrations
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("timestamp with time zone");
b.Property<DateTimeOffset?>("LastSignInTime")
.HasColumnType("timestamp with time zone");
b.Property<bool>("Leaved")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("Leaved");
b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
@ -653,6 +662,47 @@ namespace LINGYUN.Abp.MicroService.AuthServer.Migrations
b.ToTable("AbpUserOrganizationUnits", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasskey", b =>
{
b.Property<byte[]>("CredentialId")
.HasMaxLength(1024)
.HasColumnType("bytea");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.HasKey("CredentialId");
b.HasIndex("UserId");
b.ToTable("AbpUserPasskeys", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasswordHistory", b =>
{
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.Property<string>("Password")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.HasKey("UserId", "Password");
b.ToTable("AbpUserPasswordHistories", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b =>
{
b.Property<Guid>("UserId")
@ -1151,6 +1201,62 @@ namespace LINGYUN.Abp.MicroService.AuthServer.Migrations
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasskey", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityUser", null)
.WithMany("Passkeys")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsOne("Volo.Abp.Identity.IdentityPasskeyData", "Data", b1 =>
{
b1.Property<byte[]>("IdentityUserPasskeyCredentialId");
b1.Property<byte[]>("AttestationObject");
b1.Property<byte[]>("ClientDataJson");
b1.Property<DateTimeOffset>("CreatedAt");
b1.Property<bool>("IsBackedUp");
b1.Property<bool>("IsBackupEligible");
b1.Property<bool>("IsUserVerified");
b1.Property<string>("Name");
b1.Property<byte[]>("PublicKey");
b1.Property<long>("SignCount");
b1.PrimitiveCollection<string>("Transports");
b1.HasKey("IdentityUserPasskeyCredentialId");
b1.ToTable("AbpUserPasskeys");
b1
.ToJson("Data")
.HasColumnType("jsonb");
b1.WithOwner()
.HasForeignKey("IdentityUserPasskeyCredentialId");
});
b.Navigation("Data");
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasswordHistory", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityUser", null)
.WithMany("PasswordHistories")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityRole", null)
@ -1233,6 +1339,10 @@ namespace LINGYUN.Abp.MicroService.AuthServer.Migrations
b.Navigation("OrganizationUnits");
b.Navigation("Passkeys");
b.Navigation("PasswordHistories");
b.Navigation("Roles");
b.Navigation("Tokens");

13
aspnet-core/aspire/LINGYUN.Abp.MicroService.AuthServer/AuthServerModule.Configure.cs

@ -1,6 +1,5 @@
using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.MultiTenancy;
using LINGYUN.Abp.BlobStoring.OssManagement;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.LocalizationManagement;
using LINGYUN.Abp.MicroService.AuthServer.Ui.Branding;
@ -15,13 +14,11 @@ using LINGYUN.Abp.Wrapper;
using Medallion.Threading;
using Medallion.Threading.Redis;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Caching.StackExchangeRedis;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@ -40,7 +37,6 @@ using System.Text.Unicode;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling;
using Volo.Abp.Auditing;
using Volo.Abp.BlobStoring;
using Volo.Abp.Caching;
@ -168,15 +164,6 @@ public partial class AuthServerModule
{
Configure<AbpBlobStoringOptions>(options =>
{
// all container use oss management
options.Containers.ConfigureAll((containerName, containerConfiguration) =>
{
// use oss management
containerConfiguration.UseOssManagement(config =>
{
config.Bucket = configuration[OssManagementBlobProviderConfigurationNames.Bucket];
});
});
});
}

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

Loading…
Cancel
Save