Commit c8f97de823d5f273b82429a5ffb940650ae2381c

Authored by Schwirg László
1 parent 1bceef56

v1.34.2.0

Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
... ... @@ -87,7 +87,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
87 87 Console.WriteLine();
88 88 var actualcursortop = Console.CursorTop;
89 89 var numberofprocessedfiles = 0;
90   - var upgradefiles = new Dictionary<string, CompareDirectoriesActions>();
  90 + var upgradefiles = new Dictionary<string, (CompareDirectoriesActions,string)>();
91 91 string previousdirectory = null;
92 92 foreach (var onefile in allfiles.OrderBy(p => Path.GetDirectoryName(p)))
93 93 {
... ... @@ -113,7 +113,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
113 113 }
114 114 //ColorConsole.WriteLine($"DIFFERENT ({difftext}): {relativePath}", ConsoleColor.Yellow);
115 115 ColorConsole.WriteLine($"< {onefile} ({difftext}):", ConsoleColor.Yellow);
116   - upgradefiles.Add(onefile, CompareDirectoriesActions.CopyFROMUPGRADE);
  116 + upgradefiles.Add(onefile, (CompareDirectoriesActions.CopyFROMUPGRADE, $"({difftext})"));
117 117 }
118 118 }
119 119 else if (inWORKFolder)
... ... @@ -126,7 +126,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
126 126 }
127 127 //ColorConsole.WriteLine($"ONLY IN Folder1: {relativePath}", ConsoleColor.Yellow);
128 128 ColorConsole.WriteLine($"-- {onefile}", ConsoleColor.Yellow);
129   - upgradefiles.Add(onefile, CompareDirectoriesActions.DeleteINWORKING);
  129 + upgradefiles.Add(onefile, (CompareDirectoriesActions.DeleteINWORKING,""));
130 130 }
131 131 else if (inUPGRADEFolder)
132 132 {
... ... @@ -138,17 +138,37 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
138 138 }
139 139 //ColorConsole.WriteLine($"ONLY IN Folder2: {relativePath}", ConsoleColor.Yellow);
140 140 ColorConsole.WriteLine($"<< {onefile}", ConsoleColor.Yellow);
141   - upgradefiles.Add(onefile, CompareDirectoriesActions.CopyFROMUPGRADE);
  141 + upgradefiles.Add(onefile, (CompareDirectoriesActions.CopyFROMUPGRADE,"(new file)"));
142 142 }
143 143 }
144 144 ColorConsole.WriteLine();
145   - string movefiles = ColorConsole.ReadLine("Do You want to upgrade WORKING INSTALLATION with UPGRADE INSTALLATION:",validitylist: new List<string>{"yes","no","YES","NO", }, defaultvalue: "no", required: true); //@"C:\Path\To\Folder1";
146   - if (movefiles.ToUpper() == "YES")
  145 + ColorConsole.WriteLine("Do You want to upgrade WORKING INSTALLATION with UPGRADE INSTALLATION?");
  146 + ColorConsole.WriteLine(rootWORKING,prefix:" WORKING INSTALLATION root folder:");
  147 + ColorConsole.WriteLine(rootUPGRADE,prefix:" UPGRADE INSTALLATION root folder:");
  148 + string doupgradetxt = ColorConsole.ReadLine("Do upgrade?",validitylist: new List<string>{"yes","no","YES","NO","ask","ASK" }, defaultvalue: "no", required: true);
  149 + if (doupgradetxt.ToUpper() == "EX") return o;
  150 + if (doupgradetxt.ToUpper() == "YES" || doupgradetxt.ToUpper() == "ASK")
