Browse Source

Merge branch 'dev' into SeedInSeparateUowAsync

pull/13940/head
maliming 4 years ago
parent
commit
318d3b9b6e
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 4
      .gitignore
  2. 79
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json
  3. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json
  4. 29
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json
  5. 3
      build/common.ps1
  6. 4
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs
  7. 53
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs
  8. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs
  9. 4
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json
  10. 2
      modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj
  11. 2
      modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs
  12. 16
      modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs
  13. 2
      modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj
  14. 2
      modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs
  15. 23
      modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs
  16. 2
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj
  17. 2
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs
  18. 23
      modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs
  19. 2
      modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj
  20. 2
      modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs
  21. 16
      modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs
  22. 2
      modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj
  23. 2
      modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs
  24. 23
      modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs
  25. 4
      modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json
  26. 2
      modules/blogging/src/Volo.Blogging.Installer/Volo.Blogging.Installer.csproj
  27. 2
      modules/blogging/src/Volo.Blogging.Installer/Volo/Blogging/BloggingInstallerModule.cs
  28. 17
      modules/blogging/src/Volo.Blogging.Installer/Volo/Blogging/BloggingInstallerPipelineBuilder.cs
  29. 31
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json
  30. 2
      modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj
  31. 2
      modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs
  32. 23
      modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs
  33. 2
      modules/docs/src/Volo.Docs.Installer/Volo.Docs.Installer.csproj
  34. 2
      modules/docs/src/Volo.Docs.Installer/Volo/Docs/DocsInstallerModule.cs
  35. 17
      modules/docs/src/Volo.Docs.Installer/Volo/Docs/DocsInstallerPipelineBuilder.cs
  36. 2
      modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj
  37. 2
      modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs
  38. 23
      modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs
  39. 2
      modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj
  40. 4
      modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs
  41. 24
      modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs
  42. 2
      modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj
  43. 2
      modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs
  44. 23
      modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs
  45. 2
      modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo.Abp.OpenIddict.Installer.csproj
  46. 2
      modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/AbpOpenIddictInstallerModule.cs
  47. 16
      modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/OpenIddictInstallerPipelineBuilder.cs
  48. 17
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json
  49. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj
  50. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs
  51. 23
      modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs
  52. 2
      modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj
  53. 2
      modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs
  54. 23
      modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs
  55. 2
      modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj
  56. 2
      modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs
  57. 23
      modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs
  58. 2
      modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj
  59. 2
      modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs
  60. 23
      modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs
  61. 2
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj
  62. 2
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs
  63. 16
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs
  64. 8
      nupkg/common.ps1
  65. 29
      studio/Volo.Abp.Studio.Open.abpmdl.json
  66. 7
      studio/Volo.Abp.Studio.Open.abpsln.json
  67. 49
      studio/Volo.Abp.Studio.Open.sln
  68. 1
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.abppkg.json
  69. 14
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj
  70. 8
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs
  71. 20
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs
  72. 23
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs
  73. 16
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs
  74. 16
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs
  75. 24
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs
  76. 6
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs
  77. 24
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs
  78. 11
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs
  79. 17
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs
  80. 24
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs
  81. 19
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs
  82. 39
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs
  83. 15
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs
  84. 15
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs
  85. 25
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs
  86. 8
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs
  87. 19
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs
  88. 25
      studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs
  89. 1
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.abppkg.json
  90. 21
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj
  91. 16
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs
  92. 27
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs
  93. 36
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs
  94. 76
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs
  95. 261
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs
  96. 10
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs
  97. 25
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs
  98. 17
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs
  99. 35
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs
  100. 162
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs

4
.gitignore

@ -323,3 +323,7 @@ deploy/npm-auth-token.txt
deploy/ssh-password.txt deploy/ssh-password.txt
deploy/github-api-key.txt deploy/github-api-key.txt
deploy/_run_all_log.txt deploy/_run_all_log.txt
# No commit yarn.lock files in the subfolders of templates directory
templates/**/yarn.lock

79
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json

@ -316,14 +316,12 @@
"TrialLicenseStatusFilter": "地位", "TrialLicenseStatusFilter": "地位",
"TrialLicenseStartDateFilter": "开始日期", "TrialLicenseStartDateFilter": "开始日期",
"TrialLicenseEndDateFilter": "结束日期", "TrialLicenseEndDateFilter": "结束日期",
"FirsName": "名", "FirstName": "名字",
"LastName": "姓", "LastName": "姓",
"StartDate": "开始日期", "StartDate": "开始日期",
"EndDate": "结束日期", "EndDate": "结束日期",
"PurchasedDate": "购买日期", "PurchasedDate": "购买日期",
"OrganizationDetail": "组织详情", "OrganizationDetail": "组织详情",
"SendActivationMail": "发送激活邮件",
"ActivationMailSentSuccessfully": "激活邮件发送成功!",
"TrialLicenseStatus": "试用许可证状态", "TrialLicenseStatus": "试用许可证状态",
"TrialLicenseDetail": "试用许可证详情", "TrialLicenseDetail": "试用许可证详情",
"AcceptsMarketingCommunications": "营销传播", "AcceptsMarketingCommunications": "营销传播",
@ -337,17 +335,68 @@
"Expired": "已到期", "Expired": "已到期",
"TrialLicenseDeletionWarningMessage": "您确定要删除试用许可证吗?试用许可证、组织、支持帐户将被删除!", "TrialLicenseDeletionWarningMessage": "您确定要删除试用许可证吗?试用许可证、组织、支持帐户将被删除!",
"LicenseCategoryFilter": "执照类别", "LicenseCategoryFilter": "执照类别",
"Volo.AbpIo.Commercial:030000": "您已经使用了试用期。", "Permission:SendWelcomeEmail": "发送欢迎邮件",
"Volo.AbpIo.Commercial:030001": "此组织名称已存在。", "SendWelcomeEmail": "发送欢迎邮件",
"Volo.AbpIo.Commercial:030002": "一旦激活,试用许可证不能设置为请求!", "SendWelcomeEmailWarningMessage": "你确定要发送欢迎邮件给组织成员吗?",
"Volo.AbpIo.Commercial:030003": "没有这种状态!", "SendWelcomeEmailSuccessMessage": "欢迎邮件发送成功!",
"Volo.AbpIo.Commercial:030004": "由于意外错误,无法更改状态!", "Activate": "激活",
"Volo.AbpIo.Commercial:030005": "当试用许可证处于 -activated- 状态时,可以更新开始和结束日期!", "ActivateTrialLicenseWarningMessage": "激活试用版权限后,将发送欢迎邮件给用户。你确定要激活吗?",
"Volo.AbpIo.Commercial:030006": "结束日期必须始终大于开始日期!", "ActivateTrialLicenseSuccessMessage": "激活成功,欢迎邮件已发送给组织成员。",
"Volo.AbpIo.Commercial:030007": "此试用许可证已激活一次!", "PaymentRequestId": "付款请求编号",
"Volo.AbpIo.Commercial:030008": "购买日期只能在状态为已购买时设置!", "AdditionalDeveloperCount": "额外开发者数量",
"Volo.AbpIo.Commercial:030009": "未找到用户!", "LicensePrice": "版权价格",
"Volo.AbpIo.Commercial:030010": "要购买试用许可证,首先您需要激活您的试用许可证!", "PurchaseDate": "购买日期",
"Volo.AbpIo.Commercial:030011": "购买后,您无法删除试用许可证!" "IsAbpBookDownloaded": "ABP书籍已下载",
"IsMasteringAbpBookDownloadEnabled": "ABP书籍下载已启用",
"Permission:Accounting:CustomPaymentLinkGenerator": "自定义付款链接",
"CustomPaymentLink": "自定义付款链接",
"Menu:CustomPaymentLink": "自定义付款链接",
"Amount": "金额",
"GenerateCustomPaymentLink": "生成自定义付款链接",
"GeneratedPaymentLink": "生成的付款链接",
"CopyText": "复制文本",
"Permission:CommunityEvents": "活动",
"Menu:Events": "活动",
"Events": "活动",
"EventType": "活动类型",
"Number": "数量",
"RegistrationURL": "报名网址",
"URL": "网址",
"EventDeletionConfirmationMessage": "你确定要删除这个活动吗?",
"Enum:EventType:0": "社区讲话",
"CreateAnEvent": "创建一个活动",
"Permission:CommunitySpeakers": "演讲者",
"CreateASpeaker": "创建一个演讲者",
"Speakers": "演讲者",
"Image": "图片",
"GithubURL": "Github网址",
"SpeakerDeletionConfirmationMessage": "你确定要删除这个演讲者吗?",
"Menu:Speakers": "演讲者",
"ChooseSpeakerImage": "选择一个演讲者图片...",
"SpeakerImage": "演讲者图片",
"AddSpeaker": "添加演讲者",
"ShowPurchaseItemsOfOrganizations": "购买项目",
"Enum:OrganizationPurchaseState:0": "未送达",
"Enum:OrganizationPurchaseState:1": "已送达",
"PurchaseItems": "购买项目",
"SuccessfullyUpdated": "成功更新",
"SuccessfullyAdded": "成功添加",
"PurchaseState": "购买状态",
"ShowBetweenDayCount": "显示之间的天数",
"PurchaseOrder": "购买订单",
"ShowCreateInvoiceOfOrganization": "创建发票",
"ShowCreateQuotationOfOrganization": "创建报价单",
"BookDiscounts": "书籍折扣",
"Permission:BookDiscount": "书籍折扣",
"Menu:BookDiscounts": "书籍折扣",
"BookType": "书籍类型",
"PurchasePlatform": "购买平台",
"StartTime": "开始时间",
"EndTime": "结束时间",
"CreateABookDiscount": "创建一个书籍折扣",
"BookDiscountDeletionConfirmationMessage": "你确定要删除这个书籍折扣吗?",
"CustomPaymentFlexSwitchDescription": "授权",
"AllowFeatureUpgradeOnLicenseExpire": "允许在授权过期时进行功能升级",
"Deleted{0}": "[已删除 {0}]"
} }
} }

