diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj b/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj
index 7c8af93c47..aaebfafe6f 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj
@@ -5,7 +5,7 @@
-
+
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalizationModule.cs b/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalizationModule.cs
index 19c707bfad..37541b4d4c 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalizationModule.cs
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalizationModule.cs
@@ -8,13 +8,14 @@ using AbpIoLocalization.Support.Localization;
using AbpIoLocalization.Www;
using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace AbpIoLocalization
{
- [DependsOn(typeof(AbpLocalizationModule))]
+ [DependsOn(typeof(AbpValidationModule))]
public class AbpIoLocalizationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
diff --git a/docs/zh-Hans/Settings.md b/docs/zh-Hans/Settings.md
index 7b5d7fbd35..25559082f2 100644
--- a/docs/zh-Hans/Settings.md
+++ b/docs/zh-Hans/Settings.md
@@ -40,6 +40,33 @@ ABP会自动发现并注册设置的定义.
* **Providers**: 限制可用于特定的设置值提供程序(参阅设置值提供程序部分了解更多).
* **Properties**: 设置此值的自定义属性 名称/值 集合,可以在之后的应用程序代码中使用.
+### 更改依赖模块的设置定义
+
+在某些情况下,你可能希望更改应用程序/模块所依赖的其他模块中定义的设置的某些属性. 设置定义提供程序可以查询和更新设置定义.
+
+下面的示例中获取了由 [Volo.Abp.Emailing](Emailing.md) 包定义的设置并将其更改:
+
+````csharp
+public class MySettingDefinitionProvider : SettingDefinitionProvider
+{
+ public override void Define(ISettingDefinitionContext context)
+ {
+ var smtpHost = context.GetOrNull("Abp.Mailing.Smtp.Host");
+ if (smtpHost != null)
+ {
+ smtpHost.DefaultValue = "mail.mydomain.com";
+ smtpHost.DisplayName =
+ new LocalizableString(
+ typeof(MyLocalizationResource),
+ "SmtpServer_DisplayName"
+ );
+ }
+ }
+}
+````
+
+> 使用常量作为设置名称是一种好习惯,ABP的包就是这样做的. `Abp.Mailing.Smtp`设置名称是在`EmailSettingNames`类(在Volo.Abp.Emailing名称空间中)定义的常量.
+
## 读取设置值
### ISettingProvider
@@ -118,6 +145,30 @@ var requireDigit = abp.setting.getBoolean('Abp.Identity.Password.RequireDigit');
全局,租户和用户设置值提供程序使用 `ISettingStore` 从数据源读取值(参见下面的小节).
+### 在应用程序配置中设置值
+
+上一节提到 `ConfigurationSettingValueProvider` 从 `IConfiguration` 服务中读取设置, 该服务默认从 `appsettings.json` 中读取值. 所以在 `appsettings.json` 文件中配置设置值是最简单的方式.
+
+例如你可以像以下方式一样配置 [IEmailSender](Emailing.md) 设置:
+
+````json
+{
+ "Settings": {
+ "Abp.Mailing.DefaultFromAddress": "noreply@mydomain.com",
+ "Abp.Mailing.DefaultFromDisplayName": "My Application",
+ "Abp.Mailing.Smtp.Host": "mail.mydomain.com",
+ "Abp.Mailing.Smtp.Port": "547",
+ "Abp.Mailing.Smtp.UserName": "myusername",
+ "Abp.Mailing.Smtp.Password": "mySecretPassW00rd",
+ "Abp.Mailing.Smtp.EnableSsl": "True"
+ }
+}
+````
+
+设置值应该在 `Settings` 部分配置,如本例所示.
+
+> `IConfiguration`是.NET Core的服务,它不仅可以从 `appsettings.json` 中读取值,还可以从环境,用户机密...等中读取值. 有关更多信息请参阅[微软文档](https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/).
+
### 自定义设置值提供程序
扩展设置系统的方式是定义一个派生自 `SettingValueProvider` 的类. 示例:
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
index 3081c77cb5..8c4c8c01f2 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
@@ -4,9 +4,9 @@
{
#if DEBUG
public const string WwwAbpIo = "https://localhost:44328/";
-
+
public const string AccountAbpIo = "https://localhost:44333/";
-
+
public const string NuGetRootPath = "https://localhost:44373/";
#else
public const string WwwAbpIo = "https://abp.io/";
@@ -18,7 +18,12 @@
public static string GetNuGetServiceIndexUrl(string apiKey)
{
- return NuGetRootPath + apiKey + "/v3/index.json";
+ return $"{NuGetRootPath}{apiKey}/v3/index.json";
+ }
+
+ public static string GetNuGetPackageInfoUrl(string apiKey, string packageId)
+ {
+ return $"{NuGetRootPath}{apiKey}/v3/package/{packageId}/index.json";
}
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs
index 68e2ac2dd3..4ed8746ce6 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
@@ -19,6 +20,7 @@ namespace Volo.Abp.Cli.Licensing
protected IJsonSerializer JsonSerializer { get; }
protected IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; }
private readonly ILogger _logger;
+ private DeveloperApiKeyResult _apiKeyResult = null;
public AbpIoApiKeyService(IJsonSerializer jsonSerializer, IRemoteServiceExceptionHandler remoteServiceExceptionHandler, ILogger logger)
{
@@ -27,8 +29,20 @@ namespace Volo.Abp.Cli.Licensing
_logger = logger;
}
- public async Task GetApiKeyOrNullAsync()
+ public async Task GetApiKeyOrNullAsync(bool invalidateCache = false)
{
+ if (invalidateCache)
+ {
+ _apiKeyResult = null;
+ }
+
+ if (_apiKeyResult != null)
+ {
+ return _apiKeyResult;
+ }
+
+ var url = $"{CliUrls.WwwAbpIo}api/license/api-key";
+
using (var client = new CliHttpClient())
{
var response = await HttpPolicyExtensions
@@ -45,17 +59,17 @@ namespace Volo.Abp.Cli.Licensing
if (responseMessage.Exception != null)
{
_logger.LogWarning(
- $"{retryCount}. request attempt failed with an error: \"{responseMessage.Exception.Message}\". " +
+ $"{retryCount}. request attempt failed to {url} with an error: \"{responseMessage.Exception.Message}\". " +
$"Waiting {timeSpan.TotalSeconds} secs for the next try...");
}
else if (responseMessage.Result != null)
{
_logger.LogWarning(
- $"{retryCount}. request attempt failed with {responseMessage.Result.StatusCode}-{responseMessage.Result.ReasonPhrase}. " +
+ $"{retryCount}. request attempt failed {url} with {(int)responseMessage.Result.StatusCode}-{responseMessage.Result.ReasonPhrase}. " +
$"Waiting {timeSpan.TotalSeconds} secs for the next try...");
}
})
- .ExecuteAsync(async () => await client.GetAsync($"{CliUrls.WwwAbpIo}api/license/api-key").ConfigureAwait(false)).ConfigureAwait(false);
+ .ExecuteAsync(async () => await client.GetAsync(url).ConfigureAwait(false)).ConfigureAwait(false);
if (!response.IsSuccessStatusCode)
{
@@ -65,7 +79,20 @@ namespace Volo.Abp.Cli.Licensing
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(response).ConfigureAwait(false);
var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
- return JsonSerializer.Deserialize(responseContent);
+ var apiKeyResult = JsonSerializer.Deserialize(responseContent);
+
+ if (apiKeyResult == null ||
+ string.IsNullOrEmpty(apiKeyResult.ApiKey))
+ {
+ _logger.LogError("Couldn't retrieve your NuGet API key!");
+ _logger.LogWarning(File.Exists(CliPaths.AccessToken)
+ ? "Make sure you have an active session and license on commercial.abp.io. To re-sign in you can use the CLI command \"abp login \"."
+ : "You are not signed in to commercial.abp.io. Use the CLI command \"abp login \" to sign in.");
+
+ return null;
+ }
+
+ return apiKeyResult;
}
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs
index 23ff81555a..8638472e5c 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs
@@ -4,6 +4,6 @@ namespace Volo.Abp.Cli.Licensing
{
public interface IApiKeyService
{
- Task GetApiKeyOrNullAsync();
+ Task GetApiKeyOrNullAsync(bool invalidateCache = false);
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs
index 802c4e0a2e..37d487f106 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs
@@ -2,10 +2,19 @@ using Newtonsoft.Json;
using NuGet.Versioning;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
+using System.Net;
+using System.Net.Http;
using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
+using Polly;
+using Polly.Extensions.Http;
using Volo.Abp.Cli.Http;
+using Volo.Abp.Cli.Licensing;
using Volo.Abp.Cli.ProjectBuilding;
+using Volo.Abp.Cli.ProjectModification;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
using Volo.Abp.Threading;
@@ -14,37 +23,54 @@ namespace Volo.Abp.Cli.NuGet
{
public class NuGetService : ITransientDependency
{
+ public ILogger Logger { get; set; }
protected IJsonSerializer JsonSerializer { get; }
-
protected ICancellationTokenProvider CancellationTokenProvider { get; }
-
protected IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; }
+ private readonly IApiKeyService _apiKeyService;
public NuGetService(
IJsonSerializer jsonSerializer,
IRemoteServiceExceptionHandler remoteServiceExceptionHandler,
- ICancellationTokenProvider cancellationTokenProvider)
+ ICancellationTokenProvider cancellationTokenProvider, IApiKeyService apiKeyService)
{
JsonSerializer = jsonSerializer;
RemoteServiceExceptionHandler = remoteServiceExceptionHandler;
CancellationTokenProvider = cancellationTokenProvider;
+ _apiKeyService = apiKeyService;
+ Logger = NullLogger.Instance;
}
public async Task GetLatestVersionOrNullAsync(string packageId, bool includePreviews = false, bool includeNightly = false)
{
+ var url = includeNightly ?
+ $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json" :
+ $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
+
+
using (var client = new CliHttpClient(setBearerToken: false))
{
- var url = includeNightly ?
- $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json" :
- $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
+ var responseMessage = await GetHttpResponseMessageWithRetryAsync(client, url).ConfigureAwait(false);
- var responseMessage = await client.GetAsync(url, CancellationTokenProvider.Token).ConfigureAwait(false);
+ if (responseMessage.StatusCode == HttpStatusCode.NotFound)
+ {
+ var commercialNuGetUrl = await GetNuGetUrlForCommercialPackage(packageId).ConfigureAwait(false);
+ responseMessage = await GetHttpResponseMessageWithRetryAsync(client, commercialNuGetUrl).ConfigureAwait(false);
+ }
+
+ if (!responseMessage.IsSuccessStatusCode)
+ {
+ throw new Exception($"ERROR: Remote server returns '{responseMessage.StatusCode}'");
+ }
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage).ConfigureAwait(false);
- var result = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);
+ var responseContent = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);
- var versions = JsonSerializer.Deserialize(result).Versions.Select(x => SemanticVersion.Parse(x));
+ var versions = JsonSerializer
+ .Deserialize(responseContent)
+ .Versions
+ .Select(SemanticVersion.Parse);
if (!includePreviews && !includeNightly)
{
@@ -56,6 +82,42 @@ namespace Volo.Abp.Cli.NuGet
}
}
+ private async Task GetNuGetUrlForCommercialPackage(string packageId)
+ {
+ var apiKeyResult = await _apiKeyService.GetApiKeyOrNullAsync();
+ return CliUrls.GetNuGetPackageInfoUrl(apiKeyResult.ApiKey, packageId);
+ }
+
+ private async Task GetHttpResponseMessageWithRetryAsync(HttpClient client, string url)
+ {
+ return await HttpPolicyExtensions
+ .HandleTransientHttpError()
+ .OrResult(msg => !msg.IsSuccessStatusCode)
+ .WaitAndRetryAsync(new[]
+ {
+ TimeSpan.FromSeconds(1),
+ TimeSpan.FromSeconds(3),
+ TimeSpan.FromSeconds(7)
+ },
+ (responseMessage, timeSpan, retryCount, context) =>
+ {
+ if (responseMessage.Exception != null)
+ {
+ Logger.LogWarning(
+ $"{retryCount}. HTTP request attempt failed to {url} with an error: HTTP {(int)responseMessage.Result.StatusCode}-{responseMessage.Exception.Message}. " +
+ $"Waiting {timeSpan.TotalSeconds} secs for the next try...");
+ }
+ else if (responseMessage.Result != null)
+ {
+ Logger.LogWarning(
+ $"{retryCount}. HTTP request attempt failed to {url} with an error: {(int)responseMessage.Result.StatusCode}-{responseMessage.Result.ReasonPhrase}. " +
+ $"Waiting {timeSpan.TotalSeconds} secs for the next try...");
+ }
+ })
+ .ExecuteAsync(async () => await client.GetAsync(url, CancellationTokenProvider.Token));
+ }
+
+
public class NuGetVersionResultDto
{
[JsonProperty("versions")]
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
index 09c5a69ac1..26e79e108d 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
@@ -1,19 +1,24 @@
-using NuGet.Versioning;
+using System;
+using NuGet.Versioning;
using System.IO;
using System.Threading.Tasks;
using System.Xml;
using Volo.Abp.Cli.NuGet;
using Volo.Abp.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
namespace Volo.Abp.Cli.ProjectModification
{
public class VoloNugetPackagesVersionUpdater : ITransientDependency
{
private readonly NuGetService _nuGetService;
+ public ILogger Logger { get; set; }
public VoloNugetPackagesVersionUpdater(NuGetService nuGetService)
{
_nuGetService = nuGetService;
+ Logger = NullLogger.Instance;
}
public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews)
@@ -40,24 +45,61 @@ namespace Volo.Abp.Cli.ProjectModification
private async Task UpdateVoloPackagesAsync(string content, bool includePreviews)
{
- var doc = new XmlDocument() { PreserveWhitespace = true };
- doc.LoadXml(content);
+ string packageId = null;
- foreach (XmlNode package in doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.')]"))
+ try
{
- var versionAttribute = package.Attributes["Version"];
+ var doc = new XmlDocument()
+ {
+ PreserveWhitespace = true
+ };
+
+ doc.LoadXml(content);
var packageId = package.Attributes["Include"].Value;
var packageVersion = SemanticVersion.Parse(versionAttribute.Value);
var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId, includePreviews).ConfigureAwait(false);
+ var packageNodeList = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.')]");
- if (latestVersion != null && packageVersion < latestVersion)
+ if (packageNodeList != null)
{
- versionAttribute.Value = latestVersion.ToString();
+ foreach (XmlNode package in packageNodeList)
+ {
+ if (package.Attributes == null)
+ {
+ continue;
+ }
+
+ var versionAttribute = package.Attributes["Version"];
+
+ packageId = package.Attributes["Include"].Value;
+ var packageVersion = SemanticVersion.Parse(versionAttribute.Value);
+
+ Logger.LogDebug("Checking package: \"{0}\" - Current version: {1}", packageId, packageVersion);
+
+ var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId, includePreviews);
+
+ if (latestVersion != null && packageVersion < latestVersion)
+ {
+ Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, packageVersion.ToString(), latestVersion.ToString());
+ versionAttribute.Value = latestVersion.ToString();
+ }
+ else
+ {
+ Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, packageVersion);
+ }
+ }
+
+ return await Task.FromResult(doc.OuterXml);
}
}
+ catch (Exception ex)
+ {
+ Logger.LogError("Cannot update volo packages! An error occured while updating the package \"{0}\". Error: {1}", packageId, ex.Message);
+ Logger.LogException(ex);
+ }
- return doc.OuterXml;
+ return await Task.FromResult(content);
}
}
}
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs
index 3166152e89..a8c0eb84b4 100644
--- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs
@@ -22,7 +22,7 @@ namespace Volo.Abp.Application
Configure(options =>
{
options.Resources
- .Add("en")
+ .Add("en")
.AddVirtualJson("/Volo/Abp/Application/Localization/Resources/AbpDdd");
});
}
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs
index e9476a56bc..95c55174ad 100644
--- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Dtos/LimitedResultRequestDto.cs
@@ -35,7 +35,7 @@ namespace Volo.Abp.Application.Dtos
{
if (MaxResultCount > MaxMaxResultCount)
{
- var localizer = validationContext.GetRequiredService>();
+ var localizer = validationContext.GetRequiredService>();
yield return new ValidationResult(
localizer[
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/AbpDddApplicationContractsResource.cs b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/AbpDddApplicationContractsResource.cs
new file mode 100644
index 0000000000..ceef26f7c7
--- /dev/null
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/AbpDddApplicationContractsResource.cs
@@ -0,0 +1,10 @@
+using Volo.Abp.Localization;
+
+namespace Volo.Abp.Application.Localization.Resources.AbpDdd
+{
+ [LocalizationResourceName("AbpDddApplicationContracts")]
+ public class AbpDddApplicationContractsResource
+ {
+
+ }
+}
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/AbpDddResource.cs b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/AbpDddResource.cs
deleted file mode 100644
index 75880401d3..0000000000
--- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/AbpDddResource.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using Volo.Abp.Localization;
-
-namespace Volo.Abp.Application.Localization.Resources.AbpDdd
-{
- [LocalizationResourceName("AbpDdd")]
- public class AbpDddResource
- {
-
- }
-}
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationModule.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationModule.cs
index 175e3f9d12..be39960b4f 100644
--- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationModule.cs
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationModule.cs
@@ -1,5 +1,4 @@
using Volo.Abp.Localization.Resources.AbpLocalization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.Settings;
using Volo.Abp.VirtualFileSystem;
@@ -28,12 +27,6 @@ namespace Volo.Abp.Localization
.Resources
.Add("en");
- //TODO: Obsolete, Remove in the future version
- options
- .Resources
- .Add("en")
- .AddVirtualJson("/Volo/Abp/Validation/Localization");//load from Volo.Abp.Validation
-
options
.Resources
.Add("en")
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationSettingProvider.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationSettingProvider.cs
index 14afe69dac..127d2550dd 100644
--- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationSettingProvider.cs
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationSettingProvider.cs
@@ -1,4 +1,4 @@
-using Volo.Abp.Localization.Resources.AbpValidation;
+using Volo.Abp.Localization.Resources.AbpLocalization;
using Volo.Abp.Settings;
namespace Volo.Abp.Localization
@@ -18,7 +18,7 @@ namespace Volo.Abp.Localization
private static LocalizableString L(string name)
{
- return LocalizableString.Create(name);
+ return LocalizableString.Create(name);
}
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/AbpLocalizationResource.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/AbpLocalizationResource.cs
index abfd1688b7..7e3b5400c9 100644
--- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/AbpLocalizationResource.cs
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/AbpLocalizationResource.cs
@@ -1,6 +1,4 @@
-using System;
-
-namespace Volo.Abp.Localization.Resources.AbpLocalization
+namespace Volo.Abp.Localization.Resources.AbpLocalization
{
[LocalizationResourceName("AbpLocalization")]
public class AbpLocalizationResource
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/AbpValidationResource.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/AbpValidationResource.cs
deleted file mode 100644
index 5d0151fe66..0000000000
--- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/AbpValidationResource.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System;
-
-namespace Volo.Abp.Localization.Resources.AbpValidation
-{
- //TODO: Move to Volo.Abp.Validation!
-
- [LocalizationResourceName("AbpValidation")]
- [Obsolete("This resource is obsolete.Use Volo.Abp.Validation.Localization.AbpValidationResource instead.", false)]
- public class AbpValidationResource
- {
-
- }
-}
diff --git a/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj b/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj
index 9e1e81b1d9..86017b9628 100644
--- a/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj
+++ b/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj
@@ -19,7 +19,6 @@
-
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
index 97055d1e9a..5e74ec4bfa 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
@@ -8,10 +8,10 @@ using Volo.Abp.AspNetCore.Mvc.Localization.Resource;
using Volo.Abp.AspNetCore.TestBase;
using Volo.Abp.Autofac;
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.MemoryDb;
using Volo.Abp.Modularity;
using Volo.Abp.TestApp;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.AspNetCore.Mvc
diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/AbpAccountApplicationContractsModule.cs b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/AbpAccountApplicationContractsModule.cs
index 1d3ced4cdb..ee1b6c7957 100644
--- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/AbpAccountApplicationContractsModule.cs
+++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/AbpAccountApplicationContractsModule.cs
@@ -2,8 +2,8 @@
using Volo.Abp.Identity;
using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Account
diff --git a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj
index e8d3f84ead..2055dfc4ef 100644
--- a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj
+++ b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj
@@ -2,6 +2,7 @@
netcoreapp3.1
+
diff --git a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AccountAppService_Tests.cs b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AccountAppService_Tests.cs
index 0de397b70c..14d257993c 100644
--- a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AccountAppService_Tests.cs
+++ b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AccountAppService_Tests.cs
@@ -4,7 +4,7 @@ using Shouldly;
using Volo.Abp.Identity;
using Xunit;
-namespace Volo.Abp.Account.Pro.Application.Tests.Volo.Abp.Account
+namespace Volo.Abp.Account
{
public class AccountAppService_Tests : AbpAccountApplicationTestBase
{
@@ -12,8 +12,7 @@ namespace Volo.Abp.Account.Pro.Application.Tests.Volo.Abp.Account
private readonly IIdentityUserRepository _identityUserRepository;
private readonly ILookupNormalizer _lookupNormalizer;
private readonly IdentityUserManager _userManager;
-
-
+
public AccountAppService_Tests()
{
_accountAppService = GetRequiredService();
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo.Abp.AuditLogging.Domain.Shared.csproj b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo.Abp.AuditLogging.Domain.Shared.csproj
index b1d7f04bbf..44c36fd1d1 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo.Abp.AuditLogging.Domain.Shared.csproj
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo.Abp.AuditLogging.Domain.Shared.csproj
@@ -8,7 +8,6 @@
-
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AbpAuditLoggingDomainSharedModule.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AbpAuditLoggingDomainSharedModule.cs
index efa043efd1..ca0209a620 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AbpAuditLoggingDomainSharedModule.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AbpAuditLoggingDomainSharedModule.cs
@@ -1,5 +1,4 @@
-using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp.AuditLogging.Localization;
+using Volo.Abp.AuditLogging.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs
index d635a62123..e1878bdcc8 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditLogRepository_Tests.cs
@@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
-using System.Globalization;
using System.Linq;
using System.Net;
-using System.Text;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Auditing;
diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj
index e466b4dc99..c71ae5aef5 100644
--- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj
+++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs
index 14dc9bd5ca..5cdd272a20 100644
--- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs
+++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs
@@ -1,12 +1,13 @@
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Blogging.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Blogging
{
- [DependsOn(typeof(AbpLocalizationModule))]
+ [DependsOn(typeof(AbpValidationModule))]
public class BloggingDomainSharedModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
diff --git a/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs b/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs
index 189689064a..3e37206f31 100644
--- a/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs
+++ b/modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs
@@ -18,7 +18,6 @@ using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Identity;
using Volo.Abp.Identity.Web;
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Identity;
@@ -32,6 +31,7 @@ using VoloDocs.EntityFrameworkCore;
using Localization.Resources.AbpUi;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
+using Volo.Abp.Validation.Localization;
namespace VoloDocs.Web
{
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs
index de404a5884..1224b4371f 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs
@@ -1,12 +1,8 @@
-using Localization.Resources.AbpUi;
-using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AutoMapper;
-using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
-using Volo.Abp.UI;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem;
using Volo.Docs.Admin.Navigation;
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj
index 5990dc210c..bfa20270c8 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs
index f91fe28e5f..0c9a2e0f26 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs
@@ -1,13 +1,14 @@
using Volo.Abp.FeatureManagement.Localization;
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.FeatureManagement
{
[DependsOn(
- typeof(AbpLocalizationModule)
+ typeof(AbpValidationModule)
)]
public class AbpFeatureManagementDomainSharedModule : AbpModule
{
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj
index 6b58f2e433..460f5285e4 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs
index 5133e0dc03..4bff33d58a 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs
@@ -1,15 +1,18 @@
using Volo.Abp.Identity.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.Users;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Identity
{
- [DependsOn(typeof(AbpUsersDomainSharedModule))]
- [DependsOn(typeof(AbpLocalizationModule))]
+ [DependsOn(
+ typeof(AbpUsersDomainSharedModule),
+ typeof(AbpValidationModule)
+ )]
public class AbpIdentityDomainSharedModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.csproj b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.csproj
index bcd99cd524..71d99b826b 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.csproj
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/AbpIdentityServerDomainSharedModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/AbpIdentityServerDomainSharedModule.cs
index 983ffcb071..d56968ba5d 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/AbpIdentityServerDomainSharedModule.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/AbpIdentityServerDomainSharedModule.cs
@@ -1,14 +1,15 @@
using Volo.Abp.IdentityServer.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.IdentityServer
{
[DependsOn(
- typeof(AbpLocalizationModule)
+ typeof(AbpValidationModule)
)]
public class AbpIdentityServerDomainSharedModule : AbpModule
{
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj
index fd4d602045..ff0ba6fbee 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs
index 210ff6affc..b1d2c59a73 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs
@@ -1,13 +1,14 @@
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.Localization;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.PermissionManagement
{
[DependsOn(
- typeof(AbpLocalizationModule)
+ typeof(AbpValidationModule)
)]
public class AbpPermissionManagementDomainSharedModule : AbpModule
{
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs
index cf1c3f13b1..c7f4e08480 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs
@@ -1,10 +1,7 @@
-using Localization.Resources.AbpUi;
-using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AutoMapper;
-using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.HttpApi;
using Volo.Abp.PermissionManagement.Localization;
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj
index dec1cabd46..5cdaa28369 100644
--- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs
index 2058ae5425..158a78b0cb 100644
--- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs
@@ -1,11 +1,13 @@
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.TenantManagement.Localization;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TenantManagement
{
+ [DependsOn(typeof(AbpValidationModule))]
public class AbpTenantManagementDomainSharedModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs
index a3f066594e..0094b7d5ad 100644
--- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs
@@ -1,13 +1,9 @@
-using Localization.Resources.AbpUi;
-using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AutoMapper;
using Volo.Abp.FeatureManagement;
-using Volo.Abp.FeatureManagement.Localization;
-using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.TenantManagement.Localization;
using Volo.Abp.TenantManagement.Web.Navigation;
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs
index 38e95a5d4b..f20fb70a7e 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs
@@ -5,11 +5,11 @@ using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity;
using Volo.Abp.IdentityServer;
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement;
using Volo.Abp.SettingManagement;
using Volo.Abp.TenantManagement;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace MyCompanyName.MyProjectName
diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs
index 78efb08262..f3998e71dc 100644
--- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs
+++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyProjectNameWebTestModule.cs
@@ -13,9 +13,9 @@ using MyCompanyName.MyProjectName.Web.Menus;
using Volo.Abp;
using Volo.Abp.AspNetCore.TestBase;
using Volo.Abp.Localization;
-using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation;
+using Volo.Abp.Validation.Localization;
namespace MyCompanyName.MyProjectName
{
diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj
index 6cb4f837a1..6afc84fe77 100644
--- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj
+++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs
index 2d22b07cdf..384aae162a 100644
--- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs
+++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs
@@ -2,13 +2,14 @@
using Volo.Abp.Localization;
using MyCompanyName.MyProjectName.Localization;
using Volo.Abp.Localization.ExceptionHandling;
-using Volo.Abp.Localization.Resources.AbpValidation;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace MyCompanyName.MyProjectName
{
[DependsOn(
- typeof(AbpLocalizationModule)
+ typeof(AbpValidationModule)
)]
public class MyProjectNameDomainSharedModule : AbpModule
{