147 151 {
148   - foreach (var uf in upgradefiles)
  152 + bool ask = doupgradetxt.ToUpper() == "ASK";
  153 + bool goontoall = false;
  154 + foreach (var uf in upgradefiles)
149 155 {
150   - if (uf.Value == CompareDirectoriesActions.CopyFROMUPGRADE) { File.Copy(Path.Combine(rootUPGRADE, uf.Key), Path.Combine(rootWORKING, uf.Key)); }
151   - else if (uf.Value == CompareDirectoriesActions.DeleteINWORKING) { File.Delete(Path.Combine(rootWORKING,uf.Key)); }
  156 + bool goon = true;
  157 + if (ask && !goontoall)
  158 + {
  159 + string actiontext = uf.Value.Item1 == CompareDirectoriesActions.CopyFROMUPGRADE ? "upgrade" : "remove";
  160 + ColorConsole.WriteLine($"Do You want to {actiontext} file in WORKING INSTALLATION?");
  161 + var validitylist = new List<string> { "yes", "no", "YES", "NO", "yestoall", "YESTOALL", };
  162 + string goontxt = ColorConsole.ReadLine(uf.Key,f:ConsoleColor.Yellow, prefix:" file:",suffix:uf.Value.Item2, validitylist:validitylist, defaultvalue: "no", required: true);
  163 + if (goontxt.ToUpper() == "EX") return o;
  164 + goon = goontxt.ToUpper() == "YES";
  165 + goontoall = goontxt.ToUpper() == "YESTOALL";
  166 + }
  167 + if (goon || goontoall)
  168 + {
  169 + if (uf.Value.Item1 == CompareDirectoriesActions.CopyFROMUPGRADE) { File.Copy(Path.Combine(rootUPGRADE, uf.Key), Path.Combine(rootWORKING, uf.Key), overwrite: true); }
  170 + else if (uf.Value.Item1 == CompareDirectoriesActions.DeleteINWORKING) { File.Delete(Path.Combine(rootWORKING, uf.Key)); }
  171 + }
152 172 }
153 173 }
154 174 return o;
... ...
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
... ... @@ -33,6 +33,8 @@ using System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;
33 33 using System.Windows.Controls;
34 34 using Menu = Vrh.Log4Pro.MaintenanceConsole.MenuNS.Menu;
35 35 using static Vrh.Log4Pro.MaintenanceConsole.MenuNS.Menu;
  36 +using System.Security.AccessControl;
  37 +using System.Data;
36 38  
37 39 namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
38 40 {
... ... @@ -1382,10 +1384,10 @@ GO
1382 1384 #endregion private method: DisplayDataBaseInfo
1383 1385 #endregion private methods
1384 1386 }
1385   - #endregion SQLDataBaseManager class
  1387 + #endregion SQLDataBaseManager class
1386 1388  
1387   - #region class SQLDataBaseManager
1388   - public static class SQLDataBaseManagerCore
  1389 + #region class SQLDataBaseManagerCore
  1390 + public static class SQLDataBaseManagerCore
1389 1391 {
1390 1392 /// <summary>
1391 1393 /// Egy adatbázis fizikai file-jainak mozgatása egy másik lokációba
... ... @@ -1539,14 +1541,26 @@ GO
1539 1541 finally { sqlserver?.ConnectionContext.SqlConnectionObject.Dispose(); }
1540 1542 }
1541 1543  
1542   - /// <summary>
1543   - /// Create SQL DB backup
1544   - /// </summary>
1545   - /// <param name="sqld">az sql db-t leíró descriptor</param>
1546   - /// <param name="forcecreatezip"></param>
1547   - /// <param name="timestamp"></param>
1548   - /// <returns></returns>
1549   - public static string CreateBackup(SQLDataBase sqld,bool? forcecreatezip, DateTime? timestamp,bool emulate=false)
  1544 + private static void RunEXEOnRemoteComputer(string servername,string username, string password, string exefilename)
  1545 + {
  1546 + var processToRun = new[] { exefilename/*"notepad.exe"*/ };
  1547 + var connection = new ConnectionOptions();
  1548 + connection.Username = username;
  1549 + connection.Password = password;
  1550 + var wmiScope = new ManagementScope(String.Format(@"\\{0}\root\cimv2", servername), connection);
  1551 + var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
  1552 + wmiProcess.InvokeMethod("Create", processToRun);
  1553 + }
  1554 +
  1555 +
  1556 + /// <summary>
  1557 + /// Create SQL DB backup
  1558 + /// </summary>
  1559 + /// <param name="sqld">az sql db-t leíró descriptor</param>
  1560 + /// <param name="forcecreatezip"></param>
  1561 + /// <param name="timestamp"></param>
  1562 + /// <returns></returns>
  1563 + public static string CreateBackup(SQLDataBase sqld,bool? forcecreatezip, DateTime? timestamp,bool emulate=false)