3
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json

@ -164,6 +164,9 @@
"Error_Page_500_Description_1": "我们会自动跟踪这些错误,但如果问题仍然存在,请随时 <br /> 联系我们。 与此同时,尝试刷新。", "Error_Page_500_Description_1": "我们会自动跟踪这些错误,但如果问题仍然存在,请随时 <br /> 联系我们。 与此同时,尝试刷新。",
"Error_Page_500_Description_2": "通过 <a href=\"mailto:info@abp.io\" target=\"_blank\">info@abp.io</a> 与我们联系。", "Error_Page_500_Description_2": "通过 <a href=\"mailto:info@abp.io\" target=\"_blank\">info@abp.io</a> 与我们联系。",
"Books": "书籍", "Books": "书籍",
"ABPDiscordServer": "ABP Discord 服务器",
"ABPCommunityTalks": "ABP社区讲话",
"ABPCommunityPosts": "ABP社区文章",
"BuyAndGetMonths": "购买 12 个月,<span class=\"text-info\">获得 14 个月!</span>", "BuyAndGetMonths": "购买 12 个月,<span class=\"text-info\">获得 14 个月!</span>",
"GetYourDeal": "得到你的交易", "GetYourDeal": "得到你的交易",
"BuyOrRenewLicense": "立即购买或续订许可证并额外获得 2 个月!", "BuyOrRenewLicense": "立即购买或续订许可证并额外获得 2 个月!",

29
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json

