diff --git a/Directory.Build.props b/Directory.Build.props
index dbd7e279a..ce11a0e97 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -5,7 +5,7 @@
7.*
8.*
9.*
- 10.0.0-preview.*
+ 10.*
0.13.1
2.2.3
@@ -16,13 +16,13 @@
7.3.0
1.10.0
3.19.1
- 1.0.4
+ 1.0.*
11.1.0
11.1.2
2.8.41
7.17.4
7.5.0
- 6.0.0
+ 13.0.3
$(AssemblyName)
packageIcon.png
diff --git a/src/BuildingBlocks/Isolation/Masa.BuildingBlocks.Isolation/Internal/ComponentConfigUtils.cs b/src/BuildingBlocks/Isolation/Masa.BuildingBlocks.Isolation/Internal/ComponentConfigUtils.cs
index b2cbc7c8e..c6ec247fc 100644
--- a/src/BuildingBlocks/Isolation/Masa.BuildingBlocks.Isolation/Internal/ComponentConfigUtils.cs
+++ b/src/BuildingBlocks/Isolation/Masa.BuildingBlocks.Isolation/Internal/ComponentConfigUtils.cs
@@ -28,7 +28,7 @@ public static List> GetComponent
var configuration = serviceProvider.GetService()?.Local ?? serviceProvider.GetService();
MasaArgumentException.ThrowIfNull(configuration);
return configuration
- .GetSection(rootSectionName)
+ .GetSection(rootSectionName!)
.GetSection(sectionName)
.Get>>() ?? new();
}
diff --git a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Extensions/DistributedCacheBuilderExtensions.cs b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Extensions/DistributedCacheBuilderExtensions.cs
index 4d942c8e9..5ae2a013f 100644
--- a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Extensions/DistributedCacheBuilderExtensions.cs
+++ b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Extensions/DistributedCacheBuilderExtensions.cs
@@ -7,17 +7,11 @@ namespace Masa.BuildingBlocks.Caching;
public static class DistributedCacheBuilderExtensions
{
- ///
- /// Add distributed Redis cache
- ///
- ///
- /// redis node name, not required, default: RedisConfig(Use local configuration)
- ///
- ///
public static void UseStackExchangeRedisCache(
this DistributedCacheBuilder distributedCacheBuilder,
string redisSectionName = RedisConstant.DEFAULT_REDIS_SECTION_NAME,
- JsonSerializerOptions? jsonSerializerOptions = null)
+ JsonSerializerOptions? jsonSerializerOptions = null,
+ Action? connectConfig = null)
{
distributedCacheBuilder.Services.AddConfigure(redisSectionName, distributedCacheBuilder.Name);
@@ -41,14 +35,16 @@ public static void UseStackExchangeRedisCache(
redisConfigurationOptions,
serviceProvider.GetService(),
jsonSerializerOptions,
- serviceProvider.GetRequiredService().Create(distributedCacheBuilder.Name));
+ serviceProvider.GetRequiredService().Create(distributedCacheBuilder.Name),
+ connectConfig);
});
}
public static void UseStackExchangeRedisCache(
this DistributedCacheBuilder distributedCacheBuilder,
Action action,
- JsonSerializerOptions? jsonSerializerOptions = null)
+ JsonSerializerOptions? jsonSerializerOptions = null,
+ Action? connectConfig = null)
{
distributedCacheBuilder.UseCustomDistributedCache(serviceProvider =>
{
@@ -58,7 +54,8 @@ public static void UseStackExchangeRedisCache(
redisConfigurationOptions,
serviceProvider.GetService(),
jsonSerializerOptions,
- serviceProvider.GetRequiredService().Create(distributedCacheBuilder.Name)
+ serviceProvider.GetRequiredService().Create(distributedCacheBuilder.Name),
+ connectConfig
);
return distributedCacheClient;
});
@@ -67,7 +64,8 @@ public static void UseStackExchangeRedisCache(
public static void UseStackExchangeRedisCache(
this DistributedCacheBuilder distributedCacheBuilder,
RedisConfigurationOptions redisConfigurationOptions,
- JsonSerializerOptions? jsonSerializerOptions = null)
+ JsonSerializerOptions? jsonSerializerOptions = null,
+ Action? connectConfig = null)
{
distributedCacheBuilder.UseCustomDistributedCache(serviceProvider =>
{
@@ -75,7 +73,8 @@ public static void UseStackExchangeRedisCache(
redisConfigurationOptions,
serviceProvider.GetService(),
jsonSerializerOptions,
- serviceProvider.GetRequiredService().Create(distributedCacheBuilder.Name)
+ serviceProvider.GetRequiredService().Create(distributedCacheBuilder.Name),
+ connectConfig
);
return distributedCacheClient;
});
diff --git a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Internal/Extensions/RedisValueExtensions.cs b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Internal/Extensions/RedisValueExtensions.cs
index 9421251f2..c9d29ea26 100644
--- a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Internal/Extensions/RedisValueExtensions.cs
+++ b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Internal/Extensions/RedisValueExtensions.cs
@@ -1,4 +1,4 @@
-// Copyright (c) MASA Stack All rights reserved.
+// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
// ReSharper disable once CheckNamespace
@@ -29,7 +29,7 @@ public static HashEntry[] ConvertToHashEntries(
if (compressMode == CompressMode.None)
return (T?)Convert.ChangeType(redisValue, actualType);
- var byteValue = (byte[])redisValue;
+ var byteValue = (byte[])redisValue!;
if (byteValue.Length == 0)
return default;
diff --git a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Options/RedisConfigurationOptions.cs b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Options/RedisConfigurationOptions.cs
index fd59c5edb..4bda84fe7 100644
--- a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Options/RedisConfigurationOptions.cs
+++ b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/Options/RedisConfigurationOptions.cs
@@ -1,4 +1,4 @@
-// Copyright (c) MASA Stack All rights reserved.
+// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
// ReSharper disable once CheckNamespace
@@ -86,7 +86,7 @@ public static implicit operator ConfigurationOptions(RedisConfigurationOptions o
AbortOnConnectFail = options.AbortOnConnectFail,
AllowAdmin = options.AllowAdmin,
AsyncTimeout = options.AsyncTimeout,
- ChannelPrefix = options.ChannelPrefix,
+ ChannelPrefix = new RedisChannel(options.ChannelPrefix, RedisChannel.PatternMode.Auto),
ClientName = options.ClientName,
ConnectRetry = options.ConnectRetry,
ConnectTimeout = options.ConnectTimeout,
diff --git a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClient.cs b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClient.cs
index 4beab37e9..41e7ead72 100644
--- a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClient.cs
+++ b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClient.cs
@@ -12,8 +12,9 @@ public RedisCacheClient(
RedisConfigurationOptions redisConfigurationOptions,
IFormatCacheKeyProvider? formatCacheKeyProvider = null,
JsonSerializerOptions? jsonSerializerOptions = null,
- ITypeAliasProvider? typeAliasProvider = null)
- : base(redisConfigurationOptions, jsonSerializerOptions)
+ ITypeAliasProvider? typeAliasProvider = null,
+ Action? connectConfig = null)
+ : base(redisConfigurationOptions, jsonSerializerOptions, connectConfig)
{
_formatCacheKeyProvider = formatCacheKeyProvider ?? new DefaultFormatCacheKeyProvider();
_typeAliasProvider = typeAliasProvider;
@@ -95,7 +96,7 @@ private async Task>> GetListAsync(List keys)
return GetAndRefresh(formatCacheKey, () =>
{
var cacheEntry = setter();
- if (cacheEntry.Value == null)
+ if (EqualityComparer.Default.Equals(cacheEntry.Value, default(T)))
return default;
SetCoreAsync(key, cacheEntry.Value, cacheEntry.CacheOptions).ConfigureAwait(false).GetAwaiter().GetResult();
@@ -117,7 +118,7 @@ private async Task>> GetListAsync(List keys)
return await GetAndRefreshAsync(key, async () =>
{
var cacheEntry = await setter().ConfigureAwait(false);
- if (cacheEntry.Value == null)
+ if (EqualityComparer.Default.Equals(cacheEntry.Value, default(T)))
return default;
await SetCoreAsync(key, cacheEntry.Value, cacheEntry.CacheOptions).ConfigureAwait(false);
@@ -137,7 +138,8 @@ public override IEnumerable GetKeys(string keyPattern)
{
pattern = keyPattern
});
- return (string[])cacheResult;
+ if (cacheResult == null) return Array.Empty();
+ return (string[])cacheResult!;
}
public override IEnumerable GetKeys(
@@ -160,7 +162,8 @@ public override async Task> GetKeysAsync(string keyPattern)
{
pattern = keyPattern
}).ConfigureAwait(false);
- return (string[])cacheResult;
+ if (cacheResult == null) return Array.Empty();
+ return (string[])cacheResult!;
}
public override Task> GetKeysAsync(
@@ -371,21 +374,21 @@ public override void Publish(string channel, Action options)
{
var publishOptions = GetAndCheckPublishOptions(channel, options);
var message = JsonSerializer.Serialize(publishOptions, GlobalJsonSerializerOptions);
- Subscriber.Publish(channel, message);
+ Subscriber.Publish(new RedisChannel(channel, RedisChannel.PatternMode.Auto), message);
}
public override async Task PublishAsync(string channel, Action options)
{
var publishOptions = GetAndCheckPublishOptions(channel, options);
var message = JsonSerializer.Serialize(publishOptions, GlobalJsonSerializerOptions);
- await Subscriber.PublishAsync(channel, message).ConfigureAwait(false);
+ await Subscriber.PublishAsync(new RedisChannel(channel, RedisChannel.PatternMode.Auto), message).ConfigureAwait(false);
}
public override void Subscribe(string channel, Action> options)
{
- Subscriber.Subscribe(channel, (_, message) =>
+ Subscriber.Subscribe(new RedisChannel(channel, RedisChannel.PatternMode.Auto), (_, message) =>
{
- var subscribeOptions = JsonSerializer.Deserialize>(message);
+ var subscribeOptions = JsonSerializer.Deserialize>(message.ToString());
if (subscribeOptions != null)
subscribeOptions.IsPublisherClient = subscribeOptions.UniquelyIdentifies == UniquelyIdentifies;
options(subscribeOptions!);
@@ -394,9 +397,9 @@ public override void Subscribe(string channel, Action> op
public override Task SubscribeAsync(string channel, Action> options)
{
- return Subscriber.SubscribeAsync(channel, (_, message) =>
+ return Subscriber.SubscribeAsync(new RedisChannel(channel, RedisChannel.PatternMode.Auto), (_, message) =>
{
- var subscribeOptions = JsonSerializer.Deserialize>(message);
+ var subscribeOptions = JsonSerializer.Deserialize>(message.ToString());
if (subscribeOptions != null)
subscribeOptions.IsPublisherClient = subscribeOptions.UniquelyIdentifies == UniquelyIdentifies;
options(subscribeOptions!);
@@ -405,12 +408,12 @@ public override Task SubscribeAsync(string channel, Action(string channel)
{
- Subscriber.Unsubscribe(channel);
+ Subscriber.Unsubscribe(new RedisChannel(channel, RedisChannel.PatternMode.Auto));
}
public override Task UnSubscribeAsync(string channel)
{
- return Subscriber.UnsubscribeAsync(channel);
+ return Subscriber.UnsubscribeAsync(new RedisChannel(channel, RedisChannel.PatternMode.Auto));
}
#endregion
diff --git a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClientBase.cs b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClientBase.cs
index c0b6c97f9..0e5141c22 100644
--- a/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClientBase.cs
+++ b/src/Contrib/Caching/Distributed/Masa.Contrib.Caching.Distributed.StackExchangeRedis/RedisCacheClientBase.cs
@@ -19,22 +19,25 @@ protected IDatabase Db
}
}
- private IConnectionMultiplexer _connection;
+ private ConnectionMultiplexer _connection;
protected readonly JsonSerializerOptions GlobalJsonSerializerOptions;
private readonly CacheEntryOptions _globalCacheEntryOptions;
private readonly CacheOptions _globalCacheOptions;
-
private readonly RedisConfigurationOptions _redisConfigurationOptions;
+ private readonly Action? _connectConfig;
protected RedisCacheClientBase(
RedisConfigurationOptions redisConfigurationOptions,
- JsonSerializerOptions? jsonSerializerOptions)
+ JsonSerializerOptions? jsonSerializerOptions,
+ Action? connectConfig)
: this(redisConfigurationOptions.GlobalCacheOptions, redisConfigurationOptions, jsonSerializerOptions)
{
_redisConfigurationOptions = redisConfigurationOptions;
+ _connectConfig = connectConfig;
var redisConfiguration = redisConfigurationOptions.GetAvailableRedisOptions();
_connection = ConnectionMultiplexer.Connect(redisConfiguration);
Subscriber = _connection.GetSubscriber();
+ _connectConfig?.Invoke(_connection);
InstanceId = redisConfiguration.InstanceId;
}
@@ -60,6 +63,7 @@ protected void EnsureDbConnection()
// Attempt to reconnect
var redisConfiguration = _redisConfigurationOptions.GetAvailableRedisOptions();
_connection = ConnectionMultiplexer.Connect(redisConfiguration);
+ _connectConfig?.Invoke(_connection);
Subscriber = _connection.GetSubscriber();
}
@@ -161,7 +165,7 @@ private List GetListCoreByKeyPattern(
List list = new List();
foreach (var redisResult in arrayRedisResult)
{
- var byteArray = (RedisValue[])redisResult.Value;
+ var byteArray = (RedisValue[])redisResult.Value!;
list.Add(MapMetadataByAutomatic(redisResult.Key, byteArray));
}
return list;
diff --git a/src/Contrib/Configuration/ConfigurationApi/Masa.Contrib.Configuration.ConfigurationApi.Dcc/MasaConfigurationExtensions.cs b/src/Contrib/Configuration/ConfigurationApi/Masa.Contrib.Configuration.ConfigurationApi.Dcc/MasaConfigurationExtensions.cs
index 8b0d8d4ac..8959e0980 100644
--- a/src/Contrib/Configuration/ConfigurationApi/Masa.Contrib.Configuration.ConfigurationApi.Dcc/MasaConfigurationExtensions.cs
+++ b/src/Contrib/Configuration/ConfigurationApi/Masa.Contrib.Configuration.ConfigurationApi.Dcc/MasaConfigurationExtensions.cs
@@ -11,19 +11,21 @@ public static IMasaConfigurationBuilder UseDcc(
this IMasaConfigurationBuilder builder,
Action? jsonSerializerOptions = null,
Action? callerBuilder = null,
- string sectionName = "DccOptions")
+ string sectionName = "DccOptions",
+ Action? connectConfig = null)
{
var configurationSection = builder.Configuration.GetSection(sectionName);
var dccOptions = configurationSection.Get();
MasaArgumentException.ThrowIfNull(dccOptions);
- return builder.UseDcc(dccOptions, jsonSerializerOptions, callerBuilder);
+ return builder.UseDcc(dccOptions, jsonSerializerOptions, callerBuilder, connectConfig);
}
public static IMasaConfigurationBuilder UseDcc(
this IMasaConfigurationBuilder builder,
DccOptions dccOptions,
Action? jsonSerializerOptions = null,
- Action? action = null)
+ Action? action = null,
+ Action? connectConfig = null)
{
var services = builder.Services;
@@ -37,7 +39,7 @@ public static IMasaConfigurationBuilder UseDcc(
services.AddSingleton();
services.AddMultilevelCache(
DEFAULT_CLIENT_NAME,
- distributedCacheOptions => distributedCacheOptions.UseStackExchangeRedisCache(dccOptions.RedisOptions),
+ distributedCacheOptions => distributedCacheOptions.UseStackExchangeRedisCache(dccOptions.RedisOptions, connectConfig: connectConfig),
multilevelCacheOptions =>
{
multilevelCacheOptions.SubscribeKeyType = SubscribeKeyType.SpecificPrefix;
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Azure/Masa.Contrib.Data.DistributedLock.Medallion.Azure.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Azure/Masa.Contrib.Data.DistributedLock.Medallion.Azure.csproj
index bb21c93d4..54210c23f 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Azure/Masa.Contrib.Data.DistributedLock.Medallion.Azure.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Azure/Masa.Contrib.Data.DistributedLock.Medallion.Azure.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem.csproj
index 5af401b1b..25dac2d33 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem/Masa.Contrib.Data.DistributedLock.Medallion.FileSystem.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.MySql/Masa.Contrib.Data.DistributedLock.Medallion.MySql.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.MySql/Masa.Contrib.Data.DistributedLock.Medallion.MySql.csproj
index dc15ddf39..060b88afe 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.MySql/Masa.Contrib.Data.DistributedLock.Medallion.MySql.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.MySql/Masa.Contrib.Data.DistributedLock.Medallion.MySql.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Oracle/Masa.Contrib.Data.DistributedLock.Medallion.Oracle.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Oracle/Masa.Contrib.Data.DistributedLock.Medallion.Oracle.csproj
index c5e285cc4..6bf79fa29 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Oracle/Masa.Contrib.Data.DistributedLock.Medallion.Oracle.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Oracle/Masa.Contrib.Data.DistributedLock.Medallion.Oracle.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql.csproj
index d21d0875e..cfd522b8f 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql/Masa.Contrib.Data.DistributedLock.Medallion.PostgreSql.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Redis/Masa.Contrib.Data.DistributedLock.Medallion.Redis.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Redis/Masa.Contrib.Data.DistributedLock.Medallion.Redis.csproj
index b526a4fdd..9aa48ec28 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Redis/Masa.Contrib.Data.DistributedLock.Medallion.Redis.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.Redis/Masa.Contrib.Data.DistributedLock.Medallion.Redis.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer.csproj
index bac6943b2..dc1818d5f 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer/Masa.Contrib.Data.DistributedLock.Medallion.SqlServer.csproj
@@ -1,4 +1,4 @@
-
+
enable
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles.csproj
index 04e85dc12..b10e68909 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles/Masa.Contrib.Data.DistributedLock.Medallion.WaitHandles.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper.csproj b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper.csproj
index 0103a1c8d..eb99198a6 100644
--- a/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper.csproj
+++ b/src/Contrib/Data/DistributedLock/Medallion/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper/Masa.Contrib.Data.DistributedLock.Medallion.ZooKeeper.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Cosmos/Masa.Contrib.Data.EFCore.Cosmos.csproj b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Cosmos/Masa.Contrib.Data.EFCore.Cosmos.csproj
index f88838a07..32948661d 100644
--- a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Cosmos/Masa.Contrib.Data.EFCore.Cosmos.csproj
+++ b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Cosmos/Masa.Contrib.Data.EFCore.Cosmos.csproj
@@ -9,6 +9,14 @@
+
+
+
+
+
+
+
+
diff --git a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Oracle/Masa.Contrib.Data.EFCore.Oracle.csproj b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Oracle/Masa.Contrib.Data.EFCore.Oracle.csproj
index 59bb14a95..2e765715e 100644
--- a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Oracle/Masa.Contrib.Data.EFCore.Oracle.csproj
+++ b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Oracle/Masa.Contrib.Data.EFCore.Oracle.csproj
@@ -6,21 +6,9 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Pomelo.MySql/Masa.Contrib.Data.EFCore.Pomelo.MySql.csproj b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Pomelo.MySql/Masa.Contrib.Data.EFCore.Pomelo.MySql.csproj
index d6be3b506..74bcf7c05 100644
--- a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Pomelo.MySql/Masa.Contrib.Data.EFCore.Pomelo.MySql.csproj
+++ b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.Pomelo.MySql/Masa.Contrib.Data.EFCore.Pomelo.MySql.csproj
@@ -8,13 +8,13 @@
-
+
-
+
diff --git a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.SqlServer/Masa.Contrib.Data.EFCore.SqlServer.csproj b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.SqlServer/Masa.Contrib.Data.EFCore.SqlServer.csproj
index 58bbc1c1e..35edb6181 100644
--- a/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.SqlServer/Masa.Contrib.Data.EFCore.SqlServer.csproj
+++ b/src/Contrib/Data/Orm/EFCore/Masa.Contrib.Data.EFCore.SqlServer/Masa.Contrib.Data.EFCore.SqlServer.csproj
@@ -5,9 +5,21 @@
enable
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Contrib/RulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine.csproj b/src/Contrib/RulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine.csproj
index ff962a5bc..278a5b58a 100644
--- a/src/Contrib/RulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine.csproj
+++ b/src/Contrib/RulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine/Masa.Contrib.RulesEngine.MicrosoftRulesEngine.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/Contrib/Storage/ObjectStorage/Masa.Contrib.Storage.ObjectStorage.Aliyun/Masa.Contrib.Storage.ObjectStorage.Aliyun.csproj b/src/Contrib/Storage/ObjectStorage/Masa.Contrib.Storage.ObjectStorage.Aliyun/Masa.Contrib.Storage.ObjectStorage.Aliyun.csproj
index 8476710e8..4bd998beb 100644
--- a/src/Contrib/Storage/ObjectStorage/Masa.Contrib.Storage.ObjectStorage.Aliyun/Masa.Contrib.Storage.ObjectStorage.Aliyun.csproj
+++ b/src/Contrib/Storage/ObjectStorage/Masa.Contrib.Storage.ObjectStorage.Aliyun/Masa.Contrib.Storage.ObjectStorage.Aliyun.csproj
@@ -10,8 +10,8 @@
-
-
+
+