diff --git a/Rs.SkyLine/Commom/VisionProcess.cs b/Rs.SkyLine/Commom/VisionProcess.cs index 5749d11..e1226a6 100644 --- a/Rs.SkyLine/Commom/VisionProcess.cs +++ b/Rs.SkyLine/Commom/VisionProcess.cs @@ -18,7 +18,10 @@ namespace Rs.MotionPlat.Commom public class MatchResult { + bool _disposed = false; public MatchResult(HTuple modelParm) { + HOperatorSet.GenEmptyObj(out _Himage); + _Himage.Dispose(); ModelParam=modelParm; if(ModelParam != null ) { @@ -29,9 +32,26 @@ namespace Rs.MotionPlat.Commom } } + ~MatchResult() + { + if(_Himage!=null) + { + _Himage.Dispose(); + _Himage = null; + } + } + public MatchResult() { } - public HObject Himage { get; set; } + + private HObject _Himage; + + public HObject Himage + { + get { return _Himage; } + set { _Himage = value; } + } + public HTuple ModelParam { get; set; } public double ModelRow { get; set; } = 0.0; public double ModelCol { get; set; } = 0.0; @@ -141,13 +161,17 @@ namespace Rs.MotionPlat.Commom List matches = new List(); foreach (var image in images) { - hImage = image; - HObject hratImage = new HObject(); if(image==null) continue; if(needRotate) { HOperatorSet.RotateImage(image, out hImage, SysConfigParam.GetValue("DownLocationCameraRotate"), "constant"); + image.Dispose(); + } + else + { + hImage = image.Clone(); + image.Dispose(); } if (downCamSearchRegion.IsInitialized()) { @@ -184,12 +208,12 @@ namespace Rs.MotionPlat.Commom if (mr.ScanOK) { mr.IsOK = true; - HOperatorSet.WriteImage(hImage, "bmp", 0, $"{dirname}//{mr.SN.Replace("\\", "").Replace("\"", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff")}"); + //HOperatorSet.WriteImage(hImage, "bmp", 0, $"{dirname}//{mr.SN.Replace("\\", "").Replace("\"", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff")}"); } else { - HOperatorSet.WriteImage(hImage, "bmp", 0, $"{dirname}//{DateTime.Now.ToString("yyyyMMddHHmmssfff")}"); + //HOperatorSet.WriteImage(hImage, "bmp", 0, $"{dirname}//{DateTime.Now.ToString("yyyyMMddHHmmssfff")}"); } } diff --git a/Rs.SkyLine/Flow/Camera/VisionResult.cs b/Rs.SkyLine/Flow/Camera/VisionResult.cs index e00664f..aa509d4 100644 --- a/Rs.SkyLine/Flow/Camera/VisionResult.cs +++ b/Rs.SkyLine/Flow/Camera/VisionResult.cs @@ -1,4 +1,5 @@ using HalconDotNet; +using Rs.Framework; using System; using System.Collections.Generic; using System.Linq; @@ -12,7 +13,28 @@ namespace Rs.MotionPlat.Flow.Camera /// public class VisionResult { - public HObject SourceImage { get; set; } + public VisionResult() { + HOperatorSet.GenEmptyObj(out _SourceImage); + _SourceImage.Dispose(); + } + ~VisionResult() + { + if(_SourceImage != null) + { + _SourceImage.Dispose(); + _SourceImage = null; + } + } + bool _disposed = false; + + private HObject _SourceImage; + + public HObject SourceImage + { + get { return _SourceImage; } + set { _SourceImage = value; } + } + /// /// 是否找到模板 /// @@ -40,5 +62,6 @@ namespace Rs.MotionPlat.Flow.Camera public string SN { get; set; } public int SlotIndex { get; set; } + } } diff --git a/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs b/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs index 5f630f3..96a07a0 100644 --- a/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs @@ -231,6 +231,7 @@ namespace Rs.MotionPlat.Flow } else { + //endInputClicked = true; //结束上料 TestCenter.Instance.EndInput(); LoadAndUnloadTask.Instance.ClearUndoTask(); @@ -841,6 +842,11 @@ namespace Rs.MotionPlat.Flow } break; case EDischargeFlowStep.等待视觉处理结果: + if (mrs != null && mrs.Count > 0) + { + mrs.Clear(); + GC.Collect(); + } mrs = VisionProcess.Instance.MatchDownCam(imgs); if (mrs != null && mrs.Count == imgs.Length && (mrs.Where(m=>m.IsOK==true).Count()==imgs.Length || GlobalVar.DownCameraFlyRegrabNum==0)) { @@ -1653,6 +1659,20 @@ namespace Rs.MotionPlat.Flow } else { + //release memory + //foreach (var item in mrs) + //{ + // item.Dispose(); + //} + //mrs.Clear(); + if(mrs!=null&&mrs.Count>0) + { + Array.Clear(imgs, 0, imgs.Length); + mrs.Clear(); + GC.Collect(); + } + + //GC.Collect(); if(curNozzle.ToType== TurnoverType.Turnover) { ScanBarCode(); @@ -1718,47 +1738,52 @@ namespace Rs.MotionPlat.Flow } else { - //这里检测到料盘种已经没有产品了,需要切盘 - bool skip = false; - while (!skip) + //if(!endInputClicked) { - if (Ops.IsOff("2号料仓缺盘光电检测")) + //这里检测到料盘种已经没有产品了,需要切盘 + bool skip = false; + while (!skip) { - logInfo = "Input料仓最后一盘料,请确认是否继续上料?"; - msgBox = MsgBox.ShowDialog(111, logInfo, (ETipButton.Yes | ETipButton.No), new Dictionary() { { ETipButton.Yes, "是|Yes" }, { ETipButton.No, "结束上料|EndInput" } }); - if (msgBox.Button == ETipButton.Yes) + if (Ops.IsOn("2号料仓缺盘光电检测")) { - //flowStep = EDischargeFlowStep.到取料位上方; + logInfo = GetClassName() + $"{curTask.FromType.ToString()}盘无料,准备切换料盘"; + MessageQueue.Instance.Insert(logInfo); + TakeTrayFlow.Instance.Take(ETrayType.Input, ETrayType.Empty1, + () => + { + Task.Run(() => + { + StockManager.Instance.GetStock(ETrayType.Input).Load(EStockTrayLoadMode.Whole, null); + }); + }, null, + () => + { + Task.Run(() => + { + StockManager.Instance.GetStock(ETrayType.Empty1).Unload(EStockTrayUnLoadMode.Whole, null); + }); + }); + StockManager.Instance.GetStock(ETrayType.Input).WaitFinished(); + skip = true; + //logInfo = "Input料仓最后一盘料,请确认是否继续上料?"; + //msgBox = MsgBox.ShowDialog(111, logInfo, (ETipButton.Yes | ETipButton.No), new Dictionary() { { ETipButton.Yes, "是|Yes" }, { ETipButton.No, "结束上料|EndInput" } }); + //if (msgBox.Button == ETipButton.Yes) + //{ + // //flowStep = EDischargeFlowStep.到取料位上方; + //} + //else + //{ + // //结束上料 + // endInputClicked = true; + // TestCenter.Instance.EndInput(); + // skip = true; + //} } else { - //结束上料 - TestCenter.Instance.EndInput(); - skip = true; + } } - else - { - logInfo = GetClassName() + $"{curTask.FromType.ToString()}盘无料,准备切换料盘"; - MessageQueue.Instance.Insert(logInfo); - TakeTrayFlow.Instance.Take(ETrayType.Input, ETrayType.Empty1, - () => - { - Task.Run(() => - { - StockManager.Instance.GetStock(ETrayType.Input).Load(EStockTrayLoadMode.Whole, null); - }); - }, null, - () => - { - Task.Run(() => - { - StockManager.Instance.GetStock(ETrayType.Empty1).Unload(EStockTrayUnLoadMode.Whole, null); - }); - }); - StockManager.Instance.GetStock(ETrayType.Input).WaitFinished(); - skip = true; - } } flowStep = EDischargeFlowStep.等待任务结束到安全位; } @@ -1844,8 +1869,8 @@ namespace Rs.MotionPlat.Flow //找拍照起点和终点 SlotPoint grabStartPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 1); SlotPoint grabEndPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 8); - UpCameraScanBarCodeFlow.Instance.ScanMulti(1, false); - List result = UpCameraScanBarCodeFlow.Instance.Wait(); + List result = UpCameraScanBarCodeFlow.Instance.ScanMulti(1, false); + //List result = UpCameraScanBarCodeFlow.Instance.Wait(); foreach (var vr in result) { if (TurnoverTrayManager.Instance.Slot(vr.SlotIndex).IsHasProduct) @@ -1892,6 +1917,11 @@ namespace Rs.MotionPlat.Flow //LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, ""); Thread.Sleep(1000); } + if(vrsigle != null) + { + vrsigle=null; + GC.Collect(); + } } else { @@ -1924,6 +1954,12 @@ namespace Rs.MotionPlat.Flow { OnShowGrabResult?.Invoke(vr, false); } + //vr.Dispose(); + } + if (result != null && result.Count > 0) + { + result.Clear(); + GC.Collect(); } //OnUpCameraGrabResult?.Invoke(result); } @@ -1933,8 +1969,8 @@ namespace Rs.MotionPlat.Flow //找拍照起点和终点 SlotPoint grabStartPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 17); SlotPoint grabEndPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 24); - UpCameraScanBarCodeFlow.Instance.ScanMulti(24, true); - List result = UpCameraScanBarCodeFlow.Instance.Wait(); + List result = UpCameraScanBarCodeFlow.Instance.ScanMulti(24, true); + // List result = UpCameraScanBarCodeFlow.Instance.Wait(); foreach (var vr in result) { if (TurnoverTrayManager.Instance.Slot(vr.SlotIndex).IsHasProduct) @@ -1983,6 +2019,11 @@ namespace Rs.MotionPlat.Flow //LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, ""); Thread.Sleep(1000); } + if(vrsigle != null) + { + vrsigle = null; + GC.Collect(); + } } else { @@ -2014,6 +2055,12 @@ namespace Rs.MotionPlat.Flow { OnShowGrabResult?.Invoke(vr, false); } + //vr.Dispose(); + } + if (result != null && result.Count > 0) + { + result.Clear(); + GC.Collect(); } //OnUpCameraGrabResult?.Invoke(result); diff --git a/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs b/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs index bfa2eb0..5701581 100644 --- a/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs @@ -265,7 +265,7 @@ namespace Rs.MotionPlat.Flow } break; case ETakeTrayFlowStep.到放料盘上方: - if (DischargeFlow.Instance.XYCanGoTurnoverTray()) + if (DischargeFlow.Instance.XYCanGoLocalArea()) { //if(GlobalVar.RunSpace) //{ diff --git a/Rs.SkyLine/Flow/SubFlow/UpCameraScanBarCodeFlow.cs b/Rs.SkyLine/Flow/SubFlow/UpCameraScanBarCodeFlow.cs index d5d1a9e..e4adc49 100644 --- a/Rs.SkyLine/Flow/SubFlow/UpCameraScanBarCodeFlow.cs +++ b/Rs.SkyLine/Flow/SubFlow/UpCameraScanBarCodeFlow.cs @@ -60,7 +60,7 @@ namespace Rs.MotionPlat.Flow.SubFlow HObject[] grabImages= null; Stopwatch timeout = new Stopwatch(); string logInfo = string.Empty; - List vReslutList = new List(); + VisionResult singleResult; bool exit = true; ManualResetEvent grabFinishedEvent = new ManualResetEvent(true); @@ -71,16 +71,17 @@ namespace Rs.MotionPlat.Flow.SubFlow /// 拍照起始点 /// 拍照终止点 /// 是否反转拍照 - public void ScanMulti(int startSlotIndex,bool isReverse) + public List ScanMulti(int startSlotIndex,bool isReverse) { - if(exit==false) return; + List vReslutList = new List(); + if (exit == false) return null; grabFinishedEvent.Reset(); SlotPoint startPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, startSlotIndex); SlotPoint endPoint = new SlotPoint(); exit = false; step = EUpCameraScanBarCodeFlowStep.到扫码起始位; - Task.Run(() => { + //Task.Run(() => { while (!exit) { if (MachineManage.Instance.MachineStatus == EMachineStatus.Stop) @@ -228,6 +229,7 @@ namespace Rs.MotionPlat.Flow.SubFlow break; case EUpCameraScanBarCodeFlowStep.拍照结果处理: vReslutList.Clear(); + GC.Collect(); int slotIndex = 0; foreach (var img in grabImages) { @@ -254,9 +256,9 @@ namespace Rs.MotionPlat.Flow.SubFlow break; } } - }); - + // }); + return vReslutList; } @@ -351,11 +353,11 @@ namespace Rs.MotionPlat.Flow.SubFlow { return "UpCameraScanBarCodeFlow-"; } - public List Wait() - { - grabFinishedEvent.WaitOne(); - return vReslutList; - } + //public List Wait() + //{ + // grabFinishedEvent.WaitOne(); + // return vReslutList; + //} public VisionResult WaitSingle() { diff --git a/Rs.SkyLine/FormMain.cs b/Rs.SkyLine/FormMain.cs index 6837728..93c15d0 100644 --- a/Rs.SkyLine/FormMain.cs +++ b/Rs.SkyLine/FormMain.cs @@ -63,13 +63,15 @@ namespace Rs.MotionPlat { hwin.ClearWindow(); hwin.HobjectToHimage(matchResult.Himage); - if(matchResult.IsOK) + if (matchResult.IsOK) { hwin.DispObj(matchResult.ContourXld, "green"); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, matchResult.SN,20,20,"green"); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"X:{matchResult.OffsetCol.ToString("0.000")}", 200, 20, "green"); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"Y:{matchResult.OffsetRow.ToString("0.000")}", 400, 20, "green"); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"R:{matchResult.OffsetA.ToString("0.000")}", 600, 20, "green"); + string OffsetCol = matchResult.OffsetCol.ToString("0.000"); + string OffsetRow = matchResult.OffsetRow.ToString("0.000"); + string OffsetA = matchResult.OffsetA.ToString("0.000"); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"X:{OffsetCol}", 200, 20, "green"); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"Y:{OffsetRow}", 400, 20, "green"); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"R:{OffsetA}", 600, 20, "green"); } else { @@ -280,17 +282,17 @@ namespace Rs.MotionPlat hWindow_Final3.HobjectToHimage(arg1.SourceImage); if(isOK) { - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, isOK ? "OK" : "NG", 20, 20, "green"); - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"X:{arg1.OffsetX.ToString("0.000")}", 200, 20, "green"); - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"Y:{arg1.OffsetY.ToString("0.000")}", 400, 20, "green"); - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"R:{arg1.OffsetR.ToString("0.000")}", 600, 20, "green"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, isOK ? "OK" : "NG", 20, 20, "green"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"X:{arg1.OffsetX.ToString("0.000")}", 200, 20, "green"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"Y:{arg1.OffsetY.ToString("0.000")}", 400, 20, "green"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"R:{arg1.OffsetR.ToString("0.000")}", 600, 20, "green"); } else { - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, isOK ? "OK" : "NG", 20, 20, "red"); - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"X:{arg1.OffsetX.ToString("0.000")}", 200, 20, "red"); - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"Y:{arg1.OffsetY.ToString("0.000")}", 400, 20, "red"); - HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"R:{arg1.OffsetR.ToString("0.000")}", 600, 20, "red"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, isOK ? "OK" : "NG", 20, 20, "red"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"X:{arg1.OffsetX.ToString("0.000")}", 200, 20, "red"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"Y:{arg1.OffsetY.ToString("0.000")}", 400, 20, "red"); + //HalconTool.DispMessage(hWindow_Final3.hWindowControl.HalconWindow, $"R:{arg1.OffsetR.ToString("0.000")}", 600, 20, "red"); } } } @@ -303,11 +305,11 @@ namespace Rs.MotionPlat hwin_turnoverTrayHasOrNot.HobjectToHimage(obj.SourceImage); if(obj.HasProduct) { - hwin_turnoverTrayHasOrNot.DispObj(obj.SearchRegion,"green"); + //h//win_turnoverTrayHasOrNot.DispObj(obj.SearchRegion,"green"); } else { - hwin_turnoverTrayHasOrNot.DispObj(obj.SearchRegion,"red"); + //hwin_turnoverTrayHasOrNot.DispObj(obj.SearchRegion,"red"); } } } @@ -320,18 +322,17 @@ namespace Rs.MotionPlat hWindow_Final4.HobjectToHimage(obj.SourceImage); if(obj.HasProduct) { - hWindow_Final4.DispObj(obj.SearchRegion,"green"); + //hWindow_Final4.DispObj(obj.SearchRegion,"green"); } else { - hWindow_Final4.DispObj(obj.SearchRegion,"red"); + //hWindow_Final4.DispObj(obj.SearchRegion,"red"); } } } private void Instance_OnShowGrabResult(VisionResult matchResult, bool arg2) { - HWindow_Final hwin = null; switch (matchResult.SlotIndex) { @@ -377,11 +378,9 @@ namespace Rs.MotionPlat { if (matchResult.ScanBarCodeOK) { + string SN = matchResult.SN; hwin.HobjectToHimage(matchResult.SourceImage); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"sn:{matchResult.SN}", 20, 20, "green"); - //HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"x:{matchResult.OffsetX}", 200, 20, "green"); - //HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"y:{matchResult.OffsetY}", 400, 20, "green"); - //HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"r:{matchResult.OffsetR}", 600, 20, "green"); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"sn:{SN}", 20, 20, "green"); } else { diff --git a/Rs.SkyLine/Home.cs b/Rs.SkyLine/Home.cs index 79bb2c5..f029fbb 100644 --- a/Rs.SkyLine/Home.cs +++ b/Rs.SkyLine/Home.cs @@ -18,6 +18,8 @@ using Rs.MotionPlat.Commom; using static System.Runtime.CompilerServices.RuntimeHelpers; using Rs.Motion.GugaoPulse; using Rs.MotionPlat.SysConfig; +using System.Runtime.InteropServices; +using System.Diagnostics; namespace Rs.MotionPlat { @@ -238,6 +240,7 @@ namespace Rs.MotionPlat private void timer1_Tick(object sender, EventArgs e) { + GC.Collect(); if(MachineManage.Instance.MachineStatus.ToString()!=lblMachineState.Text) lblMachineState.Text=MachineManage.Instance.MachineStatus.ToString(); if(MachineManage.Instance.GetLoadUnloadStatus().ToString() != lblRunState.Text.Replace("RunState:","")) @@ -254,6 +257,13 @@ namespace Rs.MotionPlat if (TurnoverFlow.Instance.GetStep().ToString() != lblTurnoverFlow.Text.Replace("Turnover:", "")) lblTurnoverFlow.Text = "Turnover:" + TurnoverFlow.Instance.GetStep().ToString(); } + + Process proc = Process.GetCurrentProcess(); + if (proc != null) + { + long userdMem = proc.PrivateMemorySize64; + lblMemory.Text = $"Mem:{(userdMem/1024)/1024} MB"; + } } public override bool WindowsClose() @@ -269,5 +279,27 @@ namespace Rs.MotionPlat return false; } } + + #region 内存回收 + [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")] + public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); + /// + /// 释放内存 + /// + public static void ClearMemory() + { + GC.Collect(); + GC.WaitForPendingFinalizers(); + if (Environment.OSVersion.Platform == PlatformID.Win32NT) + { + SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); + } + } + #endregion + + private void timer2_Tick(object sender, EventArgs e) + { + //ClearMemory(); + } } } diff --git a/Rs.SkyLine/Home.designer.cs b/Rs.SkyLine/Home.designer.cs index 7f12359..2c90be3 100644 --- a/Rs.SkyLine/Home.designer.cs +++ b/Rs.SkyLine/Home.designer.cs @@ -55,6 +55,7 @@ this.panel2 = new System.Windows.Forms.Panel(); this.lblVersion = new System.Windows.Forms.Label(); this.timer1 = new System.Windows.Forms.Timer(this.components); + this.timer2 = new System.Windows.Forms.Timer(this.components); this.tableLayoutPanel2.SuspendLayout(); this.panel1.SuspendLayout(); this.panel5.SuspendLayout(); @@ -451,6 +452,12 @@ this.timer1.Interval = 300; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // + // timer2 + // + this.timer2.Enabled = true; + this.timer2.Interval = 60000; + this.timer2.Tick += new System.EventHandler(this.timer2_Tick); + // // Home // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -508,5 +515,6 @@ private System.Windows.Forms.Label lblDischargeFlow; private System.Windows.Forms.Panel panel5; private System.Windows.Forms.Label lblMemory; + private System.Windows.Forms.Timer timer2; } } \ No newline at end of file diff --git a/Rs.SkyLine/Home.resx b/Rs.SkyLine/Home.resx index 1f666f2..b84f076 100644 --- a/Rs.SkyLine/Home.resx +++ b/Rs.SkyLine/Home.resx @@ -120,4 +120,7 @@ 17, 17 + + 107, 17 + \ No newline at end of file diff --git a/Rs.SkyLine/Properties/AssemblyInfo.cs b/Rs.SkyLine/Properties/AssemblyInfo.cs index af25a3e..fb336bf 100644 --- a/Rs.SkyLine/Properties/AssemblyInfo.cs +++ b/Rs.SkyLine/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ using System.Runtime.InteropServices; // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: - [assembly: AssemblyVersion("1.0.0")] + [assembly: AssemblyVersion("2.20.24.1")] //[assembly: AssemblyVersion("1.0.0.0")] //[assembly: AssemblyFileVersion("1.0.0.0")]