@ -137,7 +137,6 @@
"Success": "成功", "Success": "成功",
"WeWillReplyYou": "你的消息已经发送! 我们会在短时间内给你答复.", "WeWillReplyYou": "你的消息已经发送! 我们会在短时间内给你答复.",
"GoHome": "回到主页面", "GoHome": "回到主页面",
"Home": "主页",
"CreateLiveDemo": "创建在线演示", "CreateLiveDemo": "创建在线演示",
"RegisterToTheNewsletter": "注册到时事简报以获取有关ABP.IO的消息,比如新发布的内容.", "RegisterToTheNewsletter": "注册到时事简报以获取有关ABP.IO的消息,比如新发布的内容.",
"EnterYourEmailOrLogin": "输入你的e-mail地址来创建你的演示或者使用你的已有账号<a href=\"{0}\">登录</a>.", "EnterYourEmailOrLogin": "输入你的e-mail地址来创建你的演示或者使用你的已有账号<a href=\"{0}\">登录</a>.",
@ -184,6 +183,7 @@
"ChangingLicenseType": "将来更改我的许可类型吗?", "ChangingLicenseType": "将来更改我的许可类型吗?",
"ChangingLicenseTypeExplanation": "你始终可以在同一许可中添加新的开发人员. 参阅 \"有多少开发者可以参与ABP商业版工作?\". 你还可以通过支付计算出的价格差来升级到更高的许可. 当你升级到更高的许可计划时,可以享受新计划的好处,但是许可升级不会更改许可的到期日期.", "ChangingLicenseTypeExplanation": "你始终可以在同一许可中添加新的开发人员. 参阅 \"有多少开发者可以参与ABP商业版工作?\". 你还可以通过支付计算出的价格差来升级到更高的许可. 当你升级到更高的许可计划时,可以享受新计划的好处,但是许可升级不会更改许可的到期日期.",
"LicenseExtendUpgradeDiff": "许可扩展和升级有什么区别?", "LicenseExtendUpgradeDiff": "许可扩展和升级有什么区别?",
"LicenseExtendUpgradeDiffExplanation": "<strong>延长:</strong> 你通过延长/续费你的许可证,你将继续获得高级支持和主要或次要更新模块和主题。除此之外,你还将继续创建新的项目。并且你仍然可以使用ABP Suite,这将加快你的开发。当你延长你的许可证时,1年将添加到你的许可证到期日。<hr/><strong>升级:</strong> 你通过升级你的许可证,你将晋升到更高的许可证方案,这将允许你获得额外的奖励。查看<a href=\"/pricing\">许可证比较表</a>来查看许可证方案之间的差异。<strong>但是,当你升级时,你的许可证到期日不会更改!</strong>要延长你的许可证结束日期,你需要延长你的许可证。",
"LicenseRenewalCost": "一年后的许可续期费用是多少?", "LicenseRenewalCost": "一年后的许可续期费用是多少?",
"LicenseRenewalCostExplanation": "标准 Team 许可证的续订(扩展)价格为 ${0},标准 Business License 为 ${1},标准 Enterprise License 为 ${2}。 如果您已经是客户,请<a href='{3}' target='_blank'>登录您的帐户</a>查看可用的续订价格。", "LicenseRenewalCostExplanation": "标准 Team 许可证的续订(扩展)价格为 ${0},标准 Business License 为 ${1},标准 Enterprise License 为 ${2}。 如果您已经是客户,请<a href='{3}' target='_blank'>登录您的帐户</a>查看可用的续订价格。",
"HowDoIRenewMyLicense": "如何续费我的许可证?", "HowDoIRenewMyLicense": "如何续费我的许可证?",
@ -195,10 +195,19 @@
"IsSourceCodeIncludedExplanation4": "<p>将模块的源代码包含到解决方案中,可以最大程度地自定义该模块. 但是当新版本发布时,将无法自动升级模块.</p><p>这些许可均不包含ABP Suite源代码,该源代码是一个外部工具,可以为你生成代码并帮助你进行开发</p><p>有关许可类型之间的其它差异查看<a href=\"{0}\">定价</a>页面.</p>", "IsSourceCodeIncludedExplanation4": "<p>将模块的源代码包含到解决方案中,可以最大程度地自定义该模块. 但是当新版本发布时,将无法自动升级模块.</p><p>这些许可均不包含ABP Suite源代码,该源代码是一个外部工具,可以为你生成代码并帮助你进行开发</p><p>有关许可类型之间的其它差异查看<a href=\"{0}\">定价</a>页面.</p>",
"ChangingDevelopers": "我将来可以更改我组织的注册开发人员吗?", "ChangingDevelopers": "我将来可以更改我组织的注册开发人员吗?",
"ChangingDevelopersExplanation": "除了将新的开发人员添加到你的许可中之外,你还可以更改现有的开发人员(可以删除一个开发人员并将新的开发人员添加到同一位置),而无需任何额外费用.", "ChangingDevelopersExplanation": "除了将新的开发人员添加到你的许可中之外,你还可以更改现有的开发人员(可以删除一个开发人员并将新的开发人员添加到同一位置),而无需任何额外费用.",
"WhatHappensWhenLicenseEnds": "我的许可证期间结束时,会发生什么?",
"WhatHappensWhenLicenseEndsExplanation1": "你的ABP商业许可证是一个<a href=\"{0}\" target=\"_blank\">永久许可证</a>。你的许可证到期后,你可以继续开发你的项目。并且你不需要续费你的许可证。你的许可证是一年更新和支持方案默认的。为了继续获得新的功能,性能改进,修复,支持和继续使用ABP Suite,你需要续费你的许可证。你的许可证到期后,你将失去以下功能:",
"WhatHappensWhenLicenseEndsExplanation2": "你不能使用ABP商业创建新的解决方案,但是你可以继续开发你现有的应用程序。",
"WhatHappensWhenLicenseEndsExplanation3": "你将能够获得模块和主题的更新(除了RC或预览版本)。例如,如果你使用模块的v3.2.0版本,你仍然可以获得v3.2.x版本的更新(v3.2.1,v3.2.5...等等)。但是,你不能获得下一个主要或次要版本的更新(例如v3.3.0,v3.3.3,4.x.x...等等)。例如,你的许可证到期后,最新的发行是v4.4.3,之后,它发布了4.4.4版本和4.5.0版本,你将能够访问v4.4.X,但你不能访问v4.5.X。",
"WhatHappensWhenLicenseEndsExplanation4": "你不能在你的许可证到期后安装ABP商业平台上添加的新模块和主题。",
"WhatHappensWhenLicenseEndsExplanation5": "你不能使用ABP Suite。",
"WhatHappensWhenLicenseEndsExplanation6": "你不能再获得<a href=\"{0}\">高级支持</a>。",
"WhatHappensWhenLicenseEndsExplanation7": "如果你想继续获得这些奖励,你可以继续续费你的许可证。如果你在许可证到期后<strong>1个月</strong>内续费,将会应用以下折扣:团队许可证{0}%折扣,商业许可证{1}%折扣,企业许可证{2}%折扣。",
"WhatHappensWhenLicenseEndsExplanation8": "您生成的 ABP 项目未存储在我们的服务器上。 因此,您有责任保留下载的源代码。 当您的许可证到期时,将无法获取您生成的 ABP 项目源代码。", "WhatHappensWhenLicenseEndsExplanation8": "您生成的 ABP 项目未存储在我们的服务器上。 因此,您有责任保留下载的源代码。 当您的许可证到期时,将无法获取您生成的 ABP 项目源代码。",
"WhenShouldIRenewMyLicense": "我什么时候应该续订我的许可?", "WhenShouldIRenewMyLicense": "我什么时候应该续订我的许可?",
"WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后 <strong>1 个月</strong>内续订许可证,将享受以下折扣:团队许可证 {0}% 折扣、商业许可证 {1}% 折扣、企业许可证 {2}% 折扣 . 如果您在许可证到期后 <strong>1 个月</strong>续订许可证,续订价格将与许可证购买价格相同,并且续订不会有折扣。", "WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后 <strong>1 个月</strong>内续订许可证,将享受以下折扣:团队许可证 {0}% 折扣、商业许可证 {1}% 折扣、企业许可证 {2}% 折扣 . 如果您在许可证到期后 <strong>1 个月</strong>续订许可证,续订价格将与许可证购买价格相同,并且续订不会有折扣。",
"TrialPlan": "你们有试用计划吗?", "TrialPlan": "你们有试用计划吗?",
"TrialPlanExplanation": "ABP商业团队许可证有14天的试用期。若要了解更多信息,请访问<a href={0} target='_blank'>这里</a>。此外,我们为团队许可证提供30天的金额返还保证。你只需要在30天内请求退款。商业和企业许可证将提供60%的金额返还保证。这是因为商业和企业许可证包含了所有模块和主题的全部源代码。",
"DoYouAcceptBankWireTransfer": "你们接受银行电汇吗?", "DoYouAcceptBankWireTransfer": "你们接受银行电汇吗?",
"DoYouAcceptBankWireTransferExplanation": "是的,我们接受银行电汇。<br />在通过银行转账发送许可费后,将您的收据和所需的许可类型通过电子邮件发送至accounting@abp.io。 我们的国际银行账户信息:", "DoYouAcceptBankWireTransferExplanation": "是的,我们接受银行电汇。<br />在通过银行转账发送许可费后,将您的收据和所需的许可类型通过电子邮件发送至accounting@abp.io。 我们的国际银行账户信息:",
"HowToUpgrade": "可用新版本时如何升级现有应用程序?", "HowToUpgrade": "可用新版本时如何升级现有应用程序?",
@ -365,7 +374,9 @@
"CompanySize": "公司规模", "CompanySize": "公司规模",
"Next": "下一个", "Next": "下一个",
"StartTrial": "开始我的免费试用", "StartTrial": "开始我的免费试用",
"ContactUsQuestions": "如果你有任何问题,请联系我们",
"TrialActivatedWarning": "亲爱的{0},用户只能享受 1 个免费试用期。您已经使用了试用期。", "TrialActivatedWarning": "亲爱的{0},用户只能享受 1 个免费试用期。您已经使用了试用期。",
"ActivationRequirement": "你已经距离开始你的试用还有最后一步。<br>检查你的信息后,我们将激活你的许可证。一旦你的许可证激活,我们将向<b>{0}</b>发送电子邮件。请不要担心,这个过程不会太久!",
"SaveAndDownload": "保存和下载", "SaveAndDownload": "保存和下载",
"CompanyNameValidationMessage": "公司名称太长!", "CompanyNameValidationMessage": "公司名称太长!",
"AddressValidationMessage": "地址太长!", "AddressValidationMessage": "地址太长!",
@ -389,6 +400,7 @@
"UserDeveloperDescription": "“开发人员”可以在 ABP 商业版项目中编写代码,下载 ABP 示例项目,并在支持的网站上进行提问。 然而另一方面,“开发者”无法管理这个组织。", "UserDeveloperDescription": "“开发人员”可以在 ABP 商业版项目中编写代码,下载 ABP 示例项目,并在支持的网站上进行提问。 然而另一方面,“开发者”无法管理这个组织。",
"RemoveCurrentUserFromOrganizationWarningMessage": "您正在将自己从自己的组织中移除。 您将无法再管理此组织,您确定吗?", "RemoveCurrentUserFromOrganizationWarningMessage": "您正在将自己从自己的组织中移除。 您将无法再管理此组织,您确定吗?",
"RenewExistingOrganizationOrCreateNewOneMessage": "您可以通过单击下面的 \"立即延长\"按钮来更新您组织的许可证,因此您可以将许可证到期日期延长 1 年。 如果您继续结帐,您将拥有一个新的组织。 您想继续开始新的组织许可吗?", "RenewExistingOrganizationOrCreateNewOneMessage": "您可以通过单击下面的 \"立即延长\"按钮来更新您组织的许可证,因此您可以将许可证到期日期延长 1 年。 如果您继续结帐,您将拥有一个新的组织。 您想继续开始新的组织许可吗?",
"PurchaseTrialOrganizationOrCreateNewOneMessage": "你有试用许可证。如果你想购买试用许可证,请点击“立即购买”按钮。如果你继续支付,你将会有一个新的组织。你想继续使用一个新的组织吗?",
"ExtendNow": "立即延长", "ExtendNow": "立即延长",
"CreateNewOrganization": "建立新的组织", "CreateNewOrganization": "建立新的组织",
"RenewLicenseEarly": "如果我提前更新我的许可证,我会得到一整年吗?", "RenewLicenseEarly": "如果我提前更新我的许可证,我会得到一整年吗?",
@ -524,6 +536,7 @@
"Pricing_Page_Testimonial_2": "我们看到了使用 ABP Commercial 能减少定制开发项目开销的价值。 并且团队能够在不同的项目流中统一代码模式。 我们在框架中看到了能比以前更快地构建新功能的更多潜力。 我们相信我们将会持续地看到使用 ABP Commercial 的价值。", "Pricing_Page_Testimonial_2": "我们看到了使用 ABP Commercial 能减少定制开发项目开销的价值。 并且团队能够在不同的项目流中统一代码模式。 我们在框架中看到了能比以前更快地构建新功能的更多潜力。 我们相信我们将会持续地看到使用 ABP Commercial 的价值。",
"Pricing_Page_Testimonial_3": "我们大爱 ABP。 我们不必从头开始编写所有内容。 我们从\"开箱即用\"的功能开始,只需关注我们真正需要编写的内容。 此外,ABP 架构良好,代码质量高,错误少。 如果我们需要自己来编写所需的一切,我们可能需要花费数年时间。 另一点让我们喜欢的是新版本、问题修复或改进每隔一周很快地就会出现。 我们不会等太久。", "Pricing_Page_Testimonial_3": "我们大爱 ABP。 我们不必从头开始编写所有内容。 我们从\"开箱即用\"的功能开始,只需关注我们真正需要编写的内容。 此外,ABP 架构良好,代码质量高,错误少。 如果我们需要自己来编写所需的一切,我们可能需要花费数年时间。 另一点让我们喜欢的是新版本、问题修复或改进每隔一周很快地就会出现。 我们不会等太久。",
"Pricing_Page_Testimonial_4": "ABP 商业版 是一款很值得推荐的出色产品。 是在一个可配置的平台上为我们的客户推向市场的商业产品。 其框架和工具为任何团队提供的快速启动值得每一分钱。 ABP 商业版 最适合我们的需求。", "Pricing_Page_Testimonial_4": "ABP 商业版 是一款很值得推荐的出色产品。 是在一个可配置的平台上为我们的客户推向市场的商业产品。 其框架和工具为任何团队提供的快速启动值得每一分钱。 ABP 商业版 最适合我们的需求。",
"Pricing_Page_Testimonial_5": "ABP Framework 不仅是一个框架,它还是项目开发/管理的指南,因为它提供了 DDD、GenericRepository、DI、微服务和模块化培训。 即使你不打算使用框架本身,你也可以通过 docs.abp.io 进行自己的开发,该文档已经做好了专业的准备(OpenIddict、Redis、Quartz 等)。 因为很多东西都是预先构建的,它大大缩短了项目开发时间(例如登录页面、异常处理、数据过滤、种子、审计日志、本地化、自动 API 控制器等)。 作为我们应用程序的一个示例,我使用本地事件总线进行库存控制。 因此我可以通过编写库存处理程序来管理订单移动。 不为 CreationTime,CreatorId 浪费时间真是太好了。 它们正在自动填充。",
"AbpBookDownloadArea_ClaimYourEBook": "领取您的<span class='gradient-framework'>掌握ABP框架</span>电子书", "AbpBookDownloadArea_ClaimYourEBook": "领取您的<span class='gradient-framework'>掌握ABP框架</span>电子书",
"AddMemberModal_Warning_1": "如果您尝试添加的<strong>用户名</strong>在系统中不存在,请让您的团队成员在 <a href='{0}/账户/注册'>{0}</ 上注册 a> 并与您分享他/她帐户的用户名。", "AddMemberModal_Warning_1": "如果您尝试添加的<strong>用户名</strong>在系统中不存在,请让您的团队成员在 <a href='{0}/账户/注册'>{0}</ 上注册 a> 并与您分享他/她帐户的用户名。",
"MyOrganizations_Detail_WelcomeMessage": "欢迎加入您的组织,{0}", "MyOrganizations_Detail_WelcomeMessage": "欢迎加入您的组织,{0}",
@ -591,6 +604,9 @@
"TrainingDetailsHeaderInfo_TrainingHour": "{0} 小时", "TrainingDetailsHeaderInfo_TrainingHour": "{0} 小时",
"Trainings_Content": "培训内容", "Trainings_Content": "培训内容",
"Trial_Page_StartYourFreeTrial": "开始您的<span class=\"gradient-commercial\">免费试用</span>", "Trial_Page_StartYourFreeTrial": "开始您的<span class=\"gradient-commercial\">免费试用</span>",
"TrialLicenseFeatures": "你将能够享受所有 ABP 商业特性",
"TrialPeriodDays": "你将有 {0} 天的团队许可证",
"TrialForumSupportIncident": "你将有 {0} 个论坛支持事件",
"Contact_Page_Title": "联系 ABP 开发团队", "Contact_Page_Title": "联系 ABP 开发团队",
"Contact_Page_Description": "如果您需要任何帮助或分享您的想法和意见,请与 ABP 开发团队联系! ABP 支持团队随时准备提供帮助。", "Contact_Page_Description": "如果您需要任何帮助或分享您的想法和意见,请与 ABP 开发团队联系! ABP 支持团队随时准备提供帮助。",
"Demo_Page_Title": "创建演示", "Demo_Page_Title": "创建演示",
@ -712,6 +728,13 @@
"Landing_Page_PaymentModuleDescription_1": "为不同的支付网关提供集成。", "Landing_Page_PaymentModuleDescription_1": "为不同的支付网关提供集成。",
"Landing_Page_PaymentModuleDescription_2": "该模块提供支付网关的集成,因此您可以轻松地从客户那里获得付款。", "Landing_Page_PaymentModuleDescription_2": "该模块提供支付网关的集成,因此您可以轻松地从客户那里获得付款。",
"Landing_Page_PaymentModuleDescription_3": "该模块支持以下支付网关", "Landing_Page_PaymentModuleDescription_3": "该模块支持以下支付网关",
"Welcome_Page_UseSameCredentialForCommercialWebsites": "<a href=\"https://commercial.abp.io\" class=\"text-primary\">commercial.abp.io</a> 和 <a href=\"https://support.abp.io\" class=\"text-primary\">support.abp.io</a>使用相同的凭据。" "Welcome_Page_UseSameCredentialForCommercialWebsites": "<a href=\"https://commercial.abp.io\" class=\"text-primary\">commercial.abp.io</a> 和 <a href=\"https://support.abp.io\" class=\"text-primary\">support.abp.io</a>使用相同的凭据。",
"WatchCrudPagesVideo": "观看“创建 CRUD 页面的 ABP Suite”视频!",
"WatchGeneratingFromDatabaseVideo": "观看”ABP Suite:从现有数据库表生成 CRUD 页面”视频!",
"WatchTakeCloserLookVideo": "观看“详细了解ABP Suite 的代码生成”视频!",
"ConfirmedEmailAddressRequiredToStartTrial": "你应该有一个确认的电子邮件地址,以便开始试用许可证。",
"EmailVerificationMailNotSent": "电子邮件验证邮件不能发送。",
"GetConfirmationEmail": "<a href=\"javascript:void(0);\" id=\"{0}\">点击这里获取确认邮件</a> 如果你还没有收到。",
"WhichLicenseTypeYouAreInterestedIn": "你感兴趣的许可证类型是什么?"
} }
} }

