This commit is contained in:
2881099 2023-05-30 09:42:35 +08:00
parent 1250f4f3af
commit a76f7907f9
37 changed files with 103 additions and 62 deletions

View File

@ -11,7 +11,7 @@
<!-- <!--
经常出于版本交叉问题,暂时关闭,在每个项目上设置版本号 经常出于版本交叉问题,暂时关闭,在每个项目上设置版本号
<PropertyGroup> <PropertyGroup>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
--> -->

View File

@ -34,12 +34,12 @@ namespace aspnetcore_transaction.Controllers
} }
[HttpGet("2")] [HttpGet("2")]
//[Transactional] [Transactional]
public async Task<object> GetAsync([FromServices] BaseRepository<Song> repoSong, [FromServices] BaseRepository<Detail> repoDetail, [FromServices] SongRepository repoSong2, public async Task<object> GetAsync([FromServices] BaseRepository<Song> repoSong, [FromServices] BaseRepository<Detail> repoDetail, [FromServices] SongRepository repoSong2,
[FromServices] SongService serviceSong) [FromServices] SongService serviceSong)
{ {
await serviceSong.Test2(); await repoSong.InsertAsync(new Song());
await serviceSong.Test3(); await repoDetail.InsertAsync(new Detail());
return "111"; return "111";
} }
} }

