diff --git a/SQLSchemaCompare.CLI/SQLSchemaCompare.CLI.csproj b/SQLSchemaCompare.CLI/SQLSchemaCompare.CLI.csproj
index 48fbd15..de45a92 100644
--- a/SQLSchemaCompare.CLI/SQLSchemaCompare.CLI.csproj
+++ b/SQLSchemaCompare.CLI/SQLSchemaCompare.CLI.csproj
@@ -20,13 +20,13 @@
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
diff --git a/SQLSchemaCompare.CLI/packages.lock.json b/SQLSchemaCompare.CLI/packages.lock.json
index a48fa5e..1f1fdb8 100644
--- a/SQLSchemaCompare.CLI/packages.lock.json
+++ b/SQLSchemaCompare.CLI/packages.lock.json
@@ -4,11 +4,11 @@
"net10.0": {
"Neolution.CodeAnalysis": {
"type": "Direct",
- "requested": "[3.2.2, )",
- "resolved": "3.2.2",
- "contentHash": "9eBWPh7DNlBje/vH1q5Z4Q5FjwahYavPE2NsJO78IRcQ0xDrhor2FY8DxLA26BsweMqn4Ej0cN5dnyFexjl+ww==",
+ "requested": "[3.3.0-beta.2, )",
+ "resolved": "3.3.0-beta.2",
+ "contentHash": "88mG4f4P16K4Ql3uTqeaoeXGJLNMReFh9z3ZKmKZ0bY4RTk4z4syjuF/TefouGM2hR+mcBSdWbAtsKT/+FowlA==",
"dependencies": {
- "SonarAnalyzer.CSharp": "9.20.0.85982",
+ "SonarAnalyzer.CSharp": "9.32.0.97167",
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
@@ -32,11 +32,11 @@
},
"Spectre.Console.Cli.Extensions.DependencyInjection": {
"type": "Direct",
- "requested": "[0.24.0, )",
- "resolved": "0.24.0",
- "contentHash": "hr4hp++FJdQK0InxAQ0Ba3BfzsGS+s4EWMM7NWPLpLCLHlmSlGm2Gyho3Rz4i3NeQjNSjmGf+NGh7//ufjuHEQ==",
+ "requested": "[0.25.0, )",
+ "resolved": "0.25.0",
+ "contentHash": "MVhVuErdBt9Lm10MboaJriu/7vf5+WpgQEQ2U/g7FMx3zF7WqRbM+KV0GSFsEgIWorgfTX/ke4akZ9rZd9644g==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "10.0.5",
+ "Microsoft.Extensions.DependencyInjection": "10.0.8",
"Spectre.Console.Cli": "0.55.0"
}
},
@@ -103,120 +103,120 @@
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "G6yclVO5/csPzzsymV0SemY2NDqE31CP5M3jprF5IuO9wJsh4aUOfYD8HCLuDmM1D1CfReegVic48O2r79d46Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EJx+fIBMgBlgD+ublKCn+GTOJkw3UqV7xOjYWBRVdUYyIm8UfvAsmSOPFiIInsWTHyMEYUJ9gCJY1jwX+6UB7w==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "10.0.7",
- "Microsoft.EntityFrameworkCore.Analyzers": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Abstractions": "10.0.8",
+ "Microsoft.EntityFrameworkCore.Analyzers": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "TuxExnfIS/bSq3z2CbH0LwZH1oyj9iHhSGneU4fpxl3ikjZGZdSae9gcfnImV1rufH8f/ab1NnHwyL2BLyeZOg=="
+ "resolved": "10.0.8",
+ "contentHash": "jbKDXWPZQhuPHygMnwzNOqxBADVcpRVytcKYZsA++QqhPkpF93Ta8o5mbJQGrARSjlkr9WtOaADV97EDMOZ7DA=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "eZnMyiJzo249Ejg5CaFScvJS0u7neQfS9DXknAHTO6FHVMM99gO0byNXHGZmA/BOkZ13ngeVziQLHTMOtgescg=="
+ "resolved": "10.0.8",
+ "contentHash": "M3BZ8JH8rB6BE7dO2g9iVbrHLnEz9wMXT6q+tDR6Nq3gyP3KmBj5OTiZGxyF3vesjOQNKanYoPGSNBR4kR2llg=="
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "midwPufIwXhOJcVhaZpCZGNbjy2QoPfHI+70nw2dGcoULEW9DybMvMPYkRjOJV0eI46a1oVFhU4lFYDEx6YUbg==",
+ "resolved": "10.0.8",
+ "contentHash": "UU3diAD2wwZveye2rnrwaF/wvJ9tm5iL2fuY9TTap6/iGQK1OO29M1BzXZRlRPVH/dByt5w/pISBSFtyR7hTqw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Configuration.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "jci/dpjLIZyrp0Kbt0kr1lh+7BXbJ3wNk+vTwS/Se65grEJSBC+eE2UAQsi/xSNB5lHP2dysyOMHugkpFwQwNA==",
+ "resolved": "10.0.8",
+ "contentHash": "A+FLIsTH9l5DG2iD6QW6Mfwlvr+BjWme/jJ2hvwmmENTr7lR1UWmgCtKCjDYcHxqdAD15bb4PgQnSzw12DV/pw==",
"dependencies": {
"Microsoft.Data.SqlClient": "6.1.1",
- "Microsoft.EntityFrameworkCore.Relational": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Relational": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Configuration.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.Extensions.Caching.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "pUDgQKEqNUFlerDIFRg7zzoDVRPEWIG7nR40h8Gzg8RXza4Ry0lWZ7u91bmwu3iUDCxw3Dv6TLHVFoAgY0gy7Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EoK2TwVR1daxmfXUPnvIYZSk5XQjHe45sGekox4kvMt88KQZQhDVzYW5Na5+oNwTuRpE48hipyGJg12F1Tm70w==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Caching.Memory": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "6eULH/sc97yfCEV31g7AgUzHc7dIm0DGBcofoE8GgBaXbdAPPhathN8rYcgi1TSiG1QucCdqKiVNaDEPAEXL5Q==",
+ "resolved": "10.0.8",
+ "contentHash": "sYMYQjNprfqPTryuLNnr0/AOtnhlfuZ0ZxyOV0d3AXOEL8j9KV0EbelpZYyIatT2hJiaSGO9XGr5YDRsh22OfQ==",
"dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Caching.Abstractions": "10.0.8",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Options": "10.0.8",
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "t56nEgvECcyLPojZIUFWJknQQDAbgfTf9J+QMYJE1YYvVgz69vN6B/AKL8Grvj3Lcnp8kTpNqwmwFhb3YLJmtQ==",
+ "resolved": "10.0.8",
+ "contentHash": "I63esIFbL3h5pSt7gXpXOlmcwDmYBUoYNEglKfDPFUqtYvSV84f2l28hO2lfVXsV0wdlplgAM7IVz16matapSg==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "91F/o3emPV/+xY/ip3s2LqDNF14kjttlVtq0BXgg6p4MnCzeSZxnUJm+t6WRrtD3JdGo88/oX+z7OwK4y8PZuw==",
+ "resolved": "10.0.8",
+ "contentHash": "daf62xHIrq8pnE709hgaZZN9tSam9TGGepWe1+bE6V3GEuVwJiMs6ib+38lfMCyAJAHiX0vapxBhsuMSV7U+cg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "Z6mfFEaFcwCfSboxJwOLfu7/31npCY9q70WUamHW/vRQhDvBKOT4Vf9YkZj5J6hLvJpb0oDEYfHunQZj0xxvKw=="
+ "resolved": "10.0.8",
+ "contentHash": "21nbDV60SRPWGIivsyl6lqBeEJNG1sginhhfWgRrr3Ais7aQ12To25OAHQxgoiJkjqy1aQ6RxpZBGYuTi7Ge6A=="
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "hOeRIQ63GkgiYCB/MIFp+LQs8aXpJXpB55t6Aj37ab7t2/6WeFcPXxYM9hdy/o5tffzwf8mhqzLJP6mjGYCxjw==",
+ "resolved": "10.0.8",
+ "contentHash": "K60JhWC2hN/Gi7TP68tBxSzk5ACWOs7lkmPzsfA8Bcf/IXTajujt2ORMf9rSMk1bsng6Lv4Y3fuxp3bm1+15ug==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection": "10.0.8",
+ "Microsoft.Extensions.Logging.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Options": "10.0.8"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "tIEcQ2gvERrH2KiCjdsVcHGhXt9lIsuDStfOIeZWr7/fP8IXhGiYfx0/80PNI7WPO2IYuFtlZLSlnTS8+/Mchw==",
+ "resolved": "10.0.8",
+ "contentHash": "fdVadZmsC8jRP0KvKy8mO8f6GV/HyBvElfcSxEhd+5FM5boAw/01iSaCto5G3G37ApJira4A3pNaVvBv8cUiLQ==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "00SHUGTh2jSMvIr6x9Xwd2nE+B5/qFCO/9hDwUDhJsjYRDlADmaBZ7tqehXzBDsfjHSXJzuRHJzPYPPjphBQ7Q==",
+ "resolved": "10.0.8",
+ "contentHash": "VBD+131DpTNCNDfA4kIyKTiCySvJGNhwibdWBSdFRu7GMfXLXcXODkgA+KStKbbhzraLglZWUN4nXyHgW4JIRA==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "D5M0Jr551iTgwkZMN9rm0pSkgNLj5quUWQUmQPMZh7k/bnvZTnXRGfE2KuvXf1EEjt/ofD9yw9IumpgdP9QCnw=="
+ "resolved": "10.0.8",
+ "contentHash": "OBPo4nYhMyIbtueoC10CBm6AGAbo/A9IV8QQ/6ryZS7VvmqpGT7hunazeHLxFawRzn3oLOq4jhqhpBX4tfswWQ=="
},
"Microsoft.Identity.Client": {
"type": "Transitive",
@@ -288,10 +288,10 @@
},
"Microting.EntityFrameworkCore.MySql": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "FNohIzR0HuCsGNc8kHDeICt3cReGCGO0mZ5SOzcTlmZZgZux7GN/ekBcjGb2LwT81wJIi0R5Xh1xZrPXvF7m9A==",
+ "resolved": "10.0.8",
+ "contentHash": "vaxt+8dU7WODnxl5/2k4VH+LNgbQHk+yGIqWum619+6lICCmbLHyYyzqgJRGzic+Aeyh212TeH5fHklfXAjWVw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, 10.0.999]",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, 10.0.999]",
"MySqlConnector": "2.5.0"
}
},
@@ -337,8 +337,8 @@
},
"SonarAnalyzer.CSharp": {
"type": "Transitive",
- "resolved": "9.20.0.85982",
- "contentHash": "c0IYtFg4mYusTafTy0Bs5wev45vRKNShkuoWyQyPMbC6imEFHL7tY/7xbbUJd6JNLYx5vP8wyi2LgiBsMHqb2Q=="
+ "resolved": "9.32.0.97167",
+ "contentHash": "Yxk86RV+8ynJpUhku1Yw2hITFmnmXKkXJ73cIFSy85ol5SnWREQg9RuTyV8nI7V7+pyLKpCfRmD7P0widsgjkg=="
},
"Spectre.Console.Ansi": {
"type": "Transitive",
@@ -411,9 +411,9 @@
"TiCodeX.SQLSchemaCompare.Infrastructure": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, )",
- "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.7, )",
- "Microting.EntityFrameworkCore.MySql": "[10.0.7, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, )",
+ "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.8, )",
+ "Microting.EntityFrameworkCore.MySql": "[10.0.8, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )",
"TiCodeX.SQLSchemaCompare.Services": "[2026.5.1, )"
}
@@ -422,7 +422,7 @@
"type": "Project",
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[10.0.7, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[10.0.8, )",
"Newtonsoft.Json": "[13.0.4, )",
"TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )"
}
diff --git a/SQLSchemaCompare.Core/SQLSchemaCompare.Core.csproj b/SQLSchemaCompare.Core/SQLSchemaCompare.Core.csproj
index 2ea2d51..132427a 100644
--- a/SQLSchemaCompare.Core/SQLSchemaCompare.Core.csproj
+++ b/SQLSchemaCompare.Core/SQLSchemaCompare.Core.csproj
@@ -7,7 +7,7 @@
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/SQLSchemaCompare.Core/packages.lock.json b/SQLSchemaCompare.Core/packages.lock.json
index 038b4f5..9cbc8b5 100644
--- a/SQLSchemaCompare.Core/packages.lock.json
+++ b/SQLSchemaCompare.Core/packages.lock.json
@@ -4,11 +4,11 @@
"net10.0": {
"Neolution.CodeAnalysis": {
"type": "Direct",
- "requested": "[3.2.2, )",
- "resolved": "3.2.2",
- "contentHash": "9eBWPh7DNlBje/vH1q5Z4Q5FjwahYavPE2NsJO78IRcQ0xDrhor2FY8DxLA26BsweMqn4Ej0cN5dnyFexjl+ww==",
+ "requested": "[3.3.0-beta.2, )",
+ "resolved": "3.3.0-beta.2",
+ "contentHash": "88mG4f4P16K4Ql3uTqeaoeXGJLNMReFh9z3ZKmKZ0bY4RTk4z4syjuF/TefouGM2hR+mcBSdWbAtsKT/+FowlA==",
"dependencies": {
- "SonarAnalyzer.CSharp": "9.20.0.85982",
+ "SonarAnalyzer.CSharp": "9.32.0.97167",
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
@@ -20,8 +20,8 @@
},
"SonarAnalyzer.CSharp": {
"type": "Transitive",
- "resolved": "9.20.0.85982",
- "contentHash": "c0IYtFg4mYusTafTy0Bs5wev45vRKNShkuoWyQyPMbC6imEFHL7tY/7xbbUJd6JNLYx5vP8wyi2LgiBsMHqb2Q=="
+ "resolved": "9.32.0.97167",
+ "contentHash": "Yxk86RV+8ynJpUhku1Yw2hITFmnmXKkXJ73cIFSy85ol5SnWREQg9RuTyV8nI7V7+pyLKpCfRmD7P0widsgjkg=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
diff --git a/SQLSchemaCompare.Infrastructure/DatabaseProviders/ADatabaseProvider.cs b/SQLSchemaCompare.Infrastructure/DatabaseProviders/ADatabaseProvider.cs
index a0c8770..97f926b 100644
--- a/SQLSchemaCompare.Infrastructure/DatabaseProviders/ADatabaseProvider.cs
+++ b/SQLSchemaCompare.Infrastructure/DatabaseProviders/ADatabaseProvider.cs
@@ -69,7 +69,7 @@ protected TDatabase DiscoverDatabase(TDatabaseContext context, TaskInfo taskInfo
ArgumentNullException.ThrowIfNull(taskInfo);
- this.Logger.LogInformation($"DiscoverDatabase started for database '{context.DatabaseName}' on server '{context.Hostname}'");
+ this.Logger.LogInformation("DiscoverDatabase started for database '{DatabaseName}' on server '{Hostname}'", context.DatabaseName, context.Hostname);
var db = new TDatabase { Name = context.DatabaseName };
var columns = new List();
@@ -96,7 +96,7 @@ protected TDatabase DiscoverDatabase(TDatabaseContext context, TaskInfo taskInfo
{
taskInfo.Percentage = 8;
var version = this.GetServerVersion(context);
- this.Logger.LogInformation($"Server '{context.Hostname}' version: {version}");
+ this.Logger.LogInformation("Server '{Hostname}' version: {Version}", context.Hostname, version);
if (Version.TryParse(version, out var result))
{
this.CurrentServerVersion = db.ServerVersion = result;
diff --git a/SQLSchemaCompare.Infrastructure/DatabaseProviders/MicrosoftSqlDatabaseProvider.cs b/SQLSchemaCompare.Infrastructure/DatabaseProviders/MicrosoftSqlDatabaseProvider.cs
index ab774ea..662fc17 100644
--- a/SQLSchemaCompare.Infrastructure/DatabaseProviders/MicrosoftSqlDatabaseProvider.cs
+++ b/SQLSchemaCompare.Infrastructure/DatabaseProviders/MicrosoftSqlDatabaseProvider.cs
@@ -299,7 +299,7 @@ protected override IEnumerable GetDataTypes(MicrosoftSqlDatabas
{
if (type.IsTableType)
{
- this.Logger.LogError($"Unsupported User-Defined Table Type: {type.Name}");
+ this.Logger.LogError("Unsupported User-Defined Table Type: {TypeName}", type.Name);
continue;
}
@@ -309,7 +309,7 @@ protected override IEnumerable GetDataTypes(MicrosoftSqlDatabas
if (type.SystemType == null)
{
- this.Logger.LogError($"Unable to find corresponding system type for '{type.Name}'");
+ this.Logger.LogError("Unable to find corresponding system type for '{TypeName}'", type.Name);
continue;
}
}
diff --git a/SQLSchemaCompare.Infrastructure/Repository/ProjectRepository.cs b/SQLSchemaCompare.Infrastructure/Repository/ProjectRepository.cs
index 497f459..1d38c16 100644
--- a/SQLSchemaCompare.Infrastructure/Repository/ProjectRepository.cs
+++ b/SQLSchemaCompare.Infrastructure/Repository/ProjectRepository.cs
@@ -24,7 +24,7 @@ public ProjectRepository(ILoggerFactory loggerFactory)
///
public CompareProject Read(string filename)
{
- this.logger.LogInformation($"Reading project file: {filename}");
+ this.logger.LogInformation("Reading project file: {Filename}", filename);
var xml = new XmlSerializer(typeof(CompareProject));
using var f = File.OpenRead(filename);
using var r = XmlReader.Create(f);
@@ -34,11 +34,11 @@ public CompareProject Read(string filename)
///
public void Write(CompareProject project, string filename)
{
- this.logger.LogInformation($"Writing project file: {filename}");
+ this.logger.LogInformation("Writing project file: {Filename}", filename);
if (!Directory.Exists(Path.GetDirectoryName(filename)))
{
- this.logger.LogInformation($"Creating folder: {Path.GetDirectoryName(filename)}");
+ this.logger.LogInformation("Creating folder: {FolderName}", Path.GetDirectoryName(filename));
Directory.CreateDirectory(Path.GetDirectoryName(filename) ?? throw new InvalidOperationException());
}
diff --git a/SQLSchemaCompare.Infrastructure/SQLSchemaCompare.Infrastructure.csproj b/SQLSchemaCompare.Infrastructure/SQLSchemaCompare.Infrastructure.csproj
index 6cbf90c..d0ca1ab 100644
--- a/SQLSchemaCompare.Infrastructure/SQLSchemaCompare.Infrastructure.csproj
+++ b/SQLSchemaCompare.Infrastructure/SQLSchemaCompare.Infrastructure.csproj
@@ -5,10 +5,10 @@
-
-
-
-
+
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/SQLSchemaCompare.Infrastructure/packages.lock.json b/SQLSchemaCompare.Infrastructure/packages.lock.json
index 16ca273..75615d8 100644
--- a/SQLSchemaCompare.Infrastructure/packages.lock.json
+++ b/SQLSchemaCompare.Infrastructure/packages.lock.json
@@ -4,46 +4,46 @@
"net10.0": {
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "midwPufIwXhOJcVhaZpCZGNbjy2QoPfHI+70nw2dGcoULEW9DybMvMPYkRjOJV0eI46a1oVFhU4lFYDEx6YUbg==",
+ "requested": "[10.0.8, )",
+ "resolved": "10.0.8",
+ "contentHash": "UU3diAD2wwZveye2rnrwaF/wvJ9tm5iL2fuY9TTap6/iGQK1OO29M1BzXZRlRPVH/dByt5w/pISBSFtyR7hTqw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Configuration.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "jci/dpjLIZyrp0Kbt0kr1lh+7BXbJ3wNk+vTwS/Se65grEJSBC+eE2UAQsi/xSNB5lHP2dysyOMHugkpFwQwNA==",
+ "requested": "[10.0.8, )",
+ "resolved": "10.0.8",
+ "contentHash": "A+FLIsTH9l5DG2iD6QW6Mfwlvr+BjWme/jJ2hvwmmENTr7lR1UWmgCtKCjDYcHxqdAD15bb4PgQnSzw12DV/pw==",
"dependencies": {
"Microsoft.Data.SqlClient": "6.1.1",
- "Microsoft.EntityFrameworkCore.Relational": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Relational": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Configuration.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microting.EntityFrameworkCore.MySql": {
"type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "FNohIzR0HuCsGNc8kHDeICt3cReGCGO0mZ5SOzcTlmZZgZux7GN/ekBcjGb2LwT81wJIi0R5Xh1xZrPXvF7m9A==",
+ "requested": "[10.0.8, )",
+ "resolved": "10.0.8",
+ "contentHash": "vaxt+8dU7WODnxl5/2k4VH+LNgbQHk+yGIqWum619+6lICCmbLHyYyzqgJRGzic+Aeyh212TeH5fHklfXAjWVw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, 10.0.999]",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, 10.0.999]",
"MySqlConnector": "2.5.0"
}
},
"Neolution.CodeAnalysis": {
"type": "Direct",
- "requested": "[3.2.2, )",
- "resolved": "3.2.2",
- "contentHash": "9eBWPh7DNlBje/vH1q5Z4Q5FjwahYavPE2NsJO78IRcQ0xDrhor2FY8DxLA26BsweMqn4Ej0cN5dnyFexjl+ww==",
+ "requested": "[3.3.0-beta.2, )",
+ "resolved": "3.3.0-beta.2",
+ "contentHash": "88mG4f4P16K4Ql3uTqeaoeXGJLNMReFh9z3ZKmKZ0bY4RTk4z4syjuF/TefouGM2hR+mcBSdWbAtsKT/+FowlA==",
"dependencies": {
- "SonarAnalyzer.CSharp": "9.20.0.85982",
+ "SonarAnalyzer.CSharp": "9.32.0.97167",
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
@@ -121,97 +121,97 @@
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "G6yclVO5/csPzzsymV0SemY2NDqE31CP5M3jprF5IuO9wJsh4aUOfYD8HCLuDmM1D1CfReegVic48O2r79d46Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EJx+fIBMgBlgD+ublKCn+GTOJkw3UqV7xOjYWBRVdUYyIm8UfvAsmSOPFiIInsWTHyMEYUJ9gCJY1jwX+6UB7w==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "10.0.7",
- "Microsoft.EntityFrameworkCore.Analyzers": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Abstractions": "10.0.8",
+ "Microsoft.EntityFrameworkCore.Analyzers": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "TuxExnfIS/bSq3z2CbH0LwZH1oyj9iHhSGneU4fpxl3ikjZGZdSae9gcfnImV1rufH8f/ab1NnHwyL2BLyeZOg=="
+ "resolved": "10.0.8",
+ "contentHash": "jbKDXWPZQhuPHygMnwzNOqxBADVcpRVytcKYZsA++QqhPkpF93Ta8o5mbJQGrARSjlkr9WtOaADV97EDMOZ7DA=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "eZnMyiJzo249Ejg5CaFScvJS0u7neQfS9DXknAHTO6FHVMM99gO0byNXHGZmA/BOkZ13ngeVziQLHTMOtgescg=="
+ "resolved": "10.0.8",
+ "contentHash": "M3BZ8JH8rB6BE7dO2g9iVbrHLnEz9wMXT6q+tDR6Nq3gyP3KmBj5OTiZGxyF3vesjOQNKanYoPGSNBR4kR2llg=="
},
"Microsoft.Extensions.Caching.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "pUDgQKEqNUFlerDIFRg7zzoDVRPEWIG7nR40h8Gzg8RXza4Ry0lWZ7u91bmwu3iUDCxw3Dv6TLHVFoAgY0gy7Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EoK2TwVR1daxmfXUPnvIYZSk5XQjHe45sGekox4kvMt88KQZQhDVzYW5Na5+oNwTuRpE48hipyGJg12F1Tm70w==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Caching.Memory": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "6eULH/sc97yfCEV31g7AgUzHc7dIm0DGBcofoE8GgBaXbdAPPhathN8rYcgi1TSiG1QucCdqKiVNaDEPAEXL5Q==",
+ "resolved": "10.0.8",
+ "contentHash": "sYMYQjNprfqPTryuLNnr0/AOtnhlfuZ0ZxyOV0d3AXOEL8j9KV0EbelpZYyIatT2hJiaSGO9XGr5YDRsh22OfQ==",
"dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Caching.Abstractions": "10.0.8",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Options": "10.0.8",
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "t56nEgvECcyLPojZIUFWJknQQDAbgfTf9J+QMYJE1YYvVgz69vN6B/AKL8Grvj3Lcnp8kTpNqwmwFhb3YLJmtQ==",
+ "resolved": "10.0.8",
+ "contentHash": "I63esIFbL3h5pSt7gXpXOlmcwDmYBUoYNEglKfDPFUqtYvSV84f2l28hO2lfVXsV0wdlplgAM7IVz16matapSg==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "91F/o3emPV/+xY/ip3s2LqDNF14kjttlVtq0BXgg6p4MnCzeSZxnUJm+t6WRrtD3JdGo88/oX+z7OwK4y8PZuw==",
+ "resolved": "10.0.8",
+ "contentHash": "daf62xHIrq8pnE709hgaZZN9tSam9TGGepWe1+bE6V3GEuVwJiMs6ib+38lfMCyAJAHiX0vapxBhsuMSV7U+cg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "Z6mfFEaFcwCfSboxJwOLfu7/31npCY9q70WUamHW/vRQhDvBKOT4Vf9YkZj5J6hLvJpb0oDEYfHunQZj0xxvKw=="
+ "resolved": "10.0.8",
+ "contentHash": "21nbDV60SRPWGIivsyl6lqBeEJNG1sginhhfWgRrr3Ais7aQ12To25OAHQxgoiJkjqy1aQ6RxpZBGYuTi7Ge6A=="
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "hOeRIQ63GkgiYCB/MIFp+LQs8aXpJXpB55t6Aj37ab7t2/6WeFcPXxYM9hdy/o5tffzwf8mhqzLJP6mjGYCxjw==",
+ "resolved": "10.0.8",
+ "contentHash": "K60JhWC2hN/Gi7TP68tBxSzk5ACWOs7lkmPzsfA8Bcf/IXTajujt2ORMf9rSMk1bsng6Lv4Y3fuxp3bm1+15ug==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection": "10.0.8",
+ "Microsoft.Extensions.Logging.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Options": "10.0.8"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "tIEcQ2gvERrH2KiCjdsVcHGhXt9lIsuDStfOIeZWr7/fP8IXhGiYfx0/80PNI7WPO2IYuFtlZLSlnTS8+/Mchw==",
+ "resolved": "10.0.8",
+ "contentHash": "fdVadZmsC8jRP0KvKy8mO8f6GV/HyBvElfcSxEhd+5FM5boAw/01iSaCto5G3G37ApJira4A3pNaVvBv8cUiLQ==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "00SHUGTh2jSMvIr6x9Xwd2nE+B5/qFCO/9hDwUDhJsjYRDlADmaBZ7tqehXzBDsfjHSXJzuRHJzPYPPjphBQ7Q==",
+ "resolved": "10.0.8",
+ "contentHash": "VBD+131DpTNCNDfA4kIyKTiCySvJGNhwibdWBSdFRu7GMfXLXcXODkgA+KStKbbhzraLglZWUN4nXyHgW4JIRA==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "D5M0Jr551iTgwkZMN9rm0pSkgNLj5quUWQUmQPMZh7k/bnvZTnXRGfE2KuvXf1EEjt/ofD9yw9IumpgdP9QCnw=="
+ "resolved": "10.0.8",
+ "contentHash": "OBPo4nYhMyIbtueoC10CBm6AGAbo/A9IV8QQ/6ryZS7VvmqpGT7hunazeHLxFawRzn3oLOq4jhqhpBX4tfswWQ=="
},
"Microsoft.Identity.Client": {
"type": "Transitive",
@@ -313,8 +313,8 @@
},
"SonarAnalyzer.CSharp": {
"type": "Transitive",
- "resolved": "9.20.0.85982",
- "contentHash": "c0IYtFg4mYusTafTy0Bs5wev45vRKNShkuoWyQyPMbC6imEFHL7tY/7xbbUJd6JNLYx5vP8wyi2LgiBsMHqb2Q=="
+ "resolved": "9.32.0.97167",
+ "contentHash": "Yxk86RV+8ynJpUhku1Yw2hITFmnmXKkXJ73cIFSy85ol5SnWREQg9RuTyV8nI7V7+pyLKpCfRmD7P0widsgjkg=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
@@ -383,7 +383,7 @@
"type": "Project",
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[10.0.7, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[10.0.8, )",
"Newtonsoft.Json": "[13.0.4, )",
"TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )"
}
diff --git a/SQLSchemaCompare.Services/DatabaseCompareService.cs b/SQLSchemaCompare.Services/DatabaseCompareService.cs
index ec7456d..5203e7d 100644
--- a/SQLSchemaCompare.Services/DatabaseCompareService.cs
+++ b/SQLSchemaCompare.Services/DatabaseCompareService.cs
@@ -280,8 +280,7 @@ private bool ExecuteDatabaseComparison(TaskInfo taskInfo)
}
catch (Exception ex)
{
- this.logger.LogError(ex.Message);
- this.logger.LogError(ex.StackTrace);
+ this.logger.LogError(ex, "Error comparing databases");
throw;
}
}
@@ -301,7 +300,7 @@ private void FillCompareResultItems(CompareResult result, CompareResultItems com
result.DifferentItems.AddRange(compareResultItems.StoredProcedures.Where(x => x.SourceItem != null && x.TargetItem != null && !x.Equal).OrderBy(x => x.SourceItemName));
result.DifferentItems.AddRange(compareResultItems.Sequences.Where(x => x.SourceItem != null && x.TargetItem != null && !x.Equal).OrderBy(x => x.SourceItemName));
result.DifferentItems.AddRange(compareResultItems.DataTypes.Where(x => x.SourceItem != null && x.TargetItem != null && !x.Equal).OrderBy(x => x.SourceItemName));
- this.logger.LogDebug($"Different items => {result.DifferentItems.Count}");
+ this.logger.LogDebug("Different items => {Count}", result.DifferentItems.Count);
result.OnlySourceItems.AddRange(compareResultItems.Schemas.Where(x => x.SourceItem != null && x.TargetItem == null).OrderBy(x => x.SourceItemName));
result.OnlySourceItems.AddRange(compareResultItems.Tables.Where(x => x.SourceItem != null && x.TargetItem == null).OrderBy(x => x.SourceItemName));
@@ -310,7 +309,7 @@ private void FillCompareResultItems(CompareResult result, CompareResultItems com
result.OnlySourceItems.AddRange(compareResultItems.StoredProcedures.Where(x => x.SourceItem != null && x.TargetItem == null).OrderBy(x => x.SourceItemName));
result.OnlySourceItems.AddRange(compareResultItems.Sequences.Where(x => x.SourceItem != null && x.TargetItem == null).OrderBy(x => x.SourceItemName));
result.OnlySourceItems.AddRange(compareResultItems.DataTypes.Where(x => x.SourceItem != null && x.TargetItem == null).OrderBy(x => x.SourceItemName));
- this.logger.LogDebug($"Only Source items => {result.OnlySourceItems.Count}");
+ this.logger.LogDebug("Only Source items => {Count}", result.OnlySourceItems.Count);
result.OnlyTargetItems.AddRange(compareResultItems.Schemas.Where(x => x.TargetItem != null && x.SourceItem == null).OrderBy(x => x.TargetItemName));
result.OnlyTargetItems.AddRange(compareResultItems.Tables.Where(x => x.TargetItem != null && x.SourceItem == null).OrderBy(x => x.TargetItemName));
@@ -319,7 +318,7 @@ private void FillCompareResultItems(CompareResult result, CompareResultItems com
result.OnlyTargetItems.AddRange(compareResultItems.StoredProcedures.Where(x => x.TargetItem != null && x.SourceItem == null).OrderBy(x => x.TargetItemName));
result.OnlyTargetItems.AddRange(compareResultItems.Sequences.Where(x => x.TargetItem != null && x.SourceItem == null).OrderBy(x => x.TargetItemName));
result.OnlyTargetItems.AddRange(compareResultItems.DataTypes.Where(x => x.TargetItem != null && x.SourceItem == null).OrderBy(x => x.TargetItemName));
- this.logger.LogDebug($"Only Target items => {result.OnlyTargetItems.Count}");
+ this.logger.LogDebug("Only Target items => {Count}", result.OnlyTargetItems.Count);
result.SameItems.AddRange(compareResultItems.Schemas.Where(x => x.SourceItem != null && x.TargetItem != null && x.Equal).OrderBy(x => x.SourceItemName));
result.SameItems.AddRange(compareResultItems.Tables.Where(x => x.SourceItem != null && x.TargetItem != null && x.Equal).OrderBy(x => x.SourceItemName));
@@ -328,7 +327,7 @@ private void FillCompareResultItems(CompareResult result, CompareResultItems com
result.SameItems.AddRange(compareResultItems.StoredProcedures.Where(x => x.SourceItem != null && x.TargetItem != null && x.Equal).OrderBy(x => x.SourceItemName));
result.SameItems.AddRange(compareResultItems.Sequences.Where(x => x.SourceItem != null && x.TargetItem != null && x.Equal).OrderBy(x => x.SourceItemName));
result.SameItems.AddRange(compareResultItems.DataTypes.Where(x => x.SourceItem != null && x.TargetItem != null && x.Equal).OrderBy(x => x.SourceItemName));
- this.logger.LogDebug($"Same items => {result.SameItems.Count}");
+ this.logger.LogDebug("Same items => {Count}", result.SameItems.Count);
}
///
diff --git a/SQLSchemaCompare.Services/ProjectService.cs b/SQLSchemaCompare.Services/ProjectService.cs
index cd14fd7..435ae88 100644
--- a/SQLSchemaCompare.Services/ProjectService.cs
+++ b/SQLSchemaCompare.Services/ProjectService.cs
@@ -106,7 +106,7 @@ public void LoadProject(string filename)
}
catch (Exception ex)
{
- this.logger.LogError($"Load project error: {ex}");
+ this.logger.LogError(ex, "Error loading project from file: {Filename}", filename);
throw;
}
}
diff --git a/SQLSchemaCompare.Services/SQLSchemaCompare.Services.csproj b/SQLSchemaCompare.Services/SQLSchemaCompare.Services.csproj
index fb44667..2e05e03 100644
--- a/SQLSchemaCompare.Services/SQLSchemaCompare.Services.csproj
+++ b/SQLSchemaCompare.Services/SQLSchemaCompare.Services.csproj
@@ -8,8 +8,8 @@
-
-
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/SQLSchemaCompare.Services/packages.lock.json b/SQLSchemaCompare.Services/packages.lock.json
index c50e338..914c0f0 100644
--- a/SQLSchemaCompare.Services/packages.lock.json
+++ b/SQLSchemaCompare.Services/packages.lock.json
@@ -14,20 +14,20 @@
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "tIEcQ2gvERrH2KiCjdsVcHGhXt9lIsuDStfOIeZWr7/fP8IXhGiYfx0/80PNI7WPO2IYuFtlZLSlnTS8+/Mchw==",
+ "requested": "[10.0.8, )",
+ "resolved": "10.0.8",
+ "contentHash": "fdVadZmsC8jRP0KvKy8mO8f6GV/HyBvElfcSxEhd+5FM5boAw/01iSaCto5G3G37ApJira4A3pNaVvBv8cUiLQ==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Neolution.CodeAnalysis": {
"type": "Direct",
- "requested": "[3.2.2, )",
- "resolved": "3.2.2",
- "contentHash": "9eBWPh7DNlBje/vH1q5Z4Q5FjwahYavPE2NsJO78IRcQ0xDrhor2FY8DxLA26BsweMqn4Ej0cN5dnyFexjl+ww==",
+ "requested": "[3.3.0-beta.2, )",
+ "resolved": "3.3.0-beta.2",
+ "contentHash": "88mG4f4P16K4Ql3uTqeaoeXGJLNMReFh9z3ZKmKZ0bY4RTk4z4syjuF/TefouGM2hR+mcBSdWbAtsKT/+FowlA==",
"dependencies": {
- "SonarAnalyzer.CSharp": "9.20.0.85982",
+ "SonarAnalyzer.CSharp": "9.32.0.97167",
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
@@ -39,8 +39,8 @@
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "Z6mfFEaFcwCfSboxJwOLfu7/31npCY9q70WUamHW/vRQhDvBKOT4Vf9YkZj5J6hLvJpb0oDEYfHunQZj0xxvKw=="
+ "resolved": "10.0.8",
+ "contentHash": "21nbDV60SRPWGIivsyl6lqBeEJNG1sginhhfWgRrr3Ais7aQ12To25OAHQxgoiJkjqy1aQ6RxpZBGYuTi7Ge6A=="
},
"Newtonsoft.Json.Bson": {
"type": "Transitive",
@@ -52,8 +52,8 @@
},
"SonarAnalyzer.CSharp": {
"type": "Transitive",
- "resolved": "9.20.0.85982",
- "contentHash": "c0IYtFg4mYusTafTy0Bs5wev45vRKNShkuoWyQyPMbC6imEFHL7tY/7xbbUJd6JNLYx5vP8wyi2LgiBsMHqb2Q=="
+ "resolved": "9.32.0.97167",
+ "contentHash": "Yxk86RV+8ynJpUhku1Yw2hITFmnmXKkXJ73cIFSy85ol5SnWREQg9RuTyV8nI7V7+pyLKpCfRmD7P0widsgjkg=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
diff --git a/SQLSchemaCompare.Test/Attributes/CategoryAttribute.cs b/SQLSchemaCompare.Test/Attributes/CategoryAttribute.cs
new file mode 100644
index 0000000..cfa76b0
--- /dev/null
+++ b/SQLSchemaCompare.Test/Attributes/CategoryAttribute.cs
@@ -0,0 +1,14 @@
+namespace TiCodeX.SQLSchemaCompare.Test.Attributes;
+
+///
+/// The CategoryAttribute class is a custom attribute that can be applied to test methods or classes to indicate their category.
+///
+[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true)]
+public class CategoryAttribute(string categoryName) : Attribute, ITraitAttribute
+{
+ ///
+ public IReadOnlyCollection> GetTraits()
+ {
+ return [new KeyValuePair("Category", categoryName)];
+ }
+}
diff --git a/SQLSchemaCompare.Test/ExcelDataAttribute.cs b/SQLSchemaCompare.Test/Attributes/ExcelDataAttribute.cs
similarity index 61%
rename from SQLSchemaCompare.Test/ExcelDataAttribute.cs
rename to SQLSchemaCompare.Test/Attributes/ExcelDataAttribute.cs
index 7084727..ab2740f 100644
--- a/SQLSchemaCompare.Test/ExcelDataAttribute.cs
+++ b/SQLSchemaCompare.Test/Attributes/ExcelDataAttribute.cs
@@ -1,165 +1,169 @@
-namespace TiCodeX.SQLSchemaCompare.Test;
-
-using System.Reflection;
-using OfficeOpenXml;
-using Xunit.Sdk;
-
-///
-/// Provides an excel data source for a data theory
-///
-///
-/// Initializes a new instance of the class.
-///
-/// The path of the excel file
-[AttributeUsage(AttributeTargets.Method, Inherited = false)]
-public sealed class ExcelDataAttribute(string filePath) : DataAttribute
-{
- ///
- /// Gets the path of the excel file
- ///
- public string FilePath { get; } = filePath;
-
- ///
- [SuppressMessage("Critical Code Smell", "S3776:Cognitive Complexity of methods should not be too high", Justification = "TODO")]
- public override IEnumerable
-
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
all
runtime; build; native; contentfiles; analyzers
-
+
diff --git a/SQLSchemaCompare.Test/packages.lock.json b/SQLSchemaCompare.Test/packages.lock.json
index 6915082..d2b6165 100644
--- a/SQLSchemaCompare.Test/packages.lock.json
+++ b/SQLSchemaCompare.Test/packages.lock.json
@@ -28,17 +28,6 @@
"resolved": "8.10.0",
"contentHash": "yGvv+xp0gHFgGwhQcGoDdKIrhLhPi3zYYWWLLHPMctr+G6PWD7QH8L4wqoa5WRZquPbfSV/cP1MraI7ppAHrWw=="
},
- "Microsoft.AspNetCore.Mvc.Testing": {
- "type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "lWyzApi1g8/r0eXqZBbl5bA8zewS8koxOir83/+OvJcyn2HazdUzPFd4MWc9uMdVzCRX6Z5aY4tNK+N0pWXMLg==",
- "dependencies": {
- "Microsoft.AspNetCore.TestHost": "10.0.7",
- "Microsoft.Extensions.DependencyModel": "10.0.7",
- "Microsoft.Extensions.Hosting": "10.0.7"
- }
- },
"Microsoft.NET.Test.Sdk": {
"type": "Direct",
"requested": "[18.5.1, )",
@@ -60,40 +49,29 @@
},
"Neolution.CodeAnalysis.TestsRuleset": {
"type": "Direct",
- "requested": "[3.2.2, )",
- "resolved": "3.2.2",
- "contentHash": "aPoC5BjdvFAc9z8pezdlfu0eChTnBShSY9sl+sEIIfLJS5mgWqtbNz6WPZwZhmlg/ypxwaqmBf2t1LLz4l6FiA==",
+ "requested": "[3.3.0-beta.2, )",
+ "resolved": "3.3.0-beta.2",
+ "contentHash": "GQXIkpfRlgKFZw+vsQM2wTqRVq10Sq/zcEniQgFGTNZqyBCzogBLzi8FabptRO38yblVPN7YS35IqQ3bJtfp1Q==",
"dependencies": {
- "SonarAnalyzer.CSharp": "9.20.0.85982",
+ "SonarAnalyzer.CSharp": "9.32.0.97167",
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
- "xunit": {
- "type": "Direct",
- "requested": "[2.9.3, )",
- "resolved": "2.9.3",
- "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==",
- "dependencies": {
- "xunit.analyzers": "1.18.0",
- "xunit.assert": "2.9.3",
- "xunit.core": "[2.9.3]"
- }
- },
- "xunit.categories": {
- "type": "Direct",
- "requested": "[3.0.1, )",
- "resolved": "3.0.1",
- "contentHash": "je4ogEoneIl21pqiGPPF1iWFUP1UKV+//clBmBpJikZXapcoUH6CjEu1YOVSGkmfrpg1wWxmlXew2wfAkqOuGQ==",
- "dependencies": {
- "xunit.core": "2.4.1"
- }
- },
"xunit.runner.visualstudio": {
"type": "Direct",
"requested": "[3.1.5, )",
"resolved": "3.1.5",
"contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA=="
},
+ "xunit.v3": {
+ "type": "Direct",
+ "requested": "[3.2.2, )",
+ "resolved": "3.2.2",
+ "contentHash": "L+4/4y0Uqcg8/d6hfnxhnwh4j9FaeULvefTwrk30rr1o4n/vdPfyUQ8k0yzH8VJx7bmFEkDdcRfbtbjEHlaYcA==",
+ "dependencies": {
+ "xunit.v3.mtp-v1": "[3.2.2]"
+ }
+ },
"Azure.Core": {
"type": "Transitive",
"resolved": "1.47.1",
@@ -127,6 +105,11 @@
"resolved": "8.4.0",
"contentHash": "QaEzDFG2vcQMPqUmoWv0vBTObtH8hffQmyDr2WkqRYF/nFSn2pkdBB4vudcd/EIv0N8M3P1fzzkPQgEWsFnUmA=="
},
+ "Microsoft.ApplicationInsights": {
+ "type": "Transitive",
+ "resolved": "2.23.0",
+ "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw=="
+ },
"Microsoft.AspNet.WebApi.Client": {
"type": "Transitive",
"resolved": "6.0.0",
@@ -136,11 +119,6 @@
"Newtonsoft.Json.Bson": "1.0.2"
}
},
- "Microsoft.AspNetCore.TestHost": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "2UM9EtTmX6yF6Efa6WOO7wmHz2kPksmnzPmMwveuOGJQwbtNg5wKGj7usGLr8Ve3AMhIAc2yqyRXt1xNsed3hg=="
- },
"Microsoft.Bcl.AsyncInterfaces": {
"type": "Transitive",
"resolved": "8.0.0",
@@ -180,66 +158,66 @@
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "G6yclVO5/csPzzsymV0SemY2NDqE31CP5M3jprF5IuO9wJsh4aUOfYD8HCLuDmM1D1CfReegVic48O2r79d46Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EJx+fIBMgBlgD+ublKCn+GTOJkw3UqV7xOjYWBRVdUYyIm8UfvAsmSOPFiIInsWTHyMEYUJ9gCJY1jwX+6UB7w==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "10.0.7",
- "Microsoft.EntityFrameworkCore.Analyzers": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Abstractions": "10.0.8",
+ "Microsoft.EntityFrameworkCore.Analyzers": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "TuxExnfIS/bSq3z2CbH0LwZH1oyj9iHhSGneU4fpxl3ikjZGZdSae9gcfnImV1rufH8f/ab1NnHwyL2BLyeZOg=="
+ "resolved": "10.0.8",
+ "contentHash": "jbKDXWPZQhuPHygMnwzNOqxBADVcpRVytcKYZsA++QqhPkpF93Ta8o5mbJQGrARSjlkr9WtOaADV97EDMOZ7DA=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "eZnMyiJzo249Ejg5CaFScvJS0u7neQfS9DXknAHTO6FHVMM99gO0byNXHGZmA/BOkZ13ngeVziQLHTMOtgescg=="
+ "resolved": "10.0.8",
+ "contentHash": "M3BZ8JH8rB6BE7dO2g9iVbrHLnEz9wMXT6q+tDR6Nq3gyP3KmBj5OTiZGxyF3vesjOQNKanYoPGSNBR4kR2llg=="
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "midwPufIwXhOJcVhaZpCZGNbjy2QoPfHI+70nw2dGcoULEW9DybMvMPYkRjOJV0eI46a1oVFhU4lFYDEx6YUbg==",
+ "resolved": "10.0.8",
+ "contentHash": "UU3diAD2wwZveye2rnrwaF/wvJ9tm5iL2fuY9TTap6/iGQK1OO29M1BzXZRlRPVH/dByt5w/pISBSFtyR7hTqw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Configuration.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "jci/dpjLIZyrp0Kbt0kr1lh+7BXbJ3wNk+vTwS/Se65grEJSBC+eE2UAQsi/xSNB5lHP2dysyOMHugkpFwQwNA==",
+ "resolved": "10.0.8",
+ "contentHash": "A+FLIsTH9l5DG2iD6QW6Mfwlvr+BjWme/jJ2hvwmmENTr7lR1UWmgCtKCjDYcHxqdAD15bb4PgQnSzw12DV/pw==",
"dependencies": {
"Microsoft.Data.SqlClient": "6.1.1",
- "Microsoft.EntityFrameworkCore.Relational": "10.0.7",
- "Microsoft.Extensions.Caching.Memory": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Relational": "10.0.8",
+ "Microsoft.Extensions.Caching.Memory": "10.0.8",
+ "Microsoft.Extensions.Configuration.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging": "10.0.8"
}
},
"Microsoft.Extensions.Caching.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "pUDgQKEqNUFlerDIFRg7zzoDVRPEWIG7nR40h8Gzg8RXza4Ry0lWZ7u91bmwu3iUDCxw3Dv6TLHVFoAgY0gy7Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EoK2TwVR1daxmfXUPnvIYZSk5XQjHe45sGekox4kvMt88KQZQhDVzYW5Na5+oNwTuRpE48hipyGJg12F1Tm70w==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Caching.Memory": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "6eULH/sc97yfCEV31g7AgUzHc7dIm0DGBcofoE8GgBaXbdAPPhathN8rYcgi1TSiG1QucCdqKiVNaDEPAEXL5Q==",
+ "resolved": "10.0.8",
+ "contentHash": "sYMYQjNprfqPTryuLNnr0/AOtnhlfuZ0ZxyOV0d3AXOEL8j9KV0EbelpZYyIatT2hJiaSGO9XGr5YDRsh22OfQ==",
"dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.Caching.Abstractions": "10.0.8",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Logging.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Options": "10.0.8",
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Configuration": {
@@ -253,37 +231,10 @@
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "t56nEgvECcyLPojZIUFWJknQQDAbgfTf9J+QMYJE1YYvVgz69vN6B/AKL8Grvj3Lcnp8kTpNqwmwFhb3YLJmtQ==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "10.0.7"
- }
- },
- "Microsoft.Extensions.Configuration.Binder": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "8bS1qIaRivny+WX+49pmeJ6iAylbtX8C0DLEcCQWZjdxQvLqaMssXiGD9P/6pYElrHbK5/nAHmjbQ8STqdMYeg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7"
- }
- },
- "Microsoft.Extensions.Configuration.CommandLine": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "3lNjglxfFxOzI9zG+3HSg/YSGqo//8Fqw6u6iuIamZb4JCorbA3JLaeWOpfKTAPi2UJwaispOXWx14dUqcGz4A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7"
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "TWto3imA+mJMLZI+5sbgLiFFoOFNFkizQYNaC5jTuiHKn3diwm1RN7mWDOEZN9kG2bixw7IvgpvtUG5/teSRzA==",
+ "resolved": "10.0.8",
+ "contentHash": "I63esIFbL3h5pSt7gXpXOlmcwDmYBUoYNEglKfDPFUqtYvSV84f2l28hO2lfVXsV0wdlplgAM7IVz16matapSg==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7"
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Configuration.FileExtensions": {
@@ -309,53 +260,18 @@
"Microsoft.Extensions.FileProviders.Abstractions": "10.0.7"
}
},
- "Microsoft.Extensions.Configuration.UserSecrets": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "YqVIICoIdl0016wkeO2WQS+uEbEXbUhMLKdC5rZNl1X3nu59F+nwaAHdHjq/4OK+Cx31DYmNUSFh+MUot8qSDw==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Configuration.Json": "10.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "10.0.7",
- "Microsoft.Extensions.FileProviders.Physical": "10.0.7"
- }
- },
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "91F/o3emPV/+xY/ip3s2LqDNF14kjttlVtq0BXgg6p4MnCzeSZxnUJm+t6WRrtD3JdGo88/oX+z7OwK4y8PZuw==",
+ "resolved": "10.0.8",
+ "contentHash": "daf62xHIrq8pnE709hgaZZN9tSam9TGGepWe1+bE6V3GEuVwJiMs6ib+38lfMCyAJAHiX0vapxBhsuMSV7U+cg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "Z6mfFEaFcwCfSboxJwOLfu7/31npCY9q70WUamHW/vRQhDvBKOT4Vf9YkZj5J6hLvJpb0oDEYfHunQZj0xxvKw=="
- },
- "Microsoft.Extensions.DependencyModel": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "gCglFg/9Chu3lyJNytRuQAYM3mXQKNs1i01Cz2bc545QaHQ+LbBb4O5UCfu968Gro3ZVSOZ/ktilmPcaUSGSZA=="
- },
- "Microsoft.Extensions.Diagnostics": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "l+smp1qPlU0OUXD0OGfdp7OUFrbdq7ZaP5T7m2WpfZ4RFKD7iG73BAT7tjSMxNmbSXkhAn1jYHOAqzYG1r9sNg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "10.0.7",
- "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.7"
- }
- },
- "Microsoft.Extensions.Diagnostics.Abstractions": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "uJ9JP677y+uy+C0vtaSfi7XXgFAdz8DhU3M9lwwIXDfQKcyQ0yxM9DVYa0NXDtdVTYA2eBUtVFZ8LY0GCdeE/w==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7"
- }
+ "resolved": "10.0.8",
+ "contentHash": "21nbDV60SRPWGIivsyl6lqBeEJNG1sginhhfWgRrr3Ais7aQ12To25OAHQxgoiJkjqy1aQ6RxpZBGYuTi7Ge6A=="
},
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
@@ -380,151 +296,37 @@
"resolved": "10.0.7",
"contentHash": "NTUspqB+vH9g4wAD6KPOBx01xqYuKXR/cHXm449zpbq1GqfjdAxBmg7eJXrNsPw7SKwIdT2cJ05GxYVvc+lvsA=="
},
- "Microsoft.Extensions.Hosting": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "M/vBpfWcschvS2EUeq7cHfscsxabiGTptXwV7GeSueovGiSoNjyo1j5PMcWuOAAQrRW3nRqxZk8NeumrmpzUBg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Configuration.Binder": "10.0.7",
- "Microsoft.Extensions.Configuration.CommandLine": "10.0.7",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.7",
- "Microsoft.Extensions.Configuration.FileExtensions": "10.0.7",
- "Microsoft.Extensions.Configuration.Json": "10.0.7",
- "Microsoft.Extensions.Configuration.UserSecrets": "10.0.7",
- "Microsoft.Extensions.DependencyInjection": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Diagnostics": "10.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "10.0.7",
- "Microsoft.Extensions.FileProviders.Physical": "10.0.7",
- "Microsoft.Extensions.Hosting.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging.Configuration": "10.0.7",
- "Microsoft.Extensions.Logging.Console": "10.0.7",
- "Microsoft.Extensions.Logging.Debug": "10.0.7",
- "Microsoft.Extensions.Logging.EventLog": "10.0.7",
- "Microsoft.Extensions.Logging.EventSource": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7"
- }
- },
- "Microsoft.Extensions.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "5s8d6qC6EA8UOI4wR/+zlsq7SXttJMRb9d7zvVZ7+bE3CQEfVtC9ITUDCommm87R1zzj6WJBbCnztuIJXnP3DA==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7"
- }
- },
"Microsoft.Extensions.Logging": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "hOeRIQ63GkgiYCB/MIFp+LQs8aXpJXpB55t6Aj37ab7t2/6WeFcPXxYM9hdy/o5tffzwf8mhqzLJP6mjGYCxjw==",
+ "resolved": "10.0.8",
+ "contentHash": "K60JhWC2hN/Gi7TP68tBxSzk5ACWOs7lkmPzsfA8Bcf/IXTajujt2ORMf9rSMk1bsng6Lv4Y3fuxp3bm1+15ug==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection": "10.0.8",
+ "Microsoft.Extensions.Logging.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Options": "10.0.8"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "tIEcQ2gvERrH2KiCjdsVcHGhXt9lIsuDStfOIeZWr7/fP8IXhGiYfx0/80PNI7WPO2IYuFtlZLSlnTS8+/Mchw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7"
- }
- },
- "Microsoft.Extensions.Logging.Configuration": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "7BBnoGF37USiu7j434put9mDp7EjdlNDIZsR4vHfC1FbLZeLqiWjgJbeEtF0p59Ryqt8AtraHawf0ZKbe5jibg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "10.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Configuration.Binder": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.7"
- }
- },
- "Microsoft.Extensions.Logging.Console": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "DA++Es6v6W0HfrOrw+K8WyN6jNnZHp640PDdEvl8yfeVmgflKdn6vSSFvufNUSOuY+M2ZaSUgfY+jUKtNpXcCw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging.Configuration": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7"
- }
- },
- "Microsoft.Extensions.Logging.Debug": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "Y6DSt/JZApunYWKqTtqbdsR6iqAvHx3D0tavbNJ1rnC24MUpF+3XO/VKgFi+9PFqMyvQ2GHBBGb8H3cLSw7rDg==",
+ "resolved": "10.0.8",
+ "contentHash": "fdVadZmsC8jRP0KvKy8mO8f6GV/HyBvElfcSxEhd+5FM5boAw/01iSaCto5G3G37ApJira4A3pNaVvBv8cUiLQ==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7"
- }
- },
- "Microsoft.Extensions.Logging.EventLog": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "1C8eTuxF6BLncNSJ1HCfmaBcjpUSqQDPlBVdYTlet9oldHTPpNh9iatxSJLs8TOqdp/FOpH+nSLdBve7fu9mTQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "System.Diagnostics.EventLog": "10.0.7"
- }
- },
- "Microsoft.Extensions.Logging.EventSource": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "YWfndnDX1jVMGCN8d5T+rO+BO8sDw6BkYlUk0BYui+WP7+HhlWx8QLdA4yUDjrkGVb3AQxIWWEPVKw5Nnfj5GQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Logging": "10.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8"
}
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "00SHUGTh2jSMvIr6x9Xwd2nE+B5/qFCO/9hDwUDhJsjYRDlADmaBZ7tqehXzBDsfjHSXJzuRHJzPYPPjphBQ7Q==",
+ "resolved": "10.0.8",
+ "contentHash": "VBD+131DpTNCNDfA4kIyKTiCySvJGNhwibdWBSdFRu7GMfXLXcXODkgA+KStKbbhzraLglZWUN4nXyHgW4JIRA==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
- }
- },
- "Microsoft.Extensions.Options.ConfigurationExtensions": {
- "type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "IT7f+EMXZtkjatEcF+o6aOw/7OE4etRrMiDGEWH/iiTu2R3uhC4NEQJCfHiibtX45U3sIQ5Fh6tbb1qaOz3YAg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "10.0.7",
- "Microsoft.Extensions.Configuration.Binder": "10.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.7",
- "Microsoft.Extensions.Options": "10.0.7",
- "Microsoft.Extensions.Primitives": "10.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.8",
+ "Microsoft.Extensions.Primitives": "10.0.8"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "D5M0Jr551iTgwkZMN9rm0pSkgNLj5quUWQUmQPMZh7k/bnvZTnXRGfE2KuvXf1EEjt/ofD9yw9IumpgdP9QCnw=="
+ "resolved": "10.0.8",
+ "contentHash": "OBPo4nYhMyIbtueoC10CBm6AGAbo/A9IV8QQ/6ryZS7VvmqpGT7hunazeHLxFawRzn3oLOq4jhqhpBX4tfswWQ=="
},
"Microsoft.Identity.Client": {
"type": "Transitive",
@@ -599,6 +401,36 @@
"resolved": "1.0.0",
"contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug=="
},
+ "Microsoft.Testing.Extensions.Telemetry": {
+ "type": "Transitive",
+ "resolved": "1.9.1",
+ "contentHash": "No5AudZMmSb+uNXjlgL2y3/stHD2IT4uxqc5yHwkE+/nNux9jbKcaJMvcp9SwgP4DVD8L9/P3OUz8mmmcvEIdQ==",
+ "dependencies": {
+ "Microsoft.ApplicationInsights": "2.23.0",
+ "Microsoft.Testing.Platform": "1.9.1"
+ }
+ },
+ "Microsoft.Testing.Extensions.TrxReport.Abstractions": {
+ "type": "Transitive",
+ "resolved": "1.9.1",
+ "contentHash": "AL46Xe1WBi85Ntd4mNPvat5ZSsZ2uejiVqoKCypr8J3wK0elA5xJ3AN4G/Q4GIwzUFnggZoH/DBjnr9J18IO/g==",
+ "dependencies": {
+ "Microsoft.Testing.Platform": "1.9.1"
+ }
+ },
+ "Microsoft.Testing.Platform": {
+ "type": "Transitive",
+ "resolved": "1.9.1",
+ "contentHash": "QafNtNSmEI0zazdebnsIkDKmFtTSpmx/5PLOjURWwozcPb3tvRxzosQSL8xwYNM1iPhhKiBksXZyRSE2COisrA=="
+ },
+ "Microsoft.Testing.Platform.MSBuild": {
+ "type": "Transitive",
+ "resolved": "1.9.1",
+ "contentHash": "oTUtyR4X/s9ytuiNA29FGsNCCH0rNmY5Wdm14NCKLjTM1cT9edVSlA+rGS/mVmusPqcP0l/x9qOnMXg16v87RQ==",
+ "dependencies": {
+ "Microsoft.Testing.Platform": "1.9.1"
+ }
+ },
"Microsoft.TestPlatform.ObjectModel": {
"type": "Transitive",
"resolved": "18.5.1",
@@ -613,12 +445,17 @@
"Newtonsoft.Json": "13.0.3"
}
},
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg=="
+ },
"Microting.EntityFrameworkCore.MySql": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "FNohIzR0HuCsGNc8kHDeICt3cReGCGO0mZ5SOzcTlmZZgZux7GN/ekBcjGb2LwT81wJIi0R5Xh1xZrPXvF7m9A==",
+ "resolved": "10.0.8",
+ "contentHash": "vaxt+8dU7WODnxl5/2k4VH+LNgbQHk+yGIqWum619+6lICCmbLHyYyzqgJRGzic+Aeyh212TeH5fHklfXAjWVw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, 10.0.999]",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, 10.0.999]",
"MySqlConnector": "2.5.0"
}
},
@@ -664,8 +501,8 @@
},
"SonarAnalyzer.CSharp": {
"type": "Transitive",
- "resolved": "9.20.0.85982",
- "contentHash": "c0IYtFg4mYusTafTy0Bs5wev45vRKNShkuoWyQyPMbC6imEFHL7tY/7xbbUJd6JNLYx5vP8wyi2LgiBsMHqb2Q=="
+ "resolved": "9.32.0.97167",
+ "contentHash": "Yxk86RV+8ynJpUhku1Yw2hITFmnmXKkXJ73cIFSy85ol5SnWREQg9RuTyV8nI7V7+pyLKpCfRmD7P0widsgjkg=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
@@ -697,8 +534,8 @@
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "WbmDLeTPYhEzXhvYVioTVn/D1XX6bovyny9n5p8Zxtf03+eY385RB818teZm6n+fA63iZNvng0/Np4tLuhkMhQ=="
+ "resolved": "9.0.4",
+ "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ=="
},
"System.IdentityModel.Tokens.Jwt": {
"type": "Transitive",
@@ -732,44 +569,71 @@
"System.Security.Cryptography.Pkcs": "10.0.7"
}
},
- "xunit.abstractions": {
+ "xunit.analyzers": {
"type": "Transitive",
- "resolved": "2.0.3",
- "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg=="
+ "resolved": "1.27.0",
+ "contentHash": "y/pxIQaLvk/kxAoDkZW9GnHLCEqzwl5TW0vtX3pweyQpjizB9y3DXhb9pkw2dGeUqhLjsxvvJM1k89JowU6z3g=="
},
- "xunit.analyzers": {
+ "xunit.v3.assert": {
+ "type": "Transitive",
+ "resolved": "3.2.2",
+ "contentHash": "BPciBghgEEaJN/JG00QfCYDfEfnLgQhfnYEy+j1izoeHVNYd5+3Wm8GJ6JgYysOhpBPYGE+sbf75JtrRc7jrdA=="
+ },
+ "xunit.v3.common": {
+ "type": "Transitive",
+ "resolved": "3.2.2",
+ "contentHash": "Hj775PEH6GTbbg0wfKRvG2hNspDCvTH9irXhH4qIWgdrOSV1sQlqPie+DOvFeigsFg2fxSM3ZAaaCDQs+KreFA==",
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "6.0.0"
+ }
+ },
+ "xunit.v3.core.mtp-v1": {
"type": "Transitive",
- "resolved": "1.18.0",
- "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ=="
+ "resolved": "3.2.2",
+ "contentHash": "Ga5aA2Ca9ktz+5k3g5ukzwfexwoqwDUpV6z7atSEUvqtd6JuybU1XopHqg1oFd78QdTfZgZE9h5sHpO4qYIi5w==",
+ "dependencies": {
+ "Microsoft.Testing.Extensions.Telemetry": "1.9.1",
+ "Microsoft.Testing.Extensions.TrxReport.Abstractions": "1.9.1",
+ "Microsoft.Testing.Platform": "1.9.1",
+ "Microsoft.Testing.Platform.MSBuild": "1.9.1",
+ "xunit.v3.extensibility.core": "[3.2.2]",
+ "xunit.v3.runner.inproc.console": "[3.2.2]"
+ }
},
- "xunit.assert": {
+ "xunit.v3.extensibility.core": {
"type": "Transitive",
- "resolved": "2.9.3",
- "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA=="
+ "resolved": "3.2.2",
+ "contentHash": "srY8z/oMPvh/t8axtO2DwrHajhFMH7tnqKildvYrVQIfICi8fOn3yIBWkVPAcrKmHMwvXRJ/XsQM3VMR6DOYfQ==",
+ "dependencies": {
+ "xunit.v3.common": "[3.2.2]"
+ }
},
- "xunit.core": {
+ "xunit.v3.mtp-v1": {
"type": "Transitive",
- "resolved": "2.9.3",
- "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==",
+ "resolved": "3.2.2",
+ "contentHash": "O41aAzYKBT5PWqATa1oEWVNCyEUypFQ4va6K0kz37dduV3EKzXNMaV2UnEhufzU4Cce1I33gg0oldS8tGL5I0A==",
"dependencies": {
- "xunit.extensibility.core": "[2.9.3]",
- "xunit.extensibility.execution": "[2.9.3]"
+ "xunit.analyzers": "1.27.0",
+ "xunit.v3.assert": "[3.2.2]",
+ "xunit.v3.core.mtp-v1": "[3.2.2]"
}
},
- "xunit.extensibility.core": {
+ "xunit.v3.runner.common": {
"type": "Transitive",
- "resolved": "2.9.3",
- "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==",
+ "resolved": "3.2.2",
+ "contentHash": "/hkHkQCzGrugelOAehprm7RIWdsUFVmIVaD6jDH/8DNGCymTlKKPTbGokD5czbAfqfex47mBP0sb0zbHYwrO/g==",
"dependencies": {
- "xunit.abstractions": "2.0.3"
+ "Microsoft.Win32.Registry": "[5.0.0]",
+ "xunit.v3.common": "[3.2.2]"
}
},
- "xunit.extensibility.execution": {
+ "xunit.v3.runner.inproc.console": {
"type": "Transitive",
- "resolved": "2.9.3",
- "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==",
+ "resolved": "3.2.2",
+ "contentHash": "ulWOdSvCk+bPXijJZ73bth9NyoOHsAs1ZOvamYbCkD4DNLX/Bd29Ve2ZNUwBbK0MqfIYWXHZViy/HKrdEC/izw==",
"dependencies": {
- "xunit.extensibility.core": "[2.9.3]"
+ "xunit.v3.extensibility.core": "[3.2.2]",
+ "xunit.v3.runner.common": "[3.2.2]"
}
},
"TiCodeX.SQLSchemaCompare.Core": {
@@ -781,9 +645,9 @@
"TiCodeX.SQLSchemaCompare.Infrastructure": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, )",
- "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.7, )",
- "Microting.EntityFrameworkCore.MySql": "[10.0.7, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, )",
+ "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.8, )",
+ "Microting.EntityFrameworkCore.MySql": "[10.0.8, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )",
"TiCodeX.SQLSchemaCompare.Services": "[2026.5.1, )"
}
@@ -792,7 +656,7 @@
"type": "Project",
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[10.0.7, )",
+ "Microsoft.Extensions.Logging.Abstractions": "[10.0.8, )",
"Newtonsoft.Json": "[13.0.4, )",
"TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )"
}
@@ -821,10 +685,15 @@
"resolved": "6.0.2",
"contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w=="
},
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg=="
+ },
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "WbmDLeTPYhEzXhvYVioTVn/D1XX6bovyny9n5p8Zxtf03+eY385RB818teZm6n+fA63iZNvng0/Np4tLuhkMhQ=="
+ "resolved": "9.0.4",
+ "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ=="
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
@@ -855,10 +724,15 @@
"resolved": "6.0.2",
"contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w=="
},
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg=="
+ },
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "WbmDLeTPYhEzXhvYVioTVn/D1XX6bovyny9n5p8Zxtf03+eY385RB818teZm6n+fA63iZNvng0/Np4tLuhkMhQ=="
+ "resolved": "9.0.4",
+ "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ=="
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
@@ -889,10 +763,15 @@
"resolved": "6.0.2",
"contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w=="
},
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg=="
+ },
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "WbmDLeTPYhEzXhvYVioTVn/D1XX6bovyny9n5p8Zxtf03+eY385RB818teZm6n+fA63iZNvng0/Np4tLuhkMhQ=="
+ "resolved": "9.0.4",
+ "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ=="
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
@@ -923,10 +802,15 @@
"resolved": "6.0.2",
"contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w=="
},
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg=="
+ },
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "WbmDLeTPYhEzXhvYVioTVn/D1XX6bovyny9n5p8Zxtf03+eY385RB818teZm6n+fA63iZNvng0/Np4tLuhkMhQ=="
+ "resolved": "9.0.4",
+ "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ=="
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
@@ -957,10 +841,15 @@
"resolved": "6.0.2",
"contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w=="
},
+ "Microsoft.Win32.Registry": {
+ "type": "Transitive",
+ "resolved": "5.0.0",
+ "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg=="
+ },
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "WbmDLeTPYhEzXhvYVioTVn/D1XX6bovyny9n5p8Zxtf03+eY385RB818teZm6n+fA63iZNvng0/Np4tLuhkMhQ=="
+ "resolved": "9.0.4",
+ "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ=="
},
"System.Security.Cryptography.Pkcs": {
"type": "Transitive",
diff --git a/SQLSchemaCompare.UI/Middlewares/RequestValidatorMiddleware.cs b/SQLSchemaCompare.UI/Middlewares/RequestValidatorMiddleware.cs
index a9239d1..025103b 100644
--- a/SQLSchemaCompare.UI/Middlewares/RequestValidatorMiddleware.cs
+++ b/SQLSchemaCompare.UI/Middlewares/RequestValidatorMiddleware.cs
@@ -70,7 +70,10 @@ async Task InvokeAsyncInternal(HttpContext context)
}
else
{
- this.logger.LogError($"Request refused. Token:{authToken}; UserAgent:{userAgent}");
+ string sanitizedAuthToken = (authToken ?? string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty);
+ string sanitizedUserAgent = (userAgent ?? string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty);
+
+ this.logger.LogError("Request refused. Token:{Token}; UserAgent:{UserAgent}", sanitizedAuthToken, sanitizedUserAgent);
context.Response.Body = new MemoryStream(0);
}
}
diff --git a/SQLSchemaCompare.UI/Pages/Project/ProjectPageModel.cshtml.cs b/SQLSchemaCompare.UI/Pages/Project/ProjectPageModel.cshtml.cs
index 9de5b3b..75ea61c 100644
--- a/SQLSchemaCompare.UI/Pages/Project/ProjectPageModel.cshtml.cs
+++ b/SQLSchemaCompare.UI/Pages/Project/ProjectPageModel.cshtml.cs
@@ -142,30 +142,22 @@ public IActionResult OnPostLoadProject([FromBody] LoadProjectRequest req)
this.projectService.LoadProject(req.Filename);
}
- catch (InvalidOperationException ex)
- {
- this.logger.LogError(ex, $"Error loading project: {req.Filename}");
- return new JsonResult(new ApiResponse { Success = false, ErrorCode = EErrorCode.ErrorCannotLoadProject, ErrorMessage = string.Format(CultureInfo.InvariantCulture, Localization.ErrorLoadProjectInvalidProjectFile, this.appGlobals.ProductName) });
- }
- catch (FileNotFoundException ex)
- {
- this.logger.LogError(ex, $"Error loading project: {req.Filename}");
- return new JsonResult(new ApiResponse { Success = false, ErrorCode = EErrorCode.ErrorCannotLoadProject, ErrorMessage = Localization.ErrorLoadProjectFileNotFound });
- }
- catch (UnauthorizedAccessException ex)
- {
- this.logger.LogError(ex, $"Error loading project: {req.Filename}");
- return new JsonResult(new ApiResponse { Success = false, ErrorCode = EErrorCode.ErrorCannotLoadProject, ErrorMessage = Localization.ErrorLoadProjectUnauthorizedFileAccess });
- }
- catch (IOException ex)
- {
- this.logger.LogError(ex, $"Error loading project: {req.Filename}");
- return new JsonResult(new ApiResponse { Success = false, ErrorCode = EErrorCode.ErrorCannotLoadProject, ErrorMessage = string.Format(CultureInfo.InvariantCulture, Localization.ErrorLoadProjectIOError, ex.Message) });
- }
catch (Exception ex)
{
- this.logger.LogError(ex, $"Error loading project: {req.Filename}");
- return new JsonResult(new ApiResponse { Success = false, ErrorCode = EErrorCode.ErrorCannotLoadProject, ErrorMessage = string.Format(CultureInfo.InvariantCulture, Localization.ErrorLoadProject, ex.Message) });
+ this.logger.LogError(ex, "Error loading project: {Filename}", req.Filename);
+ return new JsonResult(new ApiResponse
+ {
+ Success = false,
+ ErrorCode = EErrorCode.ErrorCannotLoadProject,
+ ErrorMessage = ex switch
+ {
+ InvalidOperationException => string.Format(CultureInfo.InvariantCulture, Localization.ErrorLoadProjectInvalidProjectFile, this.appGlobals.ProductName),
+ FileNotFoundException => Localization.ErrorLoadProjectFileNotFound,
+ UnauthorizedAccessException => Localization.ErrorLoadProjectUnauthorizedFileAccess,
+ IOException => string.Format(CultureInfo.InvariantCulture, Localization.ErrorLoadProjectIOError, ex.Message),
+ _ => string.Format(CultureInfo.InvariantCulture, Localization.ErrorLoadProject, ex.Message),
+ },
+ });
}
var appSettings = this.appSettingsService.GetAppSettings();
@@ -409,7 +401,7 @@ private ADatabaseProviderOptions GetDatabaseProviderOptions(CompareProjectOption
Database = database,
};
default:
- this.logger.LogError($"Unknown Database type: {type}");
+ this.logger.LogError("Unknown Database type: {DatabaseType}", type);
throw new ArgumentException("Unknown Database type");
}
}
diff --git a/SQLSchemaCompare.UI/Pages/SettingsPageModel.cshtml.cs b/SQLSchemaCompare.UI/Pages/SettingsPageModel.cshtml.cs
index e17d17e..f5df10a 100644
--- a/SQLSchemaCompare.UI/Pages/SettingsPageModel.cshtml.cs
+++ b/SQLSchemaCompare.UI/Pages/SettingsPageModel.cshtml.cs
@@ -75,8 +75,8 @@ public ActionResult OnPostSave([FromBody] AppSettings settings)
ArgumentNullException.ThrowIfNull(settings);
this.logger.LogDebug("Saving settings...");
- this.logger.LogDebug($"LogLevel => {settings.LogLevel}");
- this.logger.LogDebug($"Language => {settings.Language}");
+ this.logger.LogDebug("LogLevel => {LogLevel}", settings.LogLevel);
+ this.logger.LogDebug("Language => {Language}", settings.Language);
var currentSettings = this.appSettingsService.GetAppSettings();
diff --git a/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj b/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj
index dfa45ef..e5be5ef 100644
--- a/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj
+++ b/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj
@@ -44,13 +44,13 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/SQLSchemaCompare.UI/WebServer/WebServerStartup.cs b/SQLSchemaCompare.UI/WebServer/WebServerStartup.cs
index 91fcf40..57cef29 100644
--- a/SQLSchemaCompare.UI/WebServer/WebServerStartup.cs
+++ b/SQLSchemaCompare.UI/WebServer/WebServerStartup.cs
@@ -84,8 +84,8 @@ public static void Configure(
localizationService.SetLanguage(appSettings.Language);
logger.LogDebug("Configuring WebHost...");
- logger.LogDebug($"LogLevel => {appSettings.LogLevel}");
- logger.LogDebug($"Language => {appSettings.Language}");
+ logger.LogDebug("LogLevel => {LogLevel}", appSettings.LogLevel);
+ logger.LogDebug("Language => {Language}", appSettings.Language);
app.UseStaticFiles();
app.UseExceptionHandler("/ErrorPage");
diff --git a/SQLSchemaCompare.UI/packages.lock.json b/SQLSchemaCompare.UI/packages.lock.json
index 50a715e..dc79b81 100644
--- a/SQLSchemaCompare.UI/packages.lock.json
+++ b/SQLSchemaCompare.UI/packages.lock.json
@@ -4,20 +4,20 @@
"net10.0": {
"Microsoft.AspNetCore.Mvc.NewtonsoftJson": {
"type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "z3aAaAEav7PYOLGRQfD9VuC20SFOoO1BgaTPXE20fOm85Uexml3zjY82srgH14frNhO3uNbu1UE5w3gt3KxWcQ==",
+ "requested": "[10.0.8, )",
+ "resolved": "10.0.8",
+ "contentHash": "LAZmDrEsExc11l7nyQ+efQHTKp4MOskAuPSgkW64LoxrJv2YnElc4IM1VGfIHNRspqVguO5TY5kz2YTRcNSHeQ==",
"dependencies": {
- "Microsoft.AspNetCore.JsonPatch": "10.0.7",
+ "Microsoft.AspNetCore.JsonPatch": "10.0.8",
"Newtonsoft.Json": "13.0.3",
"Newtonsoft.Json.Bson": "1.0.2"
}
},
"Microsoft.Extensions.FileProviders.Embedded": {
"type": "Direct",
- "requested": "[10.0.7, )",
- "resolved": "10.0.7",
- "contentHash": "Btm5vy3ZjIy4GwG5EGSnayiUrLeDsJ6n+RgaPs2xbjA53tXRTCtkZ9v086qHF71tJuVmQiJ8o0IXlm2XVibXJw=="
+ "requested": "[10.0.8, )",
+ "resolved": "10.0.8",
+ "contentHash": "Wv9s0rmrmUEma268HCqqcHGgJI30O9mqMxnORZ/QFxtbjoTFEuMvnqL2kIfbZcOGD6XF6II47Hc6YSff0jKGkw=="
},
"Microsoft.TypeScript.MSBuild": {
"type": "Direct",
@@ -27,11 +27,11 @@
},
"Neolution.CodeAnalysis": {
"type": "Direct",
- "requested": "[3.2.2, )",
- "resolved": "3.2.2",
- "contentHash": "9eBWPh7DNlBje/vH1q5Z4Q5FjwahYavPE2NsJO78IRcQ0xDrhor2FY8DxLA26BsweMqn4Ej0cN5dnyFexjl+ww==",
+ "requested": "[3.3.0-beta.2, )",
+ "resolved": "3.3.0-beta.2",
+ "contentHash": "88mG4f4P16K4Ql3uTqeaoeXGJLNMReFh9z3ZKmKZ0bY4RTk4z4syjuF/TefouGM2hR+mcBSdWbAtsKT/+FowlA==",
"dependencies": {
- "SonarAnalyzer.CSharp": "9.20.0.85982",
+ "SonarAnalyzer.CSharp": "9.32.0.97167",
"StyleCop.Analyzers.Unstable": "1.2.0.556"
}
},
@@ -81,8 +81,8 @@
},
"Microsoft.AspNetCore.JsonPatch": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "EKAXIhmjgUIz/y1IRGAKOfbJhkl/CXbeD6mn+f7mtn3cRSq+xBBYxsoXaF3Dob5J3LIGdiZumCmHV9MkO5P7lQ==",
+ "resolved": "10.0.8",
+ "contentHash": "xGMQwR06DxQSpSUdYvUPLQkjcQUAXnFIUbNoafAcLvUXDnmKNEuddxKvrGoWDT7svt90wWet2Xve5uacO/pVtw==",
"dependencies": {
"Newtonsoft.Json": "13.0.3"
}
@@ -120,38 +120,38 @@
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "G6yclVO5/csPzzsymV0SemY2NDqE31CP5M3jprF5IuO9wJsh4aUOfYD8HCLuDmM1D1CfReegVic48O2r79d46Q==",
+ "resolved": "10.0.8",
+ "contentHash": "EJx+fIBMgBlgD+ublKCn+GTOJkw3UqV7xOjYWBRVdUYyIm8UfvAsmSOPFiIInsWTHyMEYUJ9gCJY1jwX+6UB7w==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "10.0.7",
- "Microsoft.EntityFrameworkCore.Analyzers": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Abstractions": "10.0.8",
+ "Microsoft.EntityFrameworkCore.Analyzers": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "TuxExnfIS/bSq3z2CbH0LwZH1oyj9iHhSGneU4fpxl3ikjZGZdSae9gcfnImV1rufH8f/ab1NnHwyL2BLyeZOg=="
+ "resolved": "10.0.8",
+ "contentHash": "jbKDXWPZQhuPHygMnwzNOqxBADVcpRVytcKYZsA++QqhPkpF93Ta8o5mbJQGrARSjlkr9WtOaADV97EDMOZ7DA=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "eZnMyiJzo249Ejg5CaFScvJS0u7neQfS9DXknAHTO6FHVMM99gO0byNXHGZmA/BOkZ13ngeVziQLHTMOtgescg=="
+ "resolved": "10.0.8",
+ "contentHash": "M3BZ8JH8rB6BE7dO2g9iVbrHLnEz9wMXT6q+tDR6Nq3gyP3KmBj5OTiZGxyF3vesjOQNKanYoPGSNBR4kR2llg=="
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "midwPufIwXhOJcVhaZpCZGNbjy2QoPfHI+70nw2dGcoULEW9DybMvMPYkRjOJV0eI46a1oVFhU4lFYDEx6YUbg==",
+ "resolved": "10.0.8",
+ "contentHash": "UU3diAD2wwZveye2rnrwaF/wvJ9tm5iL2fuY9TTap6/iGQK1OO29M1BzXZRlRPVH/dByt5w/pISBSFtyR7hTqw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "10.0.7"
+ "Microsoft.EntityFrameworkCore": "10.0.8"
}
},
"Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "jci/dpjLIZyrp0Kbt0kr1lh+7BXbJ3wNk+vTwS/Se65grEJSBC+eE2UAQsi/xSNB5lHP2dysyOMHugkpFwQwNA==",
+ "resolved": "10.0.8",
+ "contentHash": "A+FLIsTH9l5DG2iD6QW6Mfwlvr+BjWme/jJ2hvwmmENTr7lR1UWmgCtKCjDYcHxqdAD15bb4PgQnSzw12DV/pw==",
"dependencies": {
"Microsoft.Data.SqlClient": "6.1.1",
- "Microsoft.EntityFrameworkCore.Relational": "10.0.7"
+ "Microsoft.EntityFrameworkCore.Relational": "10.0.8"
}
},
"Microsoft.Identity.Client": {
@@ -224,10 +224,10 @@
},
"Microting.EntityFrameworkCore.MySql": {
"type": "Transitive",
- "resolved": "10.0.7",
- "contentHash": "FNohIzR0HuCsGNc8kHDeICt3cReGCGO0mZ5SOzcTlmZZgZux7GN/ekBcjGb2LwT81wJIi0R5Xh1xZrPXvF7m9A==",
+ "resolved": "10.0.8",
+ "contentHash": "vaxt+8dU7WODnxl5/2k4VH+LNgbQHk+yGIqWum619+6lICCmbLHyYyzqgJRGzic+Aeyh212TeH5fHklfXAjWVw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, 10.0.999]",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, 10.0.999]",
"MySqlConnector": "2.5.0"
}
},
@@ -274,8 +274,8 @@
},
"SonarAnalyzer.CSharp": {
"type": "Transitive",
- "resolved": "9.20.0.85982",
- "contentHash": "c0IYtFg4mYusTafTy0Bs5wev45vRKNShkuoWyQyPMbC6imEFHL7tY/7xbbUJd6JNLYx5vP8wyi2LgiBsMHqb2Q=="
+ "resolved": "9.32.0.97167",
+ "contentHash": "Yxk86RV+8ynJpUhku1Yw2hITFmnmXKkXJ73cIFSy85ol5SnWREQg9RuTyV8nI7V7+pyLKpCfRmD7P0widsgjkg=="
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
@@ -336,9 +336,9 @@
"TiCodeX.SQLSchemaCompare.Infrastructure": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.7, )",
- "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.7, )",
- "Microting.EntityFrameworkCore.MySql": "[10.0.7, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.8, )",
+ "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.8, )",
+ "Microting.EntityFrameworkCore.MySql": "[10.0.8, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )",
"TiCodeX.SQLSchemaCompare.Services": "[2026.5.1, )"
}