3
build/common.ps1

@ -20,8 +20,7 @@ $solutionPaths = @(
"../modules/background-jobs", "../modules/background-jobs",
"../modules/account", "../modules/account",
"../modules/cms-kit", "../modules/cms-kit",
"../modules/blob-storing-database", "../modules/blob-storing-database"
"../studio"
) )
if ($full -eq "-f") if ($full -eq "-f")

4
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs

@ -221,7 +221,9 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new Exception($"Error occured while getting the versions from {url} : {ex.Message}"); Logger.LogWarning($"Error occured while getting the versions from {url} : {ex.Message}");
// The remote service is currently unavailable, try to work offline.
return true;
} }
} }

53
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs

@ -105,6 +105,24 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"node_modules/bootstrap-icons/font/bootstrap-icons.css" "node_modules/bootstrap-icons/font/bootstrap-icons.css"
); );
if(defaultThemeName == "LeptonX")
{
ReplaceMethodNames(
context,
"/angular/src/app/app.module.ts",
"HttpErrorComponent, ",
""
);
ChangeModuleImportBetweenStatements(
context,
"/angular/src/app/app.module.ts",
"ThemeSharedModule.forRoot",
"AccountAdminConfigModule.forRoot",
"ThemeSharedModule.forRoot(),"
);
}
#endregion #endregion
} }
@ -510,6 +528,41 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
file.SetLines(lines.Where(x => x != null)); file.SetLines(lines.Where(x => x != null));
} }
private void ChangeModuleImportBetweenStatements(
ProjectBuildContext context,
string filePath,
string firstStatement,
string lastStatement,
string newStatement)
{
var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath));
if (file == null)
{
return;
}
file.NormalizeLineEndings();
var lines = file.GetLines();
var firstLineIndex = lines.FindIndex(line => line.Contains(firstStatement));
var lastLineIndex = lines.FindIndex(line => line.Contains(lastStatement));
if(firstLineIndex == -1 || lastLineIndex == -1)
{
return;
}
lines[firstLineIndex] = newStatement;
for (var i = firstLineIndex + 1; i <= lastLineIndex; i++)
{
lines[i] = null;
}
file.SetLines(lines.Where(x => x != null));
}
protected void ReplaceMethodNames( protected void ReplaceMethodNames(
ProjectBuildContext context, ProjectBuildContext context,
string filePath, string filePath,

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs

@ -17,8 +17,7 @@ public class RemoveDependencyFromPackageJsonFileStep : ProjectBuildPipelineStep
public override void Execute(ProjectBuildContext context) public override void Execute(ProjectBuildContext context)
{ {
var packageJsonFile = context.Files.FirstOrDefault(f => f.Name.Contains(_packageJsonFilePath)); var packageJsonFile = context.Files.FirstOrDefault(f => f.Name.Contains(_packageJsonFilePath) && !f.Name.Contains("node_modules"));
if (packageJsonFile == null) if (packageJsonFile == null)
{ {
return; return;

4
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json

@ -24,6 +24,8 @@
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "字段必须是最小长度为'{0}'的字符串或数组.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "字段必须是最小长度为'{0}'的字符串或数组.",
"ThisFieldIsNotAValidPhoneNumber.": "字段不是有效的手机号码.", "ThisFieldIsNotAValidPhoneNumber.": "字段不是有效的手机号码.",
"ThisFieldMustBeBetween{0}And{1}": "字段值必须在{0}和{1}范围内.", "ThisFieldMustBeBetween{0}And{1}": "字段值必须在{0}和{1}范围内.",
"ThisFieldMustBeGreaterThanOrEqual{0}": "该字段必须大于或等于 {0}。",
"ThisFieldMustBeLessOrEqual{0}": "该字段必须小于或等于 {0}。",
"ThisFieldMustMatchTheRegularExpression{0}": "字段必须匹配正则表达式'{0}'.", "ThisFieldMustMatchTheRegularExpression{0}": "字段必须匹配正则表达式'{0}'.",
"ThisFieldIsRequired.": "字段不可为空.", "ThisFieldIsRequired.": "字段不可为空.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "字段必须是长度为{0}的字符串.", "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "字段必须是长度为{0}的字符串.",
@ -31,4 +33,4 @@
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "字段{0}不是有效的完全限定的http,https或ftp URL.", "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "字段{0}不是有效的完全限定的http,https或ftp URL.",
"ThisFieldIsInvalid.": "该字段无效." "ThisFieldIsInvalid.": "该字段无效."
} }
} }

2
modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Account; namespace Volo.Abp.Account;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpAccountInstallerModule : AbpModule public class AbpAccountInstallerModule : AbpModule

16
modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs

@ -1,16 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.Account;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class AccountInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
}

2
modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.AuditLogging; namespace Volo.Abp.AuditLogging;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpAuditLoggingInstallerModule : AbpModule public class AbpAuditLoggingInstallerModule : AbpModule

23
modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.AuditLogging;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class AuditLoggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.AuditLogging.EntityFrameworkCore",
"ConfigureAuditLogging"
)
);
return GetBasePipeline(context);
}
}

2
modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.BackgroundJobs; namespace Volo.Abp.BackgroundJobs;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpBackgroundJobsInstallerModule : AbpModule public class AbpBackgroundJobsInstallerModule : AbpModule

23
modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.BackgroundJobs;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class BackgroundJobsInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.BackgroundJobs.EntityFrameworkCore",
"ConfigureBackgroundJobs"
)
);
return GetBasePipeline(context);
}
}

2
modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.BasicTheme; namespace Volo.Abp.BasicTheme;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpBasicThemeInstallerModule : AbpModule public class AbpBasicThemeInstallerModule : AbpModule

16
modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs

@ -1,16 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.BasicTheme;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class BasicThemeInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
}

2
modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.BlobStoring.Database; namespace Volo.Abp.BlobStoring.Database;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpBlobStoringDatabaseInstallerModule : AbpModule public class AbpBlobStoringDatabaseInstallerModule : AbpModule

23
modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.BlobStoring.Database;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class BlobStoringDatabaseInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.BlobStoring.Database.EntityFrameworkCore",
"ConfigureBlobStoring"
)
);
return GetBasePipeline(context);
}
}

4
modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json

@ -56,6 +56,8 @@
"ShareOn": "分享", "ShareOn": "分享",
"TitleLengthWarning": "保持标题大小不超过60个字符,实现SEO友好!", "TitleLengthWarning": "保持标题大小不超过60个字符,实现SEO友好!",
"ClearCache": "清除缓存", "ClearCache": "清除缓存",
"ClearCacheConfirmationMessage": "您确定要清除缓存吗?" "ClearCacheConfirmationMessage": "您确定要清除缓存吗?",
"MarkdownSupported": "支持 Markdown",
"FileUploadInfo": "拖放,拖放,或粘贴一个复制的图像。"
} }
} }

2
modules/blogging/src/Volo.Blogging.Installer/Volo.Blogging.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/blogging/src/Volo.Blogging.Installer/Volo/Blogging/BloggingInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Blogging; namespace Volo.Blogging;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class BloggingInstallerModule : AbpModule public class BloggingInstallerModule : AbpModule

17
modules/blogging/src/Volo.Blogging.Installer/Volo/Blogging/BloggingInstallerPipelineBuilder.cs

@ -1,17 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Blogging;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class BloggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
}

31
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json