View File

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace aspnetcore_transaction namespace aspnetcore_transaction
{ {
@ -12,6 +13,11 @@ namespace aspnetcore_transaction
public static IHostBuilder CreateHostBuilder(string[] args) => public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args) Host.CreateDefaultBuilder(args)
.ConfigureLogging(loggerBuilder =>
{
loggerBuilder.SetMinimumLevel(LogLevel.Critical);
//loggerBuilder.ClearProviders();
})
.ConfigureWebHostDefaults(webBuilder => .ConfigureWebHostDefaults(webBuilder =>
{ {
webBuilder.UseStartup<Startup>(); webBuilder.UseStartup<Startup>();

View File

@ -2,6 +2,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using aspnetcore_transaction.Controllers; using aspnetcore_transaction.Controllers;
using FreeSql; using FreeSql;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
@ -17,14 +18,18 @@ namespace aspnetcore_transaction
{ {
Configuration = configuration; Configuration = configuration;
Fsql = new FreeSqlBuilder() Fsql = new FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\test_trans.db") .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=50;TrustServerCertificate=true")
.UseAutoSyncStructure(true) .UseAutoSyncStructure(true)
.UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText)) //.UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText))
.UseNoneCommandParameter(true) .UseNoneCommandParameter(true)
.Build(); .Build();
Fsql.Aop.TraceBefore += (_, e) => Trace.WriteLine($"----TraceBefore---{e.Identifier} {e.Operation}"); //Fsql.Aop.TraceBefore += (_, e) => Trace.WriteLine($"----TraceBefore---{e.Identifier} {e.Operation}");
Fsql.Aop.TraceAfter += (_, e) => Trace.WriteLine($"----TraceAfter---{e.Identifier} {e.Operation} {e.Remark} {e.Exception?.Message} {e.ElapsedMilliseconds}ms\r\n"); Fsql.Aop.TraceAfter += (_, e) =>
{
//Trace.WriteLine($"----TraceAfter---{e.Identifier} {e.Operation} {e.Remark} {e.Exception?.Message} {e.ElapsedMilliseconds}ms\r\n");
if (e.Exception != null && e.Exception.Message.StartsWith("【主库】状态不可用,等待后台检查程序恢复方可使用。") == false) Console.WriteLine(e.Exception.Message + " === " + Fsql.Ado.MasterPool.Statistics);
};
} }
public IConfiguration Configuration { get; } public IConfiguration Configuration { get; }
@ -32,6 +37,8 @@ namespace aspnetcore_transaction
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
ThreadPool.SetMinThreads(1000, 1000);
services.AddControllersWithViews(); services.AddControllersWithViews();
services.AddSingleton<IFreeSql>(Fsql); services.AddSingleton<IFreeSql>(Fsql);

View File

@ -38,6 +38,7 @@ namespace FreeSql
if (context.Exception == null) _uow.Commit(); if (context.Exception == null) _uow.Commit();
else _uow.Rollback(); else _uow.Rollback();
} }
catch { }
finally finally
{ {
_uow.Dispose(); _uow.Dispose();

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -19,7 +19,7 @@
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title> <Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo> <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -13,7 +13,7 @@
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl> <PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl> <RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
<PackageTags>FreeSql DbFirst 实体生成器</PackageTags> <PackageTags>FreeSql DbFirst 实体生成器</PackageTags>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -174,7 +174,7 @@ namespace FreeSql.Internal.CommonProvider
if (equalBinaryExp.Right.IsParameter()) if (equalBinaryExp.Right.IsParameter())
{ {
_query2Provider._groupby = null; _query2Provider._groupby = null;
var valueExp = Expression.Lambda<Func<T1, T2, object>>(equalBinaryExp.Right, exp.Parameters); var valueExp = Expression.Lambda<Func<T1, T2, object>>(Expression.Convert(equalBinaryExp.Right, typeof(object)), exp.Parameters);
_query2.GroupBy(valueExp); _query2.GroupBy(valueExp);
valueSql = _query2Provider._groupby?.Remove(0, " \r\nGROUP BY ".Length); valueSql = _query2Provider._groupby?.Remove(0, " \r\nGROUP BY ".Length);
} }

View File

@ -50,9 +50,9 @@ namespace FreeSql.Internal.ObjectPool
{ {
public IPolicy<T> Policy { get; protected set; } public IPolicy<T> Policy { get; protected set; }
private List<Object<T>> _allObjects = new List<Object<T>>();
private object _allObjectsLock = new object(); private object _allObjectsLock = new object();
private ConcurrentStack<Object<T>> _freeObjects = new ConcurrentStack<Object<T>>(); internal List<Object<T>> _allObjects = new List<Object<T>>();
internal ConcurrentStack<Object<T>> _freeObjects = new ConcurrentStack<Object<T>>();
private ConcurrentQueue<GetSyncQueueInfo> _getSyncQueue = new ConcurrentQueue<GetSyncQueueInfo>(); private ConcurrentQueue<GetSyncQueueInfo> _getSyncQueue = new ConcurrentQueue<GetSyncQueueInfo>();
private ConcurrentQueue<TaskCompletionSource<Object<T>>> _getAsyncQueue = new ConcurrentQueue<TaskCompletionSource<Object<T>>>(); private ConcurrentQueue<TaskCompletionSource<Object<T>>> _getAsyncQueue = new ConcurrentQueue<TaskCompletionSource<Object<T>>>();
@ -112,8 +112,8 @@ namespace FreeSql.Internal.ObjectPool
try try
{ {
var conn = GetFree(false); var conn = GetFree(false);
if (conn == null) throw new Exception(CoreStrings.Available_Failed_Get_Resource("CheckAvailable", this.Statistics)); if (conn == null) throw new Exception($"【{Policy.Name}】Failed to get resource {this.Statistics}");
try try
{ {
try try
@ -125,7 +125,7 @@ namespace FreeSql.Internal.ObjectPool
{ {
conn.ResetValue(); conn.ResetValue();
} }
if (Policy.OnCheckAvailable(conn) == false) throw new Exception(CoreStrings.Available_Thrown_Exception("CheckAvailable")); if (Policy.OnCheckAvailable(conn) == false) throw new Exception("【{Policy.Name}】An exception needs to be thrown");
break; break;
} }
finally finally
@ -177,11 +177,11 @@ namespace FreeSql.Internal.ObjectPool
try try
{ {
var conn = GetFree(false); var conn = GetFree(false);
if (conn == null) throw new Exception(CoreStrings.Available_Failed_Get_Resource("LiveCheckAvailable", this.Statistics)); if (conn == null) throw new Exception($"【{Policy.Name}】Failed to get resource {this.Statistics}");
try try
{ {
if (Policy.OnCheckAvailable(conn) == false) throw new Exception(CoreStrings.Available_Thrown_Exception("LiveCheckAvailable")); if (Policy.OnCheckAvailable(conn) == false) throw new Exception("【{Policy.Name}】An exception needs to be thrown");
} }
finally finally
{ {
@ -281,10 +281,10 @@ namespace FreeSql.Internal.ObjectPool
{ {
if (running == false) if (running == false)
throw new ObjectDisposedException(CoreStrings.Policy_ObjectPool_Dispose(Policy.Name)); throw new ObjectDisposedException($"【{Policy.Name}】The ObjectPool has been disposed, see: https://github.com/dotnetcore/FreeSql/discussions/1079");
if (checkAvailable && UnavailableException != null) if (checkAvailable && UnavailableException != null)
throw new Exception(CoreStrings.Policy_Status_NotAvailable(Policy.Name,UnavailableException?.Message), UnavailableException); throw new Exception($"【{Policy.Name}】Status unavailable, waiting for recovery. {UnavailableException?.Message}", UnavailableException);
if ((_freeObjects.TryPop(out var obj) == false || obj == null) && _allObjects.Count < Policy.PoolSize) if ((_freeObjects.TryPop(out var obj) == false || obj == null) && _allObjects.Count < Policy.PoolSize)
{ {
@ -335,12 +335,13 @@ namespace FreeSql.Internal.ObjectPool
if (obj == null) obj = queueItem.ReturnValue; if (obj == null) obj = queueItem.ReturnValue;
if (obj == null) lock (queueItem.Lock) queueItem.IsTimeout = (obj = queueItem.ReturnValue) == null; if (obj == null) lock (queueItem.Lock) queueItem.IsTimeout = (obj = queueItem.ReturnValue) == null;
if (obj == null) obj = queueItem.ReturnValue; if (obj == null) obj = queueItem.ReturnValue;
if (queueItem.Exception != null) throw queueItem.Exception;
if (obj == null) if (obj == null)
{ {
Policy.OnGetTimeout(); Policy.OnGetTimeout();
if (Policy.IsThrowGetTimeoutException) if (Policy.IsThrowGetTimeoutException)
throw new TimeoutException(CoreStrings.ObjectPool_Get_Timeout(Policy.Name, "Get", timeout.Value.TotalSeconds)); throw new TimeoutException($"【{Policy.Name}】ObjectPool.Get() timeout {timeout.Value.TotalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081");
return null; return null;
} }
@ -372,7 +373,7 @@ namespace FreeSql.Internal.ObjectPool
if (obj == null) if (obj == null)
{ {
if (Policy.AsyncGetCapacity > 0 && _getAsyncQueue.Count >= Policy.AsyncGetCapacity - 1) if (Policy.AsyncGetCapacity > 0 && _getAsyncQueue.Count >= Policy.AsyncGetCapacity - 1)
throw new OutOfMemoryException(CoreStrings.ObjectPool_GetAsync_Queue_Long(Policy.Name, Policy.AsyncGetCapacity)); throw new OutOfMemoryException($"【{Policy.Name}】ObjectPool.GetAsync() The queue is too long. Policy. AsyncGetCapacity = {Policy.AsyncGetCapacity}");
var tcs = new TaskCompletionSource<Object<T>>(); var tcs = new TaskCompletionSource<Object<T>>();
@ -392,7 +393,7 @@ namespace FreeSql.Internal.ObjectPool
// Policy.GetTimeout(); // Policy.GetTimeout();
// if (Policy.IsThrowGetTimeoutException) // if (Policy.IsThrowGetTimeoutException)
// throw new Exception($"ObjectPool.GetAsync 获取超时({timeout.Value.TotalSeconds}秒)。"); // throw new TimeoutException($"【{Policy.Name}】ObjectPool.GetAsync() timeout {timeout.Value.TotalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081");
// return null; // return null;
//} //}
@ -444,16 +445,26 @@ namespace FreeSql.Internal.ObjectPool
if (queueItem.ReturnValue != null) if (queueItem.ReturnValue != null)
{ {
obj.LastReturnThreadId = Thread.CurrentThread.ManagedThreadId; if (UnavailableException != null)
obj.LastReturnTime = DateTime.Now;
try
{ {
queueItem.Wait.Set(); queueItem.Exception = new Exception($"【{Policy.Name}】Status unavailable, waiting for recovery. {UnavailableException?.Message}", UnavailableException);
isReturn = true; try
{
queueItem.Wait.Set();
}
catch { }
} }
catch else
{ {
obj.LastReturnThreadId = Thread.CurrentThread.ManagedThreadId;
obj.LastReturnTime = DateTime.Now;
try
{
queueItem.Wait.Set();
isReturn = true;
}
catch { }
} }
} }
@ -464,10 +475,25 @@ namespace FreeSql.Internal.ObjectPool
{ {
if (_getAsyncQueue.TryDequeue(out var tcs) && tcs != null && tcs.Task.IsCanceled == false) if (_getAsyncQueue.TryDequeue(out var tcs) && tcs != null && tcs.Task.IsCanceled == false)
{ {
obj.LastReturnThreadId = Thread.CurrentThread.ManagedThreadId; if (UnavailableException != null)
obj.LastReturnTime = DateTime.Now; {
try
{
tcs.TrySetException(new Exception($"【{Policy.Name}】Status unavailable, waiting for recovery. {UnavailableException?.Message}", UnavailableException));
}
catch { }
}
else
{
obj.LastReturnThreadId = Thread.CurrentThread.ManagedThreadId;
obj.LastReturnTime = DateTime.Now;
try { isReturn = tcs.TrySetResult(obj); } catch { } try
{
isReturn = tcs.TrySetResult(obj);
}
catch { }
}
} }
} }
} }
@ -524,6 +550,7 @@ namespace FreeSql.Internal.ObjectPool
internal Object<T> ReturnValue { get; set; } internal Object<T> ReturnValue { get; set; }
internal object Lock = new object(); internal object Lock = new object();
internal bool IsTimeout { get; set; } = false; internal bool IsTimeout { get; set; } = false;
internal Exception Exception { get; set; }
public void Dispose() public void Dispose()
{ {

View File

@ -19,7 +19,7 @@
<SignAssembly>False</SignAssembly> <SignAssembly>False</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title> <Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo> <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title> <Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo> <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title> <Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo> <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign> <DelaySign>false</DelaySign>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title> <Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo> <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.696-preview20230524</Version> <Version>3.2.696</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>