Merge branch 'release/UpdateIobIcoelDb'
This commit is contained in:
+1
-1
@@ -36,7 +36,7 @@ variables:
|
||||
.version-fix: &version-fix
|
||||
- |
|
||||
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date –format yyMM)+"."+(get-date –format ddHH)
|
||||
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date –format yyMM)+"."+(get-date –format ddHH)
|
||||
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date –format yyMM)+"."+(get-date –format dHH)
|
||||
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date –format yyMM)+"-beta."+(get-date –format dHH)
|
||||
$env:NEW_COPYRIGHT = "EgalWare @ 2006-" + (get-date -format yyyy)
|
||||
$contenuto = Get-Content -path 'VersGen\VersGen.cs' -Raw
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
/*------------------------------------------------
|
||||
* Aggiunto fix come da link seguente:
|
||||
@@ -14,6 +12,7 @@ using System.Threading.Tasks;
|
||||
* using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;
|
||||
*
|
||||
*/
|
||||
|
||||
namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
@@ -26,29 +25,9 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
private static ExportDbContext dbExportCtx;
|
||||
private static TrackerDbContext dbTrackerCtx;
|
||||
#endif
|
||||
private static SyncStateDbContext dbSyncStateCtx;
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Avvio dell'oggetto gestione DB con le 3 stringhe di connessione specifiche
|
||||
/// </summary>
|
||||
/// <param name="connEntrata">Connesisone Db frontiera Entrata Merce</param>
|
||||
/// <param name="connTracker">Connessione DB Tracker</param>
|
||||
/// <param name="connExport">Connessione DB IcoelExport</param>
|
||||
/// <param name="connSyncState">Connessione DB locale di SYNC</param>
|
||||
public DbController(string connEntrata, string connTracker, string connExport, string connSyncState)
|
||||
{
|
||||
dbEntrataCtx = new EntrataDbContext(connEntrata);
|
||||
Log.Info("Avviata classe EntrataDbContext");
|
||||
dbExportCtx = new ExportDbContext(connExport);
|
||||
Log.Info("Avviata classe ExportDbContext");
|
||||
dbTrackerCtx = new TrackerDbContext(connTracker);
|
||||
Log.Info("Avviata classe dbTrackerCtx");
|
||||
dbSyncStateCtx = new SyncStateDbContext(connSyncState);
|
||||
Log.Info("Avviata classe dbSyncStateCtx");
|
||||
}
|
||||
#endif
|
||||
#region Public Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Avvio dell'oggetto gestione DB con stringa di connessione specifica
|
||||
/// </summary>
|
||||
@@ -59,6 +38,25 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
Log.Info("Avviata classe dbSyncStateCtx");
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Recupera la tab di CurrData corrente
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.CurrDataModel> CurrDataGetAll()
|
||||
{
|
||||
List<DatabaseModels.CurrDataModel> dbResult = new List<DatabaseModels.CurrDataModel>();
|
||||
|
||||
dbResult = dbSyncStateCtx
|
||||
.DbSetCurrData
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dispose classe
|
||||
/// </summary>
|
||||
@@ -73,94 +71,6 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
dbSyncStateCtx.Dispose();
|
||||
}
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Elenco record Entrata Merce (Frontiera)
|
||||
/// </summary>
|
||||
/// <param name="minIdx">idx da cui partire a recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.EntrataModel> EntrateGetFromIdx(int minIdx = 0)
|
||||
{
|
||||
List<DatabaseModels.EntrataModel> dbResult = new List<DatabaseModels.EntrataModel>();
|
||||
dbResult = dbEntrataCtx
|
||||
.DbSetEntrataMerce
|
||||
.Where(x => (x.ID_CHIAVE >= minIdx))
|
||||
.OrderBy(x => x.ID_CHIAVE)
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco ultimi record Entrata Merce (Frontiera)
|
||||
/// </summary>
|
||||
/// <param name="numRec">numero records da recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.EntrataModel> EntrateGetLast(int numRec = 100)
|
||||
{
|
||||
List<DatabaseModels.EntrataModel> dbResult = new List<DatabaseModels.EntrataModel>();
|
||||
dbResult = dbEntrataCtx
|
||||
.DbSetEntrataMerce
|
||||
.OrderByDescending(x => x.ID_CHIAVE)
|
||||
.Take(numRec)
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco record ProductsTotal (da Icoel Export Products)
|
||||
/// </summary>
|
||||
/// <param name="minIdx">idx da cui partire a recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.ProductsTotalsModel> ExportProductsGetFromIdx(int minIdx = 0)
|
||||
{
|
||||
List<DatabaseModels.ProductsTotalsModel> dbResult = new List<DatabaseModels.ProductsTotalsModel>();
|
||||
dbResult = dbExportCtx
|
||||
.DbSetProductsTotals
|
||||
.Where(x => (x.SizerBatchId >= minIdx))
|
||||
.OrderBy(x => x.SizerBatchId)
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco ultimi record ProductsTotal (da Icoel Export Products)
|
||||
/// </summary>
|
||||
/// <param name="numRec">numero records da recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.ProductsTotalsModel> ExportProductsGetLast(int numRec = 0)
|
||||
{
|
||||
List<DatabaseModels.ProductsTotalsModel> dbResult = new List<DatabaseModels.ProductsTotalsModel>();
|
||||
dbResult = dbExportCtx
|
||||
.DbSetProductsTotals
|
||||
.OrderByDescending(x => x.SizerBatchId)
|
||||
.ThenByDescending(x => x.Index)
|
||||
.Take(numRec)
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
|
||||
/// restitusice in output la tab di SyncState x verificare lo stato
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.SyncStateModel> SyncStateDoImportAll()
|
||||
{
|
||||
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
||||
|
||||
dbResult = dbSyncStateCtx
|
||||
.Database
|
||||
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ImportAll")
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
|
||||
/// restitusice in output la tab di SyncState x verificare lo stato
|
||||
@@ -178,6 +88,23 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
|
||||
/// restitusice in output la tab di SyncState x verificare lo stato
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.SyncStateModel> SyncStateDoImportAll()
|
||||
{
|
||||
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
||||
|
||||
dbResult = dbSyncStateCtx
|
||||
.Database
|
||||
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ImportAll")
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// recupera la tab di SyncState corrente
|
||||
/// </summary>
|
||||
@@ -193,60 +120,13 @@ namespace EgwProxy.Icoel.DataLayer.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Elenco record DettConfezioni (da Icoel TrackerLotti)
|
||||
/// </summary>
|
||||
/// <param name="minIdx">idx da cui partire a recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.DettConfezioniModel> TrackConfezioniGetFromIdx(int minIdx = 0)
|
||||
{
|
||||
List<DatabaseModels.DettConfezioniModel> dbResult = new List<DatabaseModels.DettConfezioniModel>();
|
||||
dbResult = dbTrackerCtx
|
||||
.DbSetConfezioni
|
||||
.Where(x => (x.Pack_Id >= minIdx))
|
||||
.OrderBy(x => x.Pack_Id)
|
||||
.ToList();
|
||||
#endregion Public Methods
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
#region Private Fields
|
||||
|
||||
/// <summary>
|
||||
/// Elenco ultimi record DettaglioConfezioni (da Icoel TrackerLotti)
|
||||
/// </summary>
|
||||
/// <param name="numRec">numero records da recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.DettConfezioniModel> TrackConfezioniGetLast(int numRec = 0)
|
||||
{
|
||||
List<DatabaseModels.DettConfezioniModel> dbResult = new List<DatabaseModels.DettConfezioniModel>();
|
||||
dbResult = dbTrackerCtx
|
||||
.DbSetConfezioni
|
||||
.OrderByDescending(x => x.Pack_Id)
|
||||
.Take(numRec)
|
||||
.ToList();
|
||||
private static SyncStateDbContext dbSyncStateCtx;
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco dettaglio conferimento x PackId (da Icoel TrackerLotti)
|
||||
/// ATTENZIONE: in caso di mancata associazione lotto ingresso con lavorazione corrente la
|
||||
/// vista restituisce nuovo (possibile lavorare senza lotto ingresso e senza tracking)
|
||||
/// </summary>
|
||||
/// <param name="packId">idx da cui partire a recuperare</param>
|
||||
/// <returns></returns>
|
||||
public List<DatabaseModels.DettConferimentoModel> TrackPackConfDetailByIdx(long packId = 0)
|
||||
{
|
||||
List<DatabaseModels.DettConferimentoModel> dbResult = new List<DatabaseModels.DettConferimentoModel>();
|
||||
dbResult = dbTrackerCtx
|
||||
.DbSetConferimento
|
||||
.Where(x => (x.PackId == packId))
|
||||
.OrderBy(x => x.NUMERO_LOTTO)
|
||||
.ThenByDescending(x => x.QUANTITA_ENTRATA)
|
||||
.ToList();
|
||||
|
||||
return dbResult;
|
||||
}
|
||||
#endif
|
||||
#endregion Private Fields
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Data.Entity.Spatial;
|
||||
|
||||
namespace EgwProxy.Icoel.DataLayer.DatabaseModels
|
||||
{
|
||||
|
||||
[Table("CurrData")]
|
||||
public partial class CurrDataModel
|
||||
{
|
||||
[Key]
|
||||
[StringLength(50)]
|
||||
public string Topic { get; set; }
|
||||
|
||||
public decimal CurrVal { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
@@ -25,5 +25,7 @@ namespace EgwProxy.Icoel.DataLayer.DatabaseModels
|
||||
public long NumRecIn { get; set; }
|
||||
|
||||
public long NumRecOut { get; set; }
|
||||
|
||||
public DateTime LastUpdate { get; set; } = DateTime.Today;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
<Compile Include="DatabaseModels\EntrataModel.cs" />
|
||||
<Compile Include="DatabaseModels\DettConferimentoModel.cs" />
|
||||
<Compile Include="DatabaseModels\DettConfezioniModel.cs" />
|
||||
<Compile Include="DatabaseModels\CurrDataModel.cs" />
|
||||
<Compile Include="EntrataDbContext.cs" />
|
||||
<Compile Include="ExportDbContext.cs" />
|
||||
<Compile Include="DatabaseModels\ProductsTotalsModel.cs" />
|
||||
|
||||
@@ -32,10 +32,15 @@ namespace EgwProxy.Icoel.DataLayer
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DbSet dai dati stato sync DB esterni <--> locale
|
||||
/// DbSet dei dati stato sync DB esterni <--> locale
|
||||
/// </summary>
|
||||
public virtual DbSet<SyncStateModel> DbSetSyncState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DbSet CurrData
|
||||
/// </summary>
|
||||
public virtual DbSet<CurrDataModel> DbSetCurrData { get; set; }
|
||||
|
||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -182,18 +182,20 @@ namespace EgwProxy.Icoel.Compac
|
||||
internal Dictionary<string, double> GetPerfMeters()
|
||||
{
|
||||
Dictionary<string, double> answ = new Dictionary<string, double>();
|
||||
// indicata in tonnOra
|
||||
// velocità processo indicata in tonnellate /oOra
|
||||
double velTonnOra = SSClient.GetMachineTonnesPH();
|
||||
// velocità espressa in frutti/minuto
|
||||
double velFruttiMinuto = SSClient.GetMachineTotalFPM();
|
||||
// percentuale riempimento carrellini
|
||||
double percRiemp = SSClient.GetMachineCupfill();
|
||||
//// indicata in carrelli/minuto
|
||||
//int[] velCarrMinuto = SSClient.GetMachineRodsPM();
|
||||
// Numero confezioni/ora
|
||||
double numPackOra = SSClient.GetMachinePacksPH();
|
||||
|
||||
// accodo i valori ricavati
|
||||
answ.Add("VelTonnOra", velTonnOra);
|
||||
answ.Add("VelFruttiMinuto", velFruttiMinuto);
|
||||
answ.Add("NumPacksOra", numPackOra);
|
||||
answ.Add("PercRiemp", percRiemp);
|
||||
answ.Add("VelFruttiMinuto", velFruttiMinuto);
|
||||
answ.Add("VelTonnOra", velTonnOra);
|
||||
return answ;
|
||||
}
|
||||
|
||||
|
||||
@@ -63,13 +63,12 @@ MIN_SEND_PZC_BLOCK=0
|
||||
MAX_SEND_PZC_BLOCK=100
|
||||
ENABLE_DYN_DATA=TRUE
|
||||
FORCE_DYN_DATA=TRUE
|
||||
DEM_FACT_DYN_DATA=3
|
||||
DEM_FACT_DYN_DATA=2
|
||||
ENABLE_DATA_FILTER=TRUE
|
||||
ENABLE_CLI_RESTART=TRUE
|
||||
VETO_SIG_IN=TRUE
|
||||
|
||||
; clock base (da 10ms)
|
||||
timerIntMs=50
|
||||
timerIntMs=40
|
||||
|
||||
; conf parametri memoria READ/WRITE
|
||||
PARAM_CONF=GIACO_ICOEL_002.json
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "MEDIAN",
|
||||
"period": 60,
|
||||
"func": "AVG",
|
||||
"period": 50,
|
||||
"factor": 1
|
||||
},
|
||||
"VelFruttiMinuto": {
|
||||
@@ -21,8 +21,19 @@
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "MEDIAN",
|
||||
"period": 60,
|
||||
"func": "AVG",
|
||||
"period": 50,
|
||||
"factor": 1
|
||||
},
|
||||
"NumPacksOra": {
|
||||
"name": "NumPacksOra",
|
||||
"description": "Numero confezioni / Ora",
|
||||
"memAddr": "NumPacksOra",
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "AVG",
|
||||
"period": 50,
|
||||
"factor": 1
|
||||
},
|
||||
"PercRiemp": {
|
||||
@@ -32,8 +43,8 @@
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "MEDIAN",
|
||||
"period": 60,
|
||||
"func": "AVG",
|
||||
"period": 50,
|
||||
"factor": 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,13 +66,12 @@ FORCE_DYN_DATA=TRUE
|
||||
DEM_FACT_DYN_DATA=5
|
||||
ENABLE_DATA_FILTER=TRUE
|
||||
ENABLE_CLI_RESTART=TRUE
|
||||
VETO_SIG_IN=TRUE
|
||||
SyncStateDb=localhost\sqlexpress
|
||||
SyncStateUser=egalware
|
||||
SyncStatePwd=egalware2022
|
||||
|
||||
; clock base (da 10ms)
|
||||
timerIntMs=10
|
||||
timerIntMs=20
|
||||
|
||||
; conf parametri memoria READ/WRITE
|
||||
PARAM_CONF=GIACO_ICOEL_003.json
|
||||
|
||||
@@ -3,36 +3,25 @@
|
||||
|
||||
},
|
||||
"mMapRead": {
|
||||
"VelTonnOra": {
|
||||
"name": "VelTonnOra",
|
||||
"description": "Velocità Impianto Tonnellate / Ora",
|
||||
"memAddr": "VelTonnOra",
|
||||
"TotMerceProcTonn": {
|
||||
"name": "TotMerceProcTonn",
|
||||
"description": "Totale merce processata oggi su impianto (Tonn)",
|
||||
"memAddr": "TotMerceProcTonn",
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "MEDIAN",
|
||||
"func": "MAX",
|
||||
"period": 60,
|
||||
"factor": 1
|
||||
},
|
||||
"VelFruttiMinuto": {
|
||||
"name": "VelFruttiMinuto",
|
||||
"description": "Velocità Impianto Frutti / Minuto",
|
||||
"memAddr": "VelFruttiMinuto",
|
||||
"TotMerceCaricTonn": {
|
||||
"name": "TotMerceCaricTonn",
|
||||
"description": "Totale merce caricata oggi su impianto (Tonn)",
|
||||
"memAddr": "TotMerceCaricTonn",
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "MEDIAN",
|
||||
"period": 60,
|
||||
"factor": 1
|
||||
},
|
||||
"PercRiemp": {
|
||||
"name": "PercRiemp",
|
||||
"description": "Percentuale riempimento carrelli",
|
||||
"memAddr": "PercRiemp",
|
||||
"tipoMem": "Real",
|
||||
"index": 0,
|
||||
"size": 0,
|
||||
"func": "MEDIAN",
|
||||
"func": "MAX",
|
||||
"period": 60,
|
||||
"factor": 1
|
||||
}
|
||||
|
||||
@@ -88,10 +88,10 @@
|
||||
<HintPath>..\packages\EasyModbusTCP.5.6.0\lib\net40\EasyModbus.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EgwProxy.Icoel, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EgwProxy.Icoel.3.6.2205.2812\lib\EgwProxy.Icoel.dll</HintPath>
|
||||
<HintPath>..\packages\EgwProxy.Icoel.3.6.2206.116\lib\EgwProxy.Icoel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EgwProxy.Icoel.DataLayer, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EgwProxy.Icoel.3.6.2205.2812\lib\EgwProxy.Icoel.DataLayer.dll</HintPath>
|
||||
<HintPath>..\packages\EgwProxy.Icoel.3.6.2206.116\lib\EgwProxy.Icoel.DataLayer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EgwProxy.MultiCncLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EgwProxy.MultiCncLib.3.6.2205.2319\lib\EgwProxy.MultiCncLib.dll</HintPath>
|
||||
|
||||
@@ -111,6 +111,14 @@ namespace IOB_WIN_NEXT
|
||||
saveValue(ref outVal, item.LastIdx, $"{item.TableName}_LastIdx");
|
||||
saveValue(ref outVal, item.LastIdxIn, $"{item.TableName}_LastIdxIn");
|
||||
}
|
||||
|
||||
// aggiungo anche i campi currData
|
||||
var currData = dbProxy.DataController.CurrDataGetAll();
|
||||
foreach (var item in currData)
|
||||
{
|
||||
saveValue(ref outVal, (double)item.CurrVal, item.Topic);
|
||||
}
|
||||
|
||||
lastReadPLC = DateTime.Now;
|
||||
return outVal;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
<packages>
|
||||
<package id="Autoupdater.NET.Official" version="1.7.0" targetFramework="net462" />
|
||||
<package id="EasyModbusTCP" version="5.6.0" targetFramework="net462" />
|
||||
<package id="EgwProxy.Icoel" version="3.6.2205.2812" targetFramework="net462" />
|
||||
<package id="EgwProxy.Icoel" version="3.6.2206.116" targetFramework="net462" />
|
||||
<package id="EgwProxy.MultiCncLib" version="3.6.2205.2319" targetFramework="net462" />
|
||||
<package id="EgwProxy.OsaiCncLib" version="3.6.2205.2015" targetFramework="net462" />
|
||||
<package id="MapoSDK" version="6.14.2205.3011" targetFramework="net462" />
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net462" />
|
||||
<package id="MapoSDK" version="6.14.2205.3011" targetFramework="net462" />
|
||||
<package id="MathNet.Numerics" version="4.15.0" targetFramework="net462" />
|
||||
<package id="Microsoft.CodeAnalysis.NetAnalyzers" version="6.0.0" targetFramework="net462" developmentDependency="true" />
|
||||
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.8" targetFramework="net462" developmentDependency="true" />
|
||||
|
||||
Reference in New Issue
Block a user