@ -85,6 +85,7 @@
"Permission:BlogPostManagement.Create": "创建", "Permission:BlogPostManagement.Create": "创建",
"Permission:BlogPostManagement.Delete": "删除", "Permission:BlogPostManagement.Delete": "删除",
"Permission:BlogPostManagement.Update": "更新", "Permission:BlogPostManagement.Update": "更新",
"Permission:BlogPostManagement.Publish": "发布",
"Permission:CmsKit": "Cms工具包", "Permission:CmsKit": "Cms工具包",
"Permission:Comments": "评论管理", "Permission:Comments": "评论管理",
"Permission:Comments.Delete": "删除", "Permission:Comments.Delete": "删除",
@ -115,6 +116,7 @@
"Permission:TagManagement.Create": "创建", "Permission:TagManagement.Create": "创建",
"Permission:TagManagement.Delete": "删除", "Permission:TagManagement.Delete": "删除",
"Permission:TagManagement.Update": "更新", "Permission:TagManagement.Update": "更新",
"Permission:GlobalResources": "全局资源",
"PickYourReaction": "选择你的回应", "PickYourReaction": "选择你的回应",
"Rating": "评分", "Rating": "评分",
"RatingUndoMessage": "您的评分将被撤消", "RatingUndoMessage": "您的评分将被撤消",
@ -129,6 +131,7 @@
"SelectAll": "选择所有", "SelectAll": "选择所有",
"Send": "发送", "Send": "发送",
"SendMessage": "发送消息", "SendMessage": "发送消息",
"SelectedAuthor": "作者",
"ShortDescription": "简介", "ShortDescription": "简介",
"Slug": "Slug", "Slug": "Slug",
"Source": "源", "Source": "源",
@ -158,6 +161,32 @@
"YourEmailAddress": "你的邮件地址", "YourEmailAddress": "你的邮件地址",
"YourFullName": "你的全称", "YourFullName": "你的全称",
"YourMessage": "你的消息", "YourMessage": "你的消息",
"YourReply": "你的回复" "YourReply": "你的回复",
"MarkdownSupported": "<a href=\"https://www.markdownguide.org/basic-syntax/\">Markdown</a> 支持。",
"GlobalResources": "全局资源",
"SavedSuccessfully": "保存成功",
"CmsKit.BlogPost.Status.0": "草稿",
"CmsKit.BlogPost.Status.1": "已发布",
"CmsKit.BlogPost.Status.2": "等待审核",
"BlogPostPublishConfirmationMessage": "你确定要发布博客文章“{0}”吗?",
"SuccessfullyPublished": "成功发布!",
"Draft": "草稿",
"Publish": "发布",
"BlogPostDraftConfirmationMessage": "你确定要将博客文章“{0}”设置为草稿吗?",
"BlogPostSendToReviewConfirmationMessage": "你确定要将博客文章“{0}”发送给管理员审核发布吗?",
"SaveAsDraft": "保存为草稿",
"SendToReview": "发送到审核",
"SendToReviewToPublish": "发送到审核并发布",
"BlogPostSendToReviewSuccessMessage": "博客文章“{0}”已发送给管理员审核发布。",
"HasBlogPostWaitingForReviewMessage": "你有一篇博客文章等待审核。点击查看。",
"SelectAStatus": "选择一个状态",
"Status": "状态",
"CmsKit.BlogPost.ScrollIndex": "博客文章快速导航栏",
"Add": "添加",
"AddWidget": "添加组件",
"PleaseConfigureWidgets": "请配置组件",
"SelectAnAuthor": "选择一个作者",
"InThisDocument": "在此文档",
"GoToTop": "跳至顶部"
} }
} }

2
modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.CmsKit; namespace Volo.Abp.CmsKit;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class VoloCmsKitInstallerModule : AbpModule public class VoloCmsKitInstallerModule : AbpModule

23
modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.CmsKit;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class BlobStoringDatabaseInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.CmsKit.EntityFrameworkCore",
"ConfigureCmsKit"
)
);
return GetBasePipeline(context);
}
}

2
modules/docs/src/Volo.Docs.Installer/Volo.Docs.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/docs/src/Volo.Docs.Installer/Volo/Docs/DocsInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Docs; namespace Volo.Docs;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class DocsInstallerModule : AbpModule public class DocsInstallerModule : AbpModule

17
modules/docs/src/Volo.Docs.Installer/Volo/Docs/DocsInstallerPipelineBuilder.cs

@ -1,17 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Docs;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class DocsInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
}

2
modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.FeatureManagement; namespace Volo.Abp.FeatureManagement;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpFeatureManagementInstallerModule : AbpModule public class AbpFeatureManagementInstallerModule : AbpModule

23
modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.FeatureManagement;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class FeatureManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.FeatureManagement.EntityFrameworkCore",
"ConfigureFeatureManagement"
)
);
return GetBasePipeline(context);
}
}

2
modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

4
modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Studio; using Volo.Abp.Modularity;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Identity namespace Volo.Abp.Identity
{ {
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpIdentityInstallerModule : AbpModule public class AbpIdentityInstallerModule : AbpModule

24
modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs

@ -1,24 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.Identity
{
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class IdentityInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.Identity.EntityFrameworkCore",
"ConfigureIdentity"
)
);
return GetBasePipeline(context);
}
}
}

2
modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.IdentityServer; namespace Volo.Abp.IdentityServer;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpIdentityServerInstallerModule : AbpModule public class AbpIdentityServerInstallerModule : AbpModule

23
modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.IdentityServer;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class IdentityServerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.IdentityServer.EntityFrameworkCore",
"ConfigureIdentityServer"
)
);
return GetBasePipeline(context);
}
}

2
modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo.Abp.OpenIddict.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/AbpOpenIddictInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.OpenIddict; namespace Volo.Abp.OpenIddict;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpOpenIddictInstallerModule : AbpModule public class AbpOpenIddictInstallerModule : AbpModule

16
modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/OpenIddictInstallerPipelineBuilder.cs

@ -1,16 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.OpenIddict;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class OpenIddictInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
}

17
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json

@ -1,10 +1,11 @@
{ {
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"Permissions": "权限", "Permissions": "权限",
"OnlyProviderPermissons": "只有这个提供商", "OnlyProviderPermissons": "只有这个提供商",
"All": "所有", "All": "所有",
"SelectAllInAllTabs": "授予所有权限", "SelectAllInAllTabs": "授予所有权限",
"SelectAllInThisTab": "全选" "SelectAllInThisTab": "全选",
} "SaveWithoutAnyPermissionsWarningMessage": "你确定要保存没有任何权限吗?"
}
} }

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.PermissionManagement; namespace Volo.Abp.PermissionManagement;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpPermissionManagementInstallerModule : AbpModule public class AbpPermissionManagementInstallerModule : AbpModule

23
modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.PermissionManagement;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class PermissionManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.PermissionManagement.EntityFrameworkCore",
"ConfigurePermissionManagement"
)
);
return GetBasePipeline(context);
}
}

2
modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.SettingManagement; namespace Volo.Abp.SettingManagement;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpSettingManagementInstallerModule : AbpModule public class AbpSettingManagementInstallerModule : AbpModule

23
modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.SettingManagement;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class SettingManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.SettingManagement.EntityFrameworkCore",
"ConfigureSettingManagement"
)
);
return GetBasePipeline(context);
}
}

2
modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TenantManagement; namespace Volo.Abp.TenantManagement;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpTenantManagementInstallerModule : AbpModule public class AbpTenantManagementInstallerModule : AbpModule

23
modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.TenantManagement;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class AuditLoggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.TenantManagement.EntityFrameworkCore",
"ConfigureTenantManagement"
)
);
return GetBasePipeline(context);
}
}

2
modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Users; namespace Volo.Abp.Users;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpUsersInstallerModule : AbpModule public class AbpUsersInstallerModule : AbpModule

23
modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs

@ -1,23 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.Users;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class UsersInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
context.AddEfCoreConfigurationMethodDeclaration(
new EfCoreConfigurationMethodDeclaration(
"Volo.Abp.Users.EntityFrameworkCore",
"ConfigureAbpUser"
)
);
return GetBasePipeline(context);
}
}

2
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp-studio\src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />
</ItemGroup> </ItemGroup>

2
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs

@ -1,11 +1,9 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.VirtualFileExplorer; namespace Volo.Abp.VirtualFileExplorer;
[DependsOn( [DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule) typeof(AbpVirtualFileSystemModule)
)] )]
public class AbpVirtualFileExplorerInstallerModule : AbpModule public class AbpVirtualFileExplorerInstallerModule : AbpModule

16
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs

@ -1,16 +0,0 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.VirtualFileExplorer;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class VirtualFileExplorerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
}

8
nupkg/common.ps1

