diff --git a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/Async/CustomMessageHandlerAsync_Events.cs b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/Async/CustomMessageHandlerAsync_Events.cs
index 633617b7bd..fed0202347 100644
--- a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/Async/CustomMessageHandlerAsync_Events.cs
+++ b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/Async/CustomMessageHandlerAsync_Events.cs
@@ -22,7 +22,6 @@
using Senparc.Weixin.MP.Helpers;
using Senparc.Weixin.MP.MessageHandlers;
using Senparc.Weixin.MP.Sample.CommonService.Download;
-using Senparc.Weixin.MP.Sample.CommonService.Utilities;
using Senparc.NeuChar.Entities;
#if NET45
diff --git a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler.cs b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler.cs
index 7906ed742f..524b2b34ec 100644
--- a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler.cs
+++ b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler.cs
@@ -41,7 +41,6 @@
using System.Web;
using System.Configuration;
using System.Web.Configuration;
-using Senparc.Weixin.MP.Sample.CommonService.Utilities;
#else
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
diff --git a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomThirdPartyMessageHandlers/CustomThirdPartyMessageHandler.cs b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomThirdPartyMessageHandlers/CustomThirdPartyMessageHandler.cs
index f3f448e058..cfd7ab6088 100644
--- a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomThirdPartyMessageHandlers/CustomThirdPartyMessageHandler.cs
+++ b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomThirdPartyMessageHandlers/CustomThirdPartyMessageHandler.cs
@@ -6,7 +6,6 @@
using Senparc.Weixin.Open;
using Senparc.Weixin.Open.MessageHandlers;
using System.IO;
-using Senparc.Weixin.MP.Sample.CommonService.Utilities;
using Senparc.Weixin.Open.Entities.Request;
using Senparc.CO2NET.Utilities;
diff --git a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/OpenMessageHandler/OpenCheckMessageHandler.cs b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/OpenMessageHandler/OpenCheckMessageHandler.cs
index f5b63c6be7..aaef25240e 100644
--- a/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/OpenMessageHandler/OpenCheckMessageHandler.cs
+++ b/Samples/Senparc.Weixin.Sample.CommonService/MessageHandlers/OpenMessageHandler/OpenCheckMessageHandler.cs
@@ -16,7 +16,6 @@
using System.Web.Configuration;
using Senparc.Weixin.MP.Sample.CommonService.CustomMessageHandler;
using Senparc.Weixin.MP.Sample.CommonService.OpenTicket;
-using Senparc.Weixin.MP.Sample.CommonService.Utilities;
#else
using Senparc.Weixin.MP.Sample.CommonService.CustomMessageHandler;
using Senparc.Weixin.MP.Sample.CommonService.OpenTicket;
diff --git a/Samples/Senparc.Weixin.Sample.CommonService/OpenTicket/OpenTicketHelper.cs b/Samples/Senparc.Weixin.Sample.CommonService/OpenTicket/OpenTicketHelper.cs
index 1286e30f50..4f77adcd11 100644
--- a/Samples/Senparc.Weixin.Sample.CommonService/OpenTicket/OpenTicketHelper.cs
+++ b/Samples/Senparc.Weixin.Sample.CommonService/OpenTicket/OpenTicketHelper.cs
@@ -6,7 +6,6 @@
using System.Text;
using Senparc.CO2NET.Utilities;
using Senparc.Weixin.Exceptions;
-using Senparc.Weixin.MP.Sample.CommonService.Utilities;
namespace Senparc.Weixin.MP.Sample.CommonService.OpenTicket
{
diff --git a/Samples/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.MP.Sample.CommonService.csproj b/Samples/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.MP.Sample.CommonService.csproj
index 0322c122a7..7e18fefb0c 100644
--- a/Samples/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.MP.Sample.CommonService.csproj
+++ b/Samples/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.MP.Sample.CommonService.csproj
@@ -52,86 +52,86 @@
- packages\BinaryFormatter.2.1.4\lib\netstandard1.1\BinaryFormatter.dll
+ ..\net45-mvc\packages\BinaryFormatter.2.1.4\lib\netstandard1.1\BinaryFormatter.dll
- packages\Membase.2.14\lib\net35\Enyim.Caching.dll
+ ..\net45-mvc\packages\Membase.2.14\lib\net35\Enyim.Caching.dll
- packages\Enyim.Caching.Web.1.0.0.1\lib\net40\Enyim.Caching.Web.dll
+ ..\net45-mvc\packages\Enyim.Caching.Web.1.0.0.1\lib\net40\Enyim.Caching.Web.dll
- packages\Membase.2.14\lib\net35\Membase.dll
+ ..\net45-mvc\packages\Membase.2.14\lib\net35\Membase.dll
- packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
+ ..\net45-mvc\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
- packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
+ ..\net45-mvc\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
- packages\Senparc.CO2NET.1.4.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.dll
+ ..\net45-mvc\packages\Senparc.CO2NET.1.4.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.dll
- packages\Senparc.CO2NET.APM.0.10.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.APM.dll
+ ..\net45-mvc\packages\Senparc.CO2NET.APM.0.10.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.APM.dll
- packages\Senparc.CO2NET.AspNet.0.4.300.4-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.AspNet.dll
+ ..\net45-mvc\packages\Senparc.CO2NET.AspNet.0.4.300.4-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.AspNet.dll
- packages\Senparc.CO2NET.Cache.Memcached.3.8.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Memcached.dll
+ ..\net45-mvc\packages\Senparc.CO2NET.Cache.Memcached.3.8.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Memcached.dll
- packages\Senparc.CO2NET.Cache.Redis.3.10.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Redis.dll
+ ..\net45-mvc\packages\Senparc.CO2NET.Cache.Redis.3.10.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Redis.dll
- packages\Senparc.CO2NET.Cache.Redis.RedLock.2.6.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Redis.RedLock.dll
+ ..\net45-mvc\packages\Senparc.CO2NET.Cache.Redis.RedLock.2.6.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Redis.RedLock.dll
- packages\Senparc.NeuChar.1.4.100.9-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.dll
+ ..\net45-mvc\packages\Senparc.NeuChar.1.4.100.9-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.dll
- packages\Senparc.NeuChar.App.0.10.100.9-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.App.dll
+ ..\net45-mvc\packages\Senparc.NeuChar.App.0.10.100.9-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.App.dll
- packages\Senparc.NeuChar.AspNet.0.4.100.10-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.AspNet.dll
+ ..\net45-mvc\packages\Senparc.NeuChar.AspNet.0.4.100.10-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.AspNet.dll
- packages\Senparc.WebSocket.0.12.100.1-preview2\lib\net45\Senparc.WebSocket.dll
+ ..\net45-mvc\packages\Senparc.WebSocket.0.12.100.1-preview2\lib\net45\Senparc.WebSocket.dll
- packages\Senparc.Weixin.6.9.101.1-preview2\lib\net45\Senparc.Weixin.dll
+ ..\net45-mvc\packages\Senparc.Weixin.6.9.101.1-preview2\lib\net45\Senparc.Weixin.dll
- packages\Senparc.Weixin.AspNet.0.3.100.2-preview2\lib\net45\Senparc.Weixin.AspNet.dll
+ ..\net45-mvc\packages\Senparc.Weixin.AspNet.0.3.100.2-preview2\lib\net45\Senparc.Weixin.AspNet.dll
- packages\Senparc.Weixin.Cache.Memcached.2.8.100.1-preview2\lib\net45\Senparc.Weixin.Cache.Memcached.dll
+ ..\net45-mvc\packages\Senparc.Weixin.Cache.Memcached.2.8.100.1-preview2\lib\net45\Senparc.Weixin.Cache.Memcached.dll
- packages\Senparc.Weixin.Cache.Redis.2.10.100.1-preview2\lib\net45\Senparc.Weixin.Cache.Redis.dll
+ ..\net45-mvc\packages\Senparc.Weixin.Cache.Redis.2.10.100.1-preview2\lib\net45\Senparc.Weixin.Cache.Redis.dll
- packages\Senparc.Weixin.MP.16.12.101.1-preview2\lib\net45\Senparc.Weixin.MP.dll
+ ..\net45-mvc\packages\Senparc.Weixin.MP.16.12.101.1-preview2\lib\net45\Senparc.Weixin.MP.dll
- packages\Senparc.Weixin.MP.MVC.7.7.100.1-preview2\lib\net45\Senparc.Weixin.MP.MvcExtension.dll
+ ..\net45-mvc\packages\Senparc.Weixin.MP.MVC.7.7.100.1-preview2\lib\net45\Senparc.Weixin.MP.MvcExtension.dll
- packages\Senparc.Weixin.Open.4.9.100.1-preview2\lib\net45\Senparc.Weixin.Open.dll
+ ..\net45-mvc\packages\Senparc.Weixin.Open.4.9.100.1-preview2\lib\net45\Senparc.Weixin.Open.dll
- packages\Senparc.Weixin.TenPay.1.7.100.2-preview2\lib\net45\Senparc.Weixin.TenPay.dll
+ ..\net45-mvc\packages\Senparc.Weixin.TenPay.1.7.100.2-preview2\lib\net45\Senparc.Weixin.TenPay.dll
- packages\Senparc.Weixin.Work.3.9.102.2-preview2\lib\net45\Senparc.Weixin.Work.dll
+ ..\net45-mvc\packages\Senparc.Weixin.Work.3.9.102.2-preview2\lib\net45\Senparc.Weixin.Work.dll
- packages\Senparc.Weixin.WxOpen.3.11.100.3-preview2\lib\net45\Senparc.Weixin.WxOpen.dll
+ ..\net45-mvc\packages\Senparc.Weixin.WxOpen.3.11.100.3-preview2\lib\net45\Senparc.Weixin.WxOpen.dll
- packages\StackExchange.Redis.1.2.6\lib\net45\StackExchange.Redis.dll
+ ..\net45-mvc\packages\StackExchange.Redis.1.2.6\lib\net45\StackExchange.Redis.dll
@@ -141,29 +141,29 @@
- packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
+ ..\net45-mvc\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
- packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll
+ ..\net45-mvc\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll
- packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll
+ ..\net45-mvc\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll
- packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll
+ ..\net45-mvc\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll
- packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll
+ ..\net45-mvc\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll
- packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll
+ ..\net45-mvc\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll
- packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll
+ ..\net45-mvc\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll
@@ -204,7 +204,6 @@
-
diff --git a/Samples/Senparc.Weixin.Sample.CommonService/Utilities/QrCodeHelper.cs b/Samples/Senparc.Weixin.Sample.CommonService/Utilities/QrCodeHelper.cs
deleted file mode 100644
index 2f1a4d1f02..0000000000
--- a/Samples/Senparc.Weixin.Sample.CommonService/Utilities/QrCodeHelper.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.IO;
-using System.Linq;
-using System.Net.NetworkInformation;
-using System.Text;
-using System.Threading.Tasks;
-using ZXing;
-using ZXing.Common;
-
-namespace Senparc.Weixin.MP.Sample.CommonService.Utilities
-{
- public static class QrCodeHelper
- {
- ///
- /// 生成二维码
- ///
- ///
- ///
- public static MemoryStream GerQrCodeStream(string url)
- {
- BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 300, 300);
- var bw = new ZXing.BarcodeWriterPixelData();
-
- var pixelData = bw.Write(bitMatrix);
- var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
- var fileStream = new MemoryStream();
- var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
- try
- {
- // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
- System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length);
- }
- finally
- {
- bitmap.UnlockBits(bitmapData);
- }
-
- fileStream.Flush();//.net core 必须要加
- fileStream.Position = 0;//.net core 必须要加
-
- bitmap.Save(fileStream, System.Drawing.Imaging.ImageFormat.Png);
-
- fileStream.Seek(0, SeekOrigin.Begin);
- return fileStream;
- }
-
- ///
- /// 获取文字图片信息
- ///
- ///
- ///
- public static MemoryStream GetTextImageStream(string text)
- {
- MemoryStream fileStream = new MemoryStream();
- var fontSize = 14;
- var wordLength = 0;
- for (int i = 0; i < text.Length; i++)
- {
- byte[] bytes = Encoding.Default.GetBytes(text.Substring(i, 1));
- wordLength += bytes.Length > 1 ? 2 : 1;
- }
- using (var bitmap = new System.Drawing.Bitmap(wordLength * fontSize + 20, 14 + 40, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
- {
- using (Graphics g = Graphics.FromImage(bitmap))
- {
- g.ResetTransform();//重置图像
- g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
- g.DrawString(text, new Font("宋体", fontSize, FontStyle.Bold), Brushes.White, 10, 10);
- bitmap.Save(fileStream, System.Drawing.Imaging.ImageFormat.Png);
- }
- }
- fileStream.Seek(0, SeekOrigin.Begin);
- return fileStream;
- }
- }
-}
diff --git a/Samples/net45-mvc/Senparc.Weixin.MP.Sample.sln b/Samples/net45-mvc/Senparc.Weixin.MP.Sample.sln
index 3b6b06d4d8..eb99260e44 100644
--- a/Samples/net45-mvc/Senparc.Weixin.MP.Sample.sln
+++ b/Samples/net45-mvc/Senparc.Weixin.MP.Sample.sln
@@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.29609.76
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Senparc.Weixin.MP.Sample", "Senparc.Weixin.MP.Sample\Senparc.Weixin.MP.Sample.csproj", "{9A4E286B-FE2C-4985-AFBC-FA1A598F97C1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Senparc.Weixin.MP.Sample.CommonService", "Senparc.Weixin.MP.Sample.CommonService\Senparc.Weixin.MP.Sample.CommonService.csproj", "{CCD291E9-16FA-4B53-B032-EBD3F659567B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Senparc.Weixin.MP.Sample.CommonService", "..\Senparc.Weixin.Sample.CommonService\Senparc.Weixin.MP.Sample.CommonService.csproj", "{CCD291E9-16FA-4B53-B032-EBD3F659567B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{4C992D29-47D0-4686-BC85-D1D526AE6E83}"
EndProject
diff --git a/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Controllers/HomeController.cs b/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Controllers/HomeController.cs
index 24289f34e6..0e5a39b6d6 100644
--- a/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Controllers/HomeController.cs
+++ b/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Controllers/HomeController.cs
@@ -45,7 +45,7 @@ public ActionResult Index()
};
TempData["SampleVersion"] = getTypeVersionInfo(this.GetType());//当前Demo的版本号
TempData["CO2NETVersion"] = getTypeVersionInfo(typeof(CO2NET.Config));//CO2NET版本号
- TempData["NeuCharVersion"] = getTypeVersionInfo(typeof(Senparc.NeuChar.ApiBindInfo));//NeuChar版本号
+ TempData["NeuCharVersion"] = getTypeVersionInfo(typeof(Senparc.NeuChar.Register));//NeuChar版本号
TempData["WeixinVersion"] = getTypeVersionInfo(typeof(Senparc.Weixin.Config));
TempData["TenPayVersion"] = getTypeVersionInfo(typeof(Senparc.Weixin.TenPay.Register));//DPBMARK TenPay DPBMARK_END
diff --git a/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.csproj b/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.csproj
index fcc8bc463a..1f3be921d6 100644
--- a/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.csproj
+++ b/Samples/net45-mvc/Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.csproj
@@ -81,65 +81,65 @@
..\packages\Owin.1.0\lib\net40\Owin.dll
True
-
- ..\packages\Senparc.CO2NET.1.4.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.dll
+
+ ..\packages\Senparc.CO2NET.1.5.2-preview3\lib\net45\Senparc.CO2NET.dll
-
- ..\packages\Senparc.CO2NET.APM.0.10.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.APM.dll
+
+ ..\packages\Senparc.CO2NET.APM.0.11.0-preview3\lib\net45\Senparc.CO2NET.APM.dll
-
- ..\packages\Senparc.CO2NET.AspNet.0.4.300.4-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.AspNet.dll
+
+ ..\packages\Senparc.CO2NET.AspNet.0.6.0-preview3\lib\net45\Senparc.CO2NET.AspNet.dll
-
- ..\packages\Senparc.CO2NET.Cache.Memcached.3.8.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Memcached.dll
+
+ ..\packages\Senparc.CO2NET.Cache.Memcached.3.9.0-preview3\lib\net45\Senparc.CO2NET.Cache.Memcached.dll
-
- ..\packages\Senparc.CO2NET.Cache.Redis.3.10.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Redis.dll
+
+ ..\packages\Senparc.CO2NET.Cache.Redis.3.11.2-preview3\lib\net45\Senparc.CO2NET.Cache.Redis.dll
-
- ..\packages\Senparc.CO2NET.Cache.Redis.RedLock.2.6.300.3-preview2.net6p.3.21201.4\lib\net45\Senparc.CO2NET.Cache.Redis.RedLock.dll
+
+ ..\packages\Senparc.CO2NET.Cache.Redis.RedLock.2.7.0-preview3\lib\net45\Senparc.CO2NET.Cache.Redis.RedLock.dll
-
- ..\packages\Senparc.NeuChar.1.4.100.9-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.dll
+
+ ..\packages\Senparc.NeuChar.1.5.0-preview3\lib\net45\Senparc.NeuChar.dll
-
- ..\packages\Senparc.NeuChar.App.0.10.100.9-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.App.dll
+
+ ..\packages\Senparc.NeuChar.App.0.11.0-preview3\lib\net45\Senparc.NeuChar.App.dll
-
- ..\packages\Senparc.NeuChar.AspNet.0.4.100.10-preview2.net6p.3.21201.4\lib\net45\Senparc.NeuChar.AspNet.dll
+
+ ..\packages\Senparc.NeuChar.AspNet.0.5.0-preview3\lib\net45\Senparc.NeuChar.AspNet.dll
-
- ..\packages\Senparc.WebSocket.0.12.100.1-preview2\lib\net45\Senparc.WebSocket.dll
+
+ ..\packages\Senparc.WebSocket.0.14.500-preview2\lib\net45\Senparc.WebSocket.dll
-
- ..\packages\Senparc.Weixin.6.9.101.1-preview2\lib\net45\Senparc.Weixin.dll
+
+ ..\packages\Senparc.Weixin.6.12.500-preview2\lib\net45\Senparc.Weixin.dll
-
- ..\packages\Senparc.Weixin.AspNet.0.3.100.2-preview2\lib\net45\Senparc.Weixin.AspNet.dll
+
+ ..\packages\Senparc.Weixin.AspNet.0.5.500-preview2\lib\net45\Senparc.Weixin.AspNet.dll
-
- ..\packages\Senparc.Weixin.Cache.Memcached.2.8.100.1-preview2\lib\net45\Senparc.Weixin.Cache.Memcached.dll
+
+ ..\packages\Senparc.Weixin.Cache.Memcached.2.10.500-preview2\lib\net45\Senparc.Weixin.Cache.Memcached.dll
-
- ..\packages\Senparc.Weixin.Cache.Redis.2.10.100.1-preview2\lib\net45\Senparc.Weixin.Cache.Redis.dll
+
+ ..\packages\Senparc.Weixin.Cache.Redis.2.12.500-preview2\lib\net45\Senparc.Weixin.Cache.Redis.dll
-
- ..\packages\Senparc.Weixin.MP.16.12.101.1-preview2\lib\net45\Senparc.Weixin.MP.dll
+
+ ..\packages\Senparc.Weixin.MP.16.15.500-preview2\lib\net45\Senparc.Weixin.MP.dll
-
- ..\packages\Senparc.Weixin.MP.MVC.7.7.100.1-preview2\lib\net45\Senparc.Weixin.MP.MvcExtension.dll
+
+ ..\packages\Senparc.Weixin.MP.MVC.7.9.500-preview2\lib\net45\Senparc.Weixin.MP.MvcExtension.dll
-
- ..\packages\Senparc.Weixin.Open.4.9.100.1-preview2\lib\net45\Senparc.Weixin.Open.dll
+
+ ..\packages\Senparc.Weixin.Open.4.11.500-preview2\lib\net45\Senparc.Weixin.Open.dll
-
- ..\packages\Senparc.Weixin.TenPay.1.7.100.2-preview2\lib\net45\Senparc.Weixin.TenPay.dll
+
+ ..\packages\Senparc.Weixin.TenPay.1.9.500.1-preview2\lib\net45\Senparc.Weixin.TenPay.dll
-
- ..\packages\Senparc.Weixin.Work.3.9.102.2-preview2\lib\net45\Senparc.Weixin.Work.dll
+
+ ..\packages\Senparc.Weixin.Work.3.12.501-preview\lib\net45\Senparc.Weixin.Work.dll
-
- ..\packages\Senparc.Weixin.WxOpen.3.11.100.3-preview2\lib\net45\Senparc.Weixin.WxOpen.dll
+
+ ..\packages\Senparc.Weixin.WxOpen.3.13.500-preview2\lib\net45\Senparc.Weixin.WxOpen.dll
..\packages\StackExchange.Redis.1.2.6\lib\net45\StackExchange.Redis.dll
@@ -457,7 +457,7 @@
-
+
{ccd291e9-16fa-4b53-b032-ebd3f659567b}
Senparc.Weixin.MP.Sample.CommonService
diff --git a/Samples/net45-mvc/Senparc.Weixin.MP.Sample/packages.config b/Samples/net45-mvc/Senparc.Weixin.MP.Sample/packages.config
index 31f97b9894..0339ad6b80 100644
--- a/Samples/net45-mvc/Senparc.Weixin.MP.Sample/packages.config
+++ b/Samples/net45-mvc/Senparc.Weixin.MP.Sample/packages.config
@@ -42,26 +42,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Samples/net45-mvc/readme.md b/Samples/net45-mvc/readme.md
index e1319637ba..2c7114290a 100644
--- a/Samples/net45-mvc/readme.md
+++ b/Samples/net45-mvc/readme.md
@@ -8,7 +8,7 @@
| 文件名 | 说明
|-------|---------
-| Senparc.Weixin.MP.Sample.sln | 包含示例、源代码、单元测试项目的解决方案,需要使用 VS2017 以上打开
+| Senparc.Weixin.MP.Sample.sln | 包含示例、源代码、单元测试项目的解决方案,需要使用 VS2019 以上打开(部分源码包含 C# 9.0 以上语法)
| Senparc.Weixin.MP.Sample.Libraries.sln | 只包含少数项目源代码的解决方案,仅供自动化检测用,无实用性
## .NET Core 及所有版本 Demo
diff --git a/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.csproj b/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.csproj
index 726e027c59..89937c101c 100644
--- a/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.csproj
+++ b/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.csproj
@@ -126,7 +126,6 @@
-