1550 1564 {
1551 1565 string backupdirectorypath = sqld.Xml_BackupTargetDirectoryPath;
1552 1566 string tranzitdirectorypath = sqld.Xml_PrimaryDB_TranzitDirectoryPath;
... ... @@ -1599,57 +1613,32 @@ GO
1599 1613  
1600 1614 if (!emulate)
1601 1615 {
1602   - ColorConsole.WriteLine($"Database backup started...", ConsoleColor.DarkGreen);
1603   - if (File.Exists(backupFullName)) { File.Delete(backupFullName); }
1604   - var smoBackup = new Backup();
1605   - smoBackup.Database = dbname;
1606   - smoBackup.Action = BackupActionType.Database;
1607   - smoBackup.BackupSetName = smoBackup.Database + " Backup";
1608   - smoBackup.BackupSetDescription = $"Full Backup of {smoBackup.Database}";
1609   - smoBackup.MediaDescription = "Disk";
1610   - Console.WriteLine($"Backup set: {smoBackup.BackupSetName} ({smoBackup.BackupSetDescription}) to media: {smoBackup.MediaDescription}");
1611   - string dummystring = sqld.Xml_PrimaryDB_IsUseTranzit ? " REMOTE SQL SERVER!" : "";
1612   - Console.WriteLine($"Database name: {smoBackup.Database}{dummystring}");
1613   - Console.WriteLine($"Connection string: {sqld.SQLCS_Primary}");
1614   - smoBackup.Devices.AddDevice(sqld.Xml_PrimaryDB_IsUseTranzit ? tranzitFullName : backupFullName, DeviceType.File);
1615   - Console.WriteLine($"Backup full name:{backupFullName}");
1616   - if (sqld.Xml_PrimaryDB_IsUseTranzit)
1617   - {
1618   - Console.WriteLine($" ...will be created through tranzit: {tranzitFullName}");
1619   - }
1620   - smoBackup.PercentComplete += SmoBackupRestore_PercentComplete;
1621   - smoBackup.PercentCompleteNotification = 1;
  1616 + ColorConsole.WriteLine($"Database backup started...", ConsoleColor.DarkGreen);
  1617 + if (File.Exists(backupFullName)) { File.Delete(backupFullName); }
  1618 +
  1619 +
  1620 + Console.WriteLine($"Backup set: {dbname + " Backup"} (Full backup of {dbname}) to media: Disk");
  1621 + string dummystring = sqld.Xml_PrimaryDB_IsUseTranzit ? " REMOTE SQL SERVER!" : "";
  1622 + Console.WriteLine($"Database name: {dbname}{dummystring}");
  1623 + Console.WriteLine($"Connection string: {sqld.SQLCS_Primary}");
  1624 + Console.WriteLine($"Backup full name:{backupFullName}");
  1625 + if (sqld.Xml_PrimaryDB_IsUseTranzit) { Console.WriteLine($" ...will be created through through tranzit {tranzitFullName}"); }
  1626 +
  1627 + var result = BackupDatabase(sqld.Xml_PrimaryDB_IsUseTranzit ? tranzitFullName : backupFullName, sqld.SQLCS_Primary, sqld.Xml_BackupTimeout, SmoBackupRestore_PercentComplete);
  1628 +
  1629 + Console.WriteLine($"");
  1630 + Console.WriteLine("BACKUP " + (result.Success?"SUCCESS":"FAILURE") + ". " + result.Resulttext);
1622 1631  
1623   - Server sqlserver = null;
1624   - try
1625   - {
1626   - sqlserver = SQLServerConnect(sqld.SQLCS_Primary, "master"); if (sqlserver == null) { return null; }
1627   - sqlserver.ConnectionContext.StatementTimeout = sqld.Xml_BackupTimeout;
1628   - backupstarttime = DateTime.Now;
1629   - smoBackup.SqlBackupAsync(sqlserver);
1630   - smoBackup.Wait();
1631   - //smoBackup.Wait();
1632   - Console.WriteLine($"");
1633   - Console.WriteLine($"Backup completed. Backup time: {(int)(DateTime.Now.Subtract(backupstarttime).TotalSeconds)}sec.");
1634   - }
1635   - catch (Exception ex)
1636   - {
1637   - ColorConsole.WriteLine($"ERROR! Database backup failed. DB name:'{smoBackup.Database}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.Red);
1638   - var errmsg = ""; while (ex != null) { errmsg += ";" + ex.Message;ex = ex.InnerException; }
1639   - ColorConsole.WriteLine(errmsg, ConsoleColor.Red);
1640   - return null;
1641   - }
1642   - finally { sqlserver?.ConnectionContext.SqlConnectionObject.Dispose(); }
1643 1632 if (sqld.Xml_PrimaryDB_IsUseTranzit && File.Exists(tranzitFullName))
1644 1633 {
1645   - File.Move(tranzitFullName, backupFullName);
1646   - Console.WriteLine($"Moving backup file...");
1647   - Console.WriteLine($" ...from tranzit location: {tranzitFullName}");
1648   - Console.WriteLine($" ...to backup location: {backupFullName}");
  1634 + Console.WriteLine($"Moving backup file...");
  1635 + Console.WriteLine($" ...from tranzit location: {tranzitFullName}");
  1636 + Console.WriteLine($" ...to backup location: {backupFullName}");
  1637 + File.Move(tranzitFullName, backupFullName);
1649 1638 }
1650 1639 if (!File.Exists(backupFullName))
1651 1640 {
1652   - ColorConsole.WriteLine($"ERROR! Database backup failed. DB name:'{smoBackup.Database}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.Red);
  1641 + ColorConsole.WriteLine($"ERROR! Database backup failed. DB name:'{dbname}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.Red);
1653 1642 return null;
1654 1643 }
1655 1644 if (createzip)
... ... @@ -1661,12 +1650,76 @@ GO
1661 1650 File.Delete(backupFullName);
1662 1651 Console.WriteLine($"Zipping completed. Compressing time: {(int)(DateTime.Now.Subtract(startcompressing).TotalSeconds)}sec.");
1663 1652 }
1664   - ColorConsole.WriteLine($"SUCCESS! Database backup created. DB name:'{smoBackup.Database}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.DarkGreen);
  1653 + ColorConsole.WriteLine($"SUCCESS! Database backup created. DB name:'{dbname}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.DarkGreen);
1665 1654 }
1666 1655 return returnfilename;
1667 1656 }
1668 1657 private static DateTime backupstarttime;
1669   - private static void SmoBackupRestore_PercentComplete(object sender, PercentCompleteEventArgs e)
  1658 + private static (bool Success, string Resulttext, string Header) BackupDatabase(string backuptargetfilename, string sqlconnectionstringtodatabase, int BackupTimeout, PercentCompleteEventHandler pcEventHandler)
  1659 + {
  1660 + string DatabaseName = ServerConnectionPool.GetSqlConnection(sqlconnectionstringtodatabase).Database;
  1661 + string Header = $"Sql connection to database:{sqlconnectionstringtodatabase} Backup target:{backuptargetfilename}";
  1662 + string SUCCESSTEXT = "Done with SUCCESS; Time elapsed:{0}";
  1663 + string EXCEPTIONTEXT = "BACKUPEXCEPTION: {0}";
  1664 + string SERVERCONNECTIONFAILURETEXT = "SERVERCONNECTIONFAILURE";
  1665 + backupstarttime = DateTime.Now;
  1666 + bool mode = false;
  1667 + if (mode)
  1668 + {
  1669 + var SQLCtos = ServerConnectionPool.GetSqlConnection(sqlconnectionstringtodatabase, "master");
  1670 + string SqlConnectionStringToServer = SQLCtos.ConnectionString;
  1671 + DatabaseName = "[" + DatabaseName + "]";
  1672 + string SQLBackUp = @"BACKUP DATABASE " + DatabaseName + " TO DISK = N'" + backuptargetfilename + @"'";
  1673 + SqlConnection cnBk = new SqlConnection(SqlConnectionStringToServer);
  1674 + SqlCommand cmdBkUp = new SqlCommand(SQLBackUp, cnBk);
  1675 + cmdBkUp.CommandTimeout = BackupTimeout;
  1676 + Header = $"{SQLBackUp} {Header}";
  1677 + try
  1678 + {
  1679 + cnBk.Open();
  1680 + cmdBkUp.ExecuteNonQuery();
  1681 + return (true, string.Format(SUCCESSTEXT, DateTime.Now.Subtract(backupstarttime).TotalSeconds), Header);
  1682 + }
  1683 + catch (Exception ex)
  1684 + {
  1685 + var errmsg = ""; while (ex != null) { errmsg += ex.Message + ";"; ex = ex.InnerException; }
  1686 + return (false, string.Format(EXCEPTIONTEXT, errmsg), Header);
  1687 + }
  1688 + finally
  1689 + {
  1690 + if (cnBk.State == ConnectionState.Open) { cnBk.Close(); }
  1691 + }
  1692 + }
  1693 + else
  1694 + {
  1695 + var smoBackup = new Backup();
  1696 + smoBackup.Database = DatabaseName;
  1697 + smoBackup.Action = BackupActionType.Database;
  1698 + smoBackup.BackupSetName = smoBackup.Database + " Backup";
  1699 + smoBackup.BackupSetDescription = $"Full Backup of {smoBackup.Database}";
  1700 + smoBackup.MediaDescription = "Disk";
  1701 + smoBackup.Devices.AddDevice(backuptargetfilename, DeviceType.File);
  1702 + smoBackup.PercentComplete += pcEventHandler;
  1703 + smoBackup.PercentCompleteNotification = 1;
  1704 +
  1705 + Server sqlserver = null;
  1706 + try
  1707 + {
  1708 + sqlserver = SQLServerConnect(sqlconnectionstringtodatabase, "master"); if (sqlserver == null) { return (false, string.Format(SERVERCONNECTIONFAILURETEXT), Header); }
  1709 + sqlserver.ConnectionContext.StatementTimeout = BackupTimeout;
  1710 + smoBackup.SqlBackup(sqlserver);
  1711 + //smoBackup.SqlBackupAsync(sqlserver);smoBackup.Wait();
  1712 + return (true, string.Format(SUCCESSTEXT, DateTime.Now.Subtract(backupstarttime).TotalSeconds), Header);
  1713 + }
  1714 + catch (Exception ex)
  1715 + {
  1716 + var errmsg = ""; while (ex != null) { errmsg += ex.Message + ";"; ex = ex.InnerException; }
  1717 + return (false, string.Format(EXCEPTIONTEXT, errmsg), Header);
  1718 + }
  1719 + finally { sqlserver?.ConnectionContext.SqlConnectionObject.Dispose(); }
  1720 + }
  1721 + }
  1722 + private static void SmoBackupRestore_PercentComplete(object sender, PercentCompleteEventArgs e)
1670 1723 {
1671 1724 ColorConsole.SetCursorPosition(0, Console.CursorTop);
1672 1725 ColorConsole.Write($"Completed: {e.Percent}%. {e.Message}. Backup time : {(int)(DateTime.Now.Subtract(backupstarttime).TotalSeconds)}sec.");
... ... @@ -2629,10 +2682,10 @@ GO
2629 2682 }
2630 2683 #endregion BackupSqlData
2631 2684 }
2632   - #endregion class SQLDataBaseManager
  2685 + #endregion class SQLDataBaseManagerCore
2633 2686  
2634   - #region SQLDataBaseManager class
2635   - public class SQLDataBaseManagerXmlProcessor : XmlParser
  2687 + #region SQLDataBaseManagerXmlProcessor class
  2688 + public class SQLDataBaseManagerXmlProcessor : XmlParser
2636 2689 {
2637 2690 #region fields
2638 2691 private List<SQLDataBase> _sqldatabaselist;
... ... @@ -2663,10 +2716,10 @@ GO
2663 2716 public List<SQLDataBase> GetDefinitionList() { return _sqldatabaselist; }
2664 2717 #endregion GetDefinitionList
2665 2718 }
2666   - #endregion SQLDataBaseManager class
  2719 + #endregion SQLDataBaseManagerXmlProcessor class
2667 2720  
2668   - #region SQLDataBase class
2669   - public class SQLDataBase : XmlLinqBase
  2721 + #region SQLDataBase class
  2722 + public class SQLDataBase : XmlLinqBase
2670 2723 {
2671 2724 #region fields
2672 2725 public bool Valid = true;
... ...
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... ... @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 32 // You can specify all the values or you can default the Build and Revision Numbers
33 33 // by using the '*' as shown below:
34 34 // [assembly: AssemblyVersion("1.0.*")]
35   -[assembly: AssemblyVersion("1.34.1.0")]
36   -[assembly: AssemblyFileVersion("1.34.1.0")]
  35 +[assembly: AssemblyVersion("1.34.2.0")]
  36 +[assembly: AssemblyFileVersion("1.34.2.0")]
... ...
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
... ... @@ -347,23 +347,23 @@
347 347 <Reference Include="Microsoft.CSharp" />
348 348 <Reference Include="System.Data" />
349 349 <Reference Include="System.Xml" />
350   - <Reference Include="VRH.Common, Version=4.1.1.0, Culture=neutral, processorArchitecture=MSIL">
351   - <HintPath>..\packages\VRH.Common.4.1.1\lib\net462\VRH.Common.dll</HintPath>
  350 + <Reference Include="VRH.Common, Version=4.1.4.0, Culture=neutral, processorArchitecture=MSIL">
  351 + <HintPath>..\packages\VRH.Common.4.1.4\lib\net462\VRH.Common.dll</HintPath>
352 352 </Reference>
353   - <Reference Include="VRH.Common.COM, Version=4.1.0.0, Culture=neutral, processorArchitecture=MSIL">
354   - <HintPath>..\packages\VRH.Common.4.1.1\lib\net462\VRH.Common.COM.dll</HintPath>
  353 + <Reference Include="VRH.Common.COM, Version=4.1.3.0, Culture=neutral, processorArchitecture=MSIL">
  354 + <HintPath>..\packages\VRH.Common.4.1.4\lib\net462\VRH.Common.COM.dll</HintPath>
355 355 </Reference>
356   - <Reference Include="VRH.Common.EF, Version=4.1.0.0, Culture=neutral, processorArchitecture=MSIL">
357   - <HintPath>..\packages\VRH.Common.4.1.1\lib\net462\VRH.Common.EF.dll</HintPath>
  356 + <Reference Include="VRH.Common.EF, Version=4.1.3.0, Culture=neutral, processorArchitecture=MSIL">
  357 + <HintPath>..\packages\VRH.Common.4.1.4\lib\net462\VRH.Common.EF.dll</HintPath>
358 358 </Reference>
359   - <Reference Include="VRH.Common.Log4ProIS, Version=4.1.1.0, Culture=neutral, processorArchitecture=MSIL">
360   - <HintPath>..\packages\VRH.Common.4.1.1\lib\net462\VRH.Common.Log4ProIS.dll</HintPath>
  359 + <Reference Include="VRH.Common.Log4ProIS, Version=4.1.4.0, Culture=neutral, processorArchitecture=MSIL">
  360 + <HintPath>..\packages\VRH.Common.4.1.4\lib\net462\VRH.Common.Log4ProIS.dll</HintPath>
361 361 </Reference>
362 362 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
363 363 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net452\Vrh.Web.Providers.dll</HintPath>
364 364 </Reference>
365   - <Reference Include="Vrh.XmlProcessing, Version=2.8.0.0, Culture=neutral, processorArchitecture=MSIL">
366   - <HintPath>..\packages\Vrh.XmlProcessing.2.8.0\lib\net45\Vrh.XmlProcessing.dll</HintPath>
  365 + <Reference Include="Vrh.XmlProcessing, Version=2.9.5.0, Culture=neutral, processorArchitecture=MSIL">
  366 + <HintPath>..\packages\Vrh.XmlProcessing.2.9.5\lib\net462\Vrh.XmlProcessing.dll</HintPath>
367 367 </Reference>
368 368 <Reference Include="WindowsBase" />
369 369 </ItemGroup>
... ...
Vrh.Log4Pro.MaintenanceConsole/packages.config
... ... @@ -73,7 +73,7 @@
73 73 <package id="System.Threading.Timer" version="4.0.1" targetFramework="net472" />
74 74 <package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net472" />
75 75 <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net472" />
76   - <package id="VRH.Common" version="4.1.1" targetFramework="net472" />
  76 + <package id="VRH.Common" version="4.1.4" targetFramework="net472" />
77 77 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net472" />
78   - <package id="Vrh.XmlProcessing" version="2.8.0" targetFramework="net472" />
  78 + <package id="Vrh.XmlProcessing" version="2.9.5" targetFramework="net472" />
79 79 </packages>
80 80 \ No newline at end of file
... ...