@ -69,7 +69,6 @@ function Read-File {
# List of solutions # List of solutions
$solutions = ( $solutions = (
"framework", "framework",
"../abp-studio",
"modules/account", "modules/account",
"modules/audit-logging", "modules/audit-logging",
"modules/background-jobs", "modules/background-jobs",
@ -232,13 +231,6 @@ $projects = (
"framework/src/Volo.Abp.Kafka", "framework/src/Volo.Abp.Kafka",
"framework/src/Volo.Abp.Swashbuckle", "framework/src/Volo.Abp.Swashbuckle",
# studio
"../abp-studio/src/Volo.Abp.Studio.Domain.Shared",
"../abp-studio/src/Volo.Abp.Studio.Domain.CommonServices",
"../abp-studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions",
"../abp-studio/src/Volo.Abp.Studio.ModuleInstaller",
"../abp-studio/src/Volo.Abp.Studio.Analyzing.Abstractions",
# modules/account # modules/account
"modules/account/src/Volo.Abp.Account.Application.Contracts", "modules/account/src/Volo.Abp.Account.Application.Contracts",
"modules/account/src/Volo.Abp.Account.Application", "modules/account/src/Volo.Abp.Account.Application",

29
studio/Volo.Abp.Studio.Open.abpmdl.json

@ -1,29 +0,0 @@
{
"folders": {
"items": {
"src": {}
}
},
"packages": {
"Volo.Abp.Studio.Analyzing.Abstractions": {
"path": "src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.abppkg.json",
"folder": "src"
},
"Volo.Abp.Studio.Domain.CommonServices": {
"path": "src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.abppkg.json",
"folder": "src"
},
"Volo.Abp.Studio.Domain.Shared": {
"path": "src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.abppkg.json",
"folder": "src"
},
"Volo.Abp.Studio.ModuleInstaller": {
"path": "src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.abppkg.json",
"folder": "src"
},
"Volo.Abp.Studio.ModuleInstaller.Abstractions": {
"path": "src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.abppkg.json",
"folder": "src"
}
}
}

7
studio/Volo.Abp.Studio.Open.abpsln.json

@ -1,7 +0,0 @@
{
"modules": {
"Volo.Abp.Studio.Open": {
"path": "Volo.Abp.Studio.Open.abpmdl.json"
}
}
}

49
studio/Volo.Abp.Studio.Open.sln

@ -1,49 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{344A1096-CC05-42D1-BDDB-E254C27508A9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Analyzing.Abstractions", "src\Volo.Abp.Studio.Analyzing.Abstractions\Volo.Abp.Studio.Analyzing.Abstractions.csproj", "{2271296E-33FD-46BE-97FD-9938193CB7D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Domain.CommonServices", "src\Volo.Abp.Studio.Domain.CommonServices\Volo.Abp.Studio.Domain.CommonServices.csproj", "{1C86021F-E522-41A1-AC3F-01B0E474D75E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Domain.Shared", "src\Volo.Abp.Studio.Domain.Shared\Volo.Abp.Studio.Domain.Shared.csproj", "{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.ModuleInstaller", "src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj", "{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.ModuleInstaller.Abstractions", "src\Volo.Abp.Studio.ModuleInstaller.Abstractions\Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj", "{99679BF9-B888-4814-8E85-F751984CAFF8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2271296E-33FD-46BE-97FD-9938193CB7D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2271296E-33FD-46BE-97FD-9938193CB7D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2271296E-33FD-46BE-97FD-9938193CB7D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2271296E-33FD-46BE-97FD-9938193CB7D1}.Release|Any CPU.Build.0 = Release|Any CPU
{1C86021F-E522-41A1-AC3F-01B0E474D75E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C86021F-E522-41A1-AC3F-01B0E474D75E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C86021F-E522-41A1-AC3F-01B0E474D75E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C86021F-E522-41A1-AC3F-01B0E474D75E}.Release|Any CPU.Build.0 = Release|Any CPU
{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Release|Any CPU.Build.0 = Release|Any CPU
{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Release|Any CPU.Build.0 = Release|Any CPU
{99679BF9-B888-4814-8E85-F751984CAFF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99679BF9-B888-4814-8E85-F751984CAFF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99679BF9-B888-4814-8E85-F751984CAFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99679BF9-B888-4814-8E85-F751984CAFF8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{2271296E-33FD-46BE-97FD-9938193CB7D1} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
{1C86021F-E522-41A1-AC3F-01B0E474D75E} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
{28132E4E-FFB9-45C4-99AD-1BCA04B3E597} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
{4FA11334-D727-4C14-9D71-1DB46AC3BE9C} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
{99679BF9-B888-4814-8E85-F751984CAFF8} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
EndGlobalSection
EndGlobal

1
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.abppkg.json

@ -1 +0,0 @@
{}

14
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj

@ -1,14 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\framework\src\Volo.Abp.Core\Volo.Abp.Core.csproj" />
</ItemGroup>
</Project>

8
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs

@ -1,8 +0,0 @@
using Volo.Abp.Modularity;
namespace Volo.Abp.Studio.Analyzing;
public class AbpStudioAnalyzingAbstractionsModule : AbpModule
{
}

20
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs

@ -1,20 +0,0 @@
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Application;
[PackageContentItemName(ContentTypeName)]
public class ApplicationServiceModel : PackageContentItemModel
{
public const string ContentTypeName = "applicationService";
public string Namespace { get; set; }
public string Summary { get; set; }
public List<string> ImplementingInterfaces { get; set; }
public ApplicationServiceModel([NotNull] string name) : base(name)
{
}
}

23
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs

@ -1,23 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Authorization;
[PackageContentItemName(ContentTypeName)]
public class PermissionModel : PackageContentItemModel
{
public const string ContentTypeName = "permission";
public string DisplayName { get; }
public bool IsEnabled { get; }
public PermissionModel(
[NotNull] string name,
string displayName,
bool isEnabled)
: base(name)
{
DisplayName = displayName;
IsEnabled = isEnabled;
}
}

16
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs

@ -1,16 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Database;
[PackageContentItemName(ContentTypeName)]
public class DatabaseCollectionModel : PackageContentItemModel
{
public const string ContentTypeName = "databaseCollection";
public string EntityFullName { get; private set; }
public DatabaseCollectionModel([NotNull] string name, string entityFullName) : base(name)
{
EntityFullName = Check.NotNullOrWhiteSpace(entityFullName, nameof(entityFullName));
}
}

16
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs

@ -1,16 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Database;
[PackageContentItemName(ContentTypeName)]
public class DatabaseTableModel : PackageContentItemModel
{
public const string ContentTypeName = "databaseTable";
public string EntityFullName { get; private set; }
public DatabaseTableModel([NotNull] string name, string entityFullName) : base(name)
{
EntityFullName = Check.NotNullOrWhiteSpace(entityFullName, nameof(entityFullName));
}
}

24
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs

@ -1,24 +0,0 @@
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Database;
[PackageContentItemName(ContentTypeName)]
public class EfCoreDbContextModel : PackageContentItemModel, IDbContextModel
{
public const string ContentTypeName = "efCoreDbContext";
public string Namespace { get; private set; }
public string ConnectionStringName { get; set; }
public List<DatabaseTableModel> DatabaseTables { get; set; }
public EfCoreDbContextModel(
[NotNull] string name,
[NotNull] string @namespace
) : base(name)
{
Namespace = Check.NotNullOrWhiteSpace(@namespace, nameof(@namespace));
}
}

6
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs

@ -1,6 +0,0 @@
namespace Volo.Abp.Studio.Analyzing.Models.Database;
public interface IDbContextModel
{
string ConnectionStringName { get; set; }
}

24
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs

@ -1,24 +0,0 @@
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Database;
[PackageContentItemName(ContentTypeName)]
public class MongoDbContextModel : PackageContentItemModel, IDbContextModel
{
public const string ContentTypeName = "mongoDbContext";
public string Namespace { get; private set; }
public string ConnectionStringName { get; set; }
public List<DatabaseCollectionModel> DatabaseCollections { get; set; }
public MongoDbContextModel(
[NotNull] string name,
[NotNull] string @namespace
) : base(name)
{
Namespace = Check.NotNullOrWhiteSpace(@namespace, nameof(@namespace));
}
}

11
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs

@ -1,11 +0,0 @@
namespace Volo.Abp.Studio.Analyzing.Models.Domain;
[PackageContentItemName(ContentTypeName)]
public class AggregateRootModel : EntityModel
{
public new const string ContentTypeName = "aggregateRoot";
public AggregateRootModel(string name) : base(name)
{
}
}

17
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs

@ -1,17 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Domain;
[PackageContentItemName(ContentTypeName)]
public class DomainServiceModel : PackageContentItemModel
{
public const string ContentTypeName = "domainService";
public string Namespace { get; set; }
public string Summary { get; set; }
public DomainServiceModel([NotNull] string name) : base(name)
{
}
}

24
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs

@ -1,24 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.Studio.Analyzing.Models.Domain;
[PackageContentItemName(ContentTypeName)]
public class EntityModel : PackageContentItemModel
{
public const string ContentTypeName = "entity";
public string Namespace { get; set; }
public string PrimaryKeyType { get; set; }
public string Summary { get; set; }
public List<string> CollectionProperties { get; set; }
public List<string> NavigationProperties { get; set; }
public EntityModel(string name) : base(name)
{
CollectionProperties = new List<string>();
NavigationProperties = new List<string>();
}
}

19
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs

@ -1,19 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Domain;
[PackageContentItemName(ContentTypeName)]
public class RepositoryInterfaceModel : PackageContentItemModel
{
public const string ContentTypeName = "repositoryInterface";
public string Namespace { get; set; }
public string Summary { get; set; }
public EntityModel EntityModel { get; set; }
public RepositoryInterfaceModel([NotNull] string name) : base(name)
{
}
}

39
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs

@ -1,39 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Feature;
[PackageContentItemName(ContentTypeName)]
public class FeatureModel : PackageContentItemModel
{
public const string ContentTypeName = "feature";
public string ValueType { get; }
public string DefaultValue { get; }
public string DisplayName { get; }
public string Description { get; }
public bool IsAvailableToHost { get; }
public bool IsVisibleToClients { get; }
public FeatureModel(
[NotNull] string name,
[NotNull] string valueType,
string defaultValue,
string displayName,
string description,
bool isAvailableToHost,
bool isVisibleToClients
) : base(name)
{
ValueType = valueType;
DefaultValue = defaultValue;
DisplayName = displayName;
Description = description;
IsAvailableToHost = isAvailableToHost;
IsVisibleToClients = isVisibleToClients;
}
}

15
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs

@ -1,15 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Module;
[PackageContentItemName(ContentTypeName)]
public class AbpModuleModel : PackageContentItemModel
{
public const string ContentTypeName = "abpModule";
public string Namespace { get; set; }
public AbpModuleModel([NotNull] string name) : base(name)
{
}
}

15
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs

@ -1,15 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models;
public abstract class PackageContentItemModel
{
public string ContentType { get; }
public string Name { get; }
public PackageContentItemModel([NotNull] string name)
{
Name = Check.NotNullOrWhiteSpace(name, nameof(name));
ContentType = PackageContentItemNameAttribute.GetName(GetType());
}
}

25
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs

@ -1,25 +0,0 @@
using System;
using Volo.Abp.Reflection;
namespace Volo.Abp.Studio.Analyzing.Models;
public class PackageContentItemNameAttribute : Attribute
{
public string Name { get; }
public PackageContentItemNameAttribute(string name)
{
Name = name;
}
public static string GetName(Type type)
{
var attribute = ReflectionHelper.GetSingleAttributeOrDefault<PackageContentItemNameAttribute>(type);
if (attribute == null)
{
throw new ApplicationException($"Given type {type.FullName} must have an {nameof(PackageContentItemNameAttribute)}, but not defined!");
}
return attribute.Name;
}
}

8
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs

@ -1,8 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.Studio.Analyzing.Models;
public class PackageContentList : List<PackageContentItemModel>
{
}

19
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs

@ -1,19 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models;
public class PackageModel
{
public string Name { get; }
public string Hash { get; }
public PackageContentList Contents { get; }
public PackageModel([NotNull] string name, [NotNull] string hash)
{
Name = Check.NotNullOrWhiteSpace(name, nameof(name));
Contents = new PackageContentList();
Hash = hash;
}
}

25
studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs

@ -1,25 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Analyzing.Models.Setting;
[PackageContentItemName(ContentTypeName)]
public class SettingModel : PackageContentItemModel
{
public const string ContentTypeName = "setting";
public string DefaultValue { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
public bool IsVisibleToClient { get; set; }
public bool IsInherited { get; set; }
public bool IsEncrypted { get; set; }
public SettingModel([NotNull] string name) : base(name)
{
}
}

1
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.abppkg.json

@ -1 +0,0 @@
{}

21
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj

@ -1,21 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="System.IO.Abstractions" Version="13.2.28" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Studio.Domain.Shared\Volo.Abp.Studio.Domain.Shared.csproj" />
</ItemGroup>
</Project>

16
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs

@ -1,16 +0,0 @@
using System.IO.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace Volo.Abp.Studio;
[DependsOn(
typeof(AbpStudioDomainSharedModule)
)]
public class AbpStudioDomainCommonServicesModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddSingleton<IFileSystem>(new FileSystem());
}
}

27
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs

@ -1,27 +0,0 @@
using System;
using System.Runtime.Serialization;
using Microsoft.Extensions.Logging;
namespace Volo.Abp.Studio;
public class AbpStudioException : BusinessException
{
public AbpStudioException(
string code = null,
string message = null,
string details = null,
Exception innerException = null,
LogLevel logLevel = LogLevel.Warning)
: base(code, message, details, innerException, logLevel)
{
Code = code;
Details = details;
LogLevel = logLevel;
}
public AbpStudioException(SerializationInfo serializationInfo, StreamingContext context)
: base(serializationInfo, context)
{
}
}

36
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs

@ -1,36 +0,0 @@
using System;
using System.Runtime.InteropServices;
using JetBrains.Annotations;
namespace Volo.Abp.Studio.Helpers;
public static class PathHelper
{
public static string GetRelativePath([NotNull] string basePath, [NotNull] string targetPath)
{
Check.NotNull(basePath, nameof(basePath));
Check.NotNull(targetPath, nameof(targetPath));
return new Uri(basePath).MakeRelativeUri(new Uri(targetPath)).ToString();
}
public static string EnsureForwardSlash(string path)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return path.Replace("\\", "/");
}
return path;
}
public static string Normalize(string path)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return path.Replace("/", "\\");
}
return path;
}
}

76
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs

@ -1,76 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Studio.Packages.Modifying;
public class AbpModuleFileManager : IAbpModuleFileManager, ITransientDependency
{
public IFileSystem FileSystem { get; }
public AbpModuleFileManager(IFileSystem fileSystem)
{
FileSystem = fileSystem;
}
public async Task AddDependency(string filePath, string moduleToAdd)
{
var fileContent = await FileSystem.File.ReadAllTextAsync(filePath);
var moduleName = moduleToAdd.Split(".").Last();
var moduleNamespace = moduleToAdd.RemovePostFix("." + moduleName);
var usingStatement = $"using {moduleNamespace};";
var dependsOnStart = $"DependsOn(";
if (fileContent.Contains($"typeof({moduleName})"))
{
// module already added
return;
}
if (!fileContent.NormalizeLineEndings().SplitToLines().Any(l => l.Trim().StartsWith("namespace ") && l.Contains(moduleNamespace)) &&
!fileContent.Contains(usingStatement)
)
{
fileContent = usingStatement + Environment.NewLine + fileContent;
}
if (!fileContent.Contains(dependsOnStart))
{
var fileLines = fileContent.NormalizeLineEndings().SplitToLines().ToList();
fileLines.InsertBefore(l => l.Contains("public") && l.Contains("class"), $" [DependsOn(typeof({moduleName}))]");
fileContent = fileLines.JoinAsString(Environment.NewLine);
}
else
{
var fileLines = fileContent.NormalizeLineEndings().SplitToLines().ToList();
var dependsOnStartLine = fileLines.First(l => l.Contains(dependsOnStart));
var dependsOnStartLineModified = dependsOnStartLine.Replace(dependsOnStart,
dependsOnStart + Environment.NewLine +
$" typeof({moduleName}),"
);
fileContent = fileContent.Replace(dependsOnStartLine, dependsOnStartLineModified);
}
FileSystem.File.WriteAllTextAsync(filePath, fileContent);
}
public async Task<string> ExtractModuleNameWithNamespace(string filePath)
{
var fileContent = await FileSystem.File.ReadAllTextAsync(filePath);
var fileLines = fileContent.NormalizeLineEndings().SplitToLines();
var lineOfClassName = fileLines.First(l => l.Contains("public") && l.Contains("class"));
var moduleName = lineOfClassName.Split(":")[0].Trim().Split(" ").Last();
var lineOfNamespace = fileLines.First(l => l.Trim().StartsWith("namespace"));
var moduleNamespace = lineOfNamespace.Split(" ").Skip(1).First();
return moduleNamespace + "." + moduleName;
}
}

261
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs

@ -1,261 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Xml;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.Helpers;
using Volo.Abp.Studio.Package;
using Volo.Abp.Studio.Xml;
namespace Volo.Abp.Studio.Packages.Modifying;
public class CsprojFileManager : XmlFileManagerBase, ICsprojFileManager, ITransientDependency
{
public async Task AddProjectReferenceAsync(string filePath, string projectToReference)
{
var document = await GetXmlDocumentAsync(filePath);
/*if (document.SelectNodes($"/Project/ItemGroup/ProjectReference[ends-with(@Include, '{Path.GetFileName(projectToReference)}')]").Count > 0)
{
return;
}*/
var packageReferenceToSameProject =
document.SelectNodes(
$"/Project/ItemGroup/PackageReference[starts-with(@Include, '{Path.GetFileName(projectToReference).RemovePostFix(".csproj")}')]"
);
if (packageReferenceToSameProject.Count > 0)
{
packageReferenceToSameProject[0].ParentNode.RemoveChild(packageReferenceToSameProject[0]);
}
var relativePath = PathHelper.GetRelativePath(filePath, projectToReference);
var itemGroupNode = GetOrCreateItemGroupNode(document);
var newNode = document.CreateElement("ProjectReference");
var includeAttr = document.CreateAttribute("Include");
includeAttr.Value = relativePath;
newNode.Attributes.Append(includeAttr);
itemGroupNode.AppendChild(newNode);
await SaveXmlDocumentAsync(filePath, document);
}
public async Task AddPackageReferenceAsync(string filePath, string packageName, string version)
{
var document = await GetXmlDocumentAsync(filePath);
if (document.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packageName}')]").Count > 0)
{
// Package reference is already added.
return;
}
var itemGroupNode = GetOrCreateItemGroupNode(document);
var newNode = document.CreateElement("PackageReference");
var includeAttr = document.CreateAttribute("Include");
includeAttr.Value = packageName;
newNode.Attributes.Append(includeAttr);
var versionAttr = document.CreateAttribute("Version");
versionAttr.Value = version;
newNode.Attributes.Append(versionAttr);
itemGroupNode.AppendChild(newNode);
itemGroupNode.AppendChild(document.CreateWhitespace(Environment.NewLine + " "));
await SaveXmlDocumentAsync(filePath, document);
}
public async Task AddImportAsync(string filePath, string importFilePath)
{
var document = await GetXmlDocumentAsync(filePath);
var relativeImportFilePath = PathHelper.GetRelativePath(filePath, importFilePath);
var importNode = document.CreateElement("Import");
var projectAttr = document.CreateAttribute("Project");
projectAttr.Value = relativeImportFilePath;
importNode.Attributes.Append(projectAttr);
document["Project"].AppendChild(importNode);
document["Project"].AppendChild(document.CreateWhitespace(Environment.NewLine + " "));
await SaveXmlDocumentAsync(filePath, document);
}
public async Task AddAssemblyVersionAsync(string filePath, string version)
{
var document = await GetXmlDocumentAsync(filePath);
var matchedNodes = document.SelectNodes($"/Project/PropertyGroup");
if (matchedNodes.Count == 0)
{
return;
}
var versionNode = document.CreateElement("Version");
versionNode.InnerText = version;
matchedNodes[0].AppendChild(versionNode);
await SaveXmlDocumentAsync(filePath, document);
}
public async Task AddCopyLocalLockFileAssembliesAsync(string filePath)
{
var document = await GetXmlDocumentAsync(filePath);
var matchedNodes = document.SelectNodes($"/Project/PropertyGroup");
if (matchedNodes.Count == 0)
{
return;
}
var versionNode = document.CreateElement("CopyLocalLockFileAssemblies");
versionNode.InnerText = "True";
matchedNodes[0].AppendChild(versionNode);
await SaveXmlDocumentAsync(filePath, document);
}
public async Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference)
{
var document = await GetXmlDocumentAsync(filePath);
var packageName = Path.GetFileName(projectToReference).RemovePostFix(".csproj");
var matchedNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packageName}')]");
if (matchedNodes.Count == 0)
{
return;
}
XmlNode targetNode = null;
foreach (XmlNode matchedNode in matchedNodes)
{
if (matchedNode.Attributes["Include"].Value == packageName)
{
targetNode = matchedNode;
break;
}
}
if (targetNode == null)
{
return;
}
var targetNodeParent = targetNode.ParentNode;
targetNodeParent.RemoveChild(targetNode);
var relativePath = PathHelper.GetRelativePath(filePath, projectToReference);
var newNode = document.CreateElement("ProjectReference");
var includeAttr = document.CreateAttribute("Include");
includeAttr.Value = relativePath;
newNode.Attributes.Append(includeAttr);
targetNodeParent.AppendChild(newNode);
await SaveXmlDocumentAsync(filePath, document);
}
public async Task<string> GetTargetFrameworkAsync(string filePath)
{
var document = await GetXmlDocumentAsync(filePath);
var nodes = document["Project"]?["PropertyGroup"]?.SelectNodes("TargetFramework");
if (nodes == null || nodes.Count == 0)
{
return null;
}
return nodes[0].InnerText.Trim();
}
public async Task<List<PackageDependency>> GetDependencyListAsync(string filePath)
{
var result = new List<PackageDependency>();
var document = await GetXmlDocumentAsync(filePath);
var packageReferenceNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference");
var projectReferenceNodes = document.SelectNodes($"/Project/ItemGroup/ProjectReference");
if (packageReferenceNodes != null && packageReferenceNodes.Count > 0)
{
foreach (XmlNode packageReferenceNode in packageReferenceNodes)
{
result.Add(
new PackageDependency(
packageReferenceNode.Attributes["Include"].Value,
packageReferenceNode.Attributes["Version"].Value
)
);
}
}
if (projectReferenceNodes != null && projectReferenceNodes.Count > 0)
{
foreach (XmlNode projectReferenceNode in projectReferenceNodes)
{
result.Add(
new PackageDependency(
Path.GetFullPath(Path.Combine(Path.GetDirectoryName(filePath), projectReferenceNode.Attributes["Include"].Value))
)
);
}
}
return result;
}
private XmlNode GetOrCreateItemGroupNode(XmlDocument document)
{
var nodes = document["Project"].SelectNodes("ItemGroup");
if (nodes == null || nodes.Count < 1)
{
var newNode = document.CreateElement("ItemGroup");
document["Project"].AppendChild(newNode);
return newNode;
}
foreach (XmlNode node in nodes)
{
if (node.SelectNodes("ProjectReference").Count > 0)
{
return node;
}
}
foreach (XmlNode node in nodes)
{
if (node.SelectNodes("PackageReference").Count > 0)
{
return node;
}
}
return nodes[0];
}
}

10
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs

@ -1,10 +0,0 @@
using System.Threading.Tasks;
namespace Volo.Abp.Studio.Packages.Modifying;
public interface IAbpModuleFileManager
{
Task AddDependency(string filePath, string moduleToAdd);
Task<string> ExtractModuleNameWithNamespace(string filePath);
}

25
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs

@ -1,25 +0,0 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Studio.Package;
namespace Volo.Abp.Studio.Packages.Modifying;
public interface ICsprojFileManager
{
Task AddProjectReferenceAsync(string filePath, string projectToReference);
Task AddPackageReferenceAsync(string filePath, string packageName, string version);
Task AddImportAsync(string filePath, string importFilePath);
Task AddAssemblyVersionAsync(string filePath, string version);
Task AddCopyLocalLockFileAssembliesAsync(string filePath);
Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference);
Task<string> GetTargetFrameworkAsync(string filePath);
Task<List<PackageDependency>> GetDependencyListAsync(string filePath);
}

17
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs

@ -1,17 +0,0 @@
using System.Threading.Tasks;
namespace Volo.Abp.Studio.Nuget;
public interface INugetSourceCodeStore
{
Task<string> GetCachedSourceCodeFilePathAsync(string name,
string type,
string version = null,
bool includePreReleases = false);
Task<string> GetCachedDllFilePathAsync(string name,
string type,
string version = null,
bool includePreReleases = false,
bool includeDependencies = false);
}

35
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs

@ -1,35 +0,0 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.Cli.Utils;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.Helpers;
namespace Volo.Abp.Studio.Nuget;
public class NugetPackageCacheManager : ITransientDependency
{
private readonly ICmdHelper _cmdHelper;
public NugetPackageCacheManager(ICmdHelper cmdHelper)
{
_cmdHelper = cmdHelper;
}
public async Task<string> CachePackageAsync(string packageName, string version, bool deleteAfter = true)
{
var temporaryFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
Directory.CreateDirectory(temporaryFolder);
_cmdHelper.RunCmdAndGetOutput("dotnet new console -lang c#", temporaryFolder);
_cmdHelper.RunCmdAndGetOutput($"dotnet add package {packageName} --version {version}", temporaryFolder);
if (deleteAfter)
{
Directory.Delete(temporaryFolder, true);
}
return temporaryFolder;
}
}

162
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs

@ -1,162 +0,0 @@
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Cli.NuGet;
using Volo.Abp.Cli.ProjectBuilding;
using Volo.Abp.Cli.Utils;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.Helpers;
using Volo.Abp.Studio.Modules;
namespace Volo.Abp.Studio.Nuget;
[Dependency(ReplaceServices = true)]
public class NugetSourceCodeStore : ISourceCodeStore, INugetSourceCodeStore, ITransientDependency
{
private readonly NuGetService _nuGetService;
private readonly NugetPackageCacheManager _nugetPackageCacheManager;
private readonly ICmdHelper _cmdHelper;
public NugetSourceCodeStore(
NuGetService nuGetService,
NugetPackageCacheManager nugetPackageCacheManager,
ICmdHelper cmdHelper)
{
_nuGetService = nuGetService;
_nugetPackageCacheManager = nugetPackageCacheManager;
_cmdHelper = cmdHelper;
}
public async Task<TemplateFile> GetAsync(
string name,
string type,
string version = null,
string templateSource = null,
bool includePreReleases = false)
{
name = GetNugetPackageName(name, type);
var latestVersion = await GetLatestVersionAsync(name, includePreReleases);
version ??= latestVersion;
var localCachedFilePath = await GetLocalCacheSourceCodeFilePathInternal(name, version);
if (localCachedFilePath == null)
{
return null;
}
return new TemplateFile(await File.ReadAllBytesAsync(localCachedFilePath), version, latestVersion, version);
}
public async Task<string> GetCachedSourceCodeFilePathAsync(string name, string type, string version = null,
bool includePreReleases = false)
{
name = GetNugetPackageName(name, type);
version ??= await GetLatestVersionAsync(name, includePreReleases);
return await GetLocalCacheSourceCodeFilePathInternal(name, version);
}
public async Task<string> GetCachedDllFilePathAsync(string name, string type, string version = null, bool includePreReleases = false, bool includeDependencies = false)
{
if (type == SourceCodeTypes.Template)
{
name = TemplateNugetPackageInfoProvider.GetNugetPackageName(name);
}
version ??= await GetLatestVersionAsync(name, includePreReleases);
var localDllFolder = Path.Combine(
GetLocalNugetCachePath(),
name,
version,
"lib");
if (!Directory.Exists(localDllFolder) ||
(includeDependencies && !Directory.GetFiles(localDllFolder, $"*Volo.Abp.Studio.ModuleInstaller.dll", SearchOption.AllDirectories).Any()))
{
if (includeDependencies)
{
var temporaryFolder = await _nugetPackageCacheManager.CachePackageAsync(name, version, false);
var outputFolder = Path.GetDirectoryName(
Directory
.GetFiles(localDllFolder, $"*{name}.dll", SearchOption.AllDirectories)
.First()
);
_cmdHelper.RunCmdAndGetOutput($"dotnet build -o {outputFolder}", temporaryFolder);
Directory.Delete(temporaryFolder, true);
}
else
{
await _nugetPackageCacheManager.CachePackageAsync(name, version);
}
}
if (!Directory.Exists(localDllFolder))
{
return null;
}
return Directory.GetFiles(localDllFolder, $"{name}.dll", SearchOption.AllDirectories).FirstOrDefault();
}
private async Task<string> GetLatestVersionAsync(string nugetPackage, bool includePreReleases)
{
var v = await _nuGetService.GetLatestVersionOrNullAsync(nugetPackage, includePreReleases);
return v.ToString();
}
private async Task<string> GetLocalCacheSourceCodeFilePathInternal(string name, string version)
{
var localCacheFile = Path.Combine(
GetLocalNugetCachePath(),
name,
version,
"content",
$"{name}.zip");
if (!File.Exists(localCacheFile))
{
await _nugetPackageCacheManager.CachePackageAsync(name, version);
if (!File.Exists(localCacheFile))
{
return null;
}
}
return localCacheFile;
}
private string GetLocalNugetCachePath()
{
return Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
".nuget",
"packages");
}
private string GetNugetPackageName(string name, string type)
{
if (type == SourceCodeTypes.Template)
{
return TemplateNugetPackageInfoProvider.GetNugetPackageName(name);
}
if (type == SourceCodeTypes.Module)
{
return name + ModuleConsts.SourceCorePackagePostfix;
}
return name;
}
}

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

Loading…
Cancel
Save