diff --git a/WCTDataMiner.slnx b/WCTDataMiner.slnx
new file mode 100644
index 0000000..4a1eeea
--- /dev/null
+++ b/WCTDataMiner.slnx
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/WCTDataMiner/Configuration/AppSettings.cs b/src/WCTDataMiner.Core/Configuration/AppSettings.cs
similarity index 95%
rename from src/WCTDataMiner/Configuration/AppSettings.cs
rename to src/WCTDataMiner.Core/Configuration/AppSettings.cs
index fd532e5..4582b46 100644
--- a/src/WCTDataMiner/Configuration/AppSettings.cs
+++ b/src/WCTDataMiner.Core/Configuration/AppSettings.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Configuration;
+namespace WCTDataMiner.Core.Configuration;
///
/// 应用配置
diff --git a/src/WCTDataMiner/Data/Configurations/PlossRecordConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/PlossRecordConfiguration.cs
similarity index 97%
rename from src/WCTDataMiner/Data/Configurations/PlossRecordConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/PlossRecordConfiguration.cs
index 85fb8c7..7cf308e 100644
--- a/src/WCTDataMiner/Data/Configurations/PlossRecordConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/PlossRecordConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class PlossRecordConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/Configurations/QfodRecordConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/QfodRecordConfiguration.cs
similarity index 96%
rename from src/WCTDataMiner/Data/Configurations/QfodRecordConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/QfodRecordConfiguration.cs
index 565cc26..43a26c4 100644
--- a/src/WCTDataMiner/Data/Configurations/QfodRecordConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/QfodRecordConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class QfodRecordConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/Configurations/RxTypeConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/RxTypeConfiguration.cs
similarity index 92%
rename from src/WCTDataMiner/Data/Configurations/RxTypeConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/RxTypeConfiguration.cs
index bb81d29..849c2b2 100644
--- a/src/WCTDataMiner/Data/Configurations/RxTypeConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/RxTypeConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class RxTypeConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/Configurations/TestScenarioConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/TestScenarioConfiguration.cs
similarity index 97%
rename from src/WCTDataMiner/Data/Configurations/TestScenarioConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/TestScenarioConfiguration.cs
index 57ace69..0698299 100644
--- a/src/WCTDataMiner/Data/Configurations/TestScenarioConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/TestScenarioConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class TestScenarioConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/Configurations/TxHardwareConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/TxHardwareConfiguration.cs
similarity index 92%
rename from src/WCTDataMiner/Data/Configurations/TxHardwareConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/TxHardwareConfiguration.cs
index 8405e2a..fd643ce 100644
--- a/src/WCTDataMiner/Data/Configurations/TxHardwareConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/TxHardwareConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class TxHardwareConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/Configurations/TxPanelConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/TxPanelConfiguration.cs
similarity index 92%
rename from src/WCTDataMiner/Data/Configurations/TxPanelConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/TxPanelConfiguration.cs
index 9b9a768..6dbd13d 100644
--- a/src/WCTDataMiner/Data/Configurations/TxPanelConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/TxPanelConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class TxPanelConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/Configurations/TxSoftwareConfiguration.cs b/src/WCTDataMiner.Core/Data/Configurations/TxSoftwareConfiguration.cs
similarity index 92%
rename from src/WCTDataMiner/Data/Configurations/TxSoftwareConfiguration.cs
rename to src/WCTDataMiner.Core/Data/Configurations/TxSoftwareConfiguration.cs
index 144643b..2d454f4 100644
--- a/src/WCTDataMiner/Data/Configurations/TxSoftwareConfiguration.cs
+++ b/src/WCTDataMiner.Core/Data/Configurations/TxSoftwareConfiguration.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data.Configurations;
+namespace WCTDataMiner.Core.Data.Configurations;
public class TxSoftwareConfiguration : IEntityTypeConfiguration
{
diff --git a/src/WCTDataMiner/Data/DbContextFactory.cs b/src/WCTDataMiner.Core/Data/DbContextFactory.cs
similarity index 98%
rename from src/WCTDataMiner/Data/DbContextFactory.cs
rename to src/WCTDataMiner.Core/Data/DbContextFactory.cs
index 199a22e..526c555 100644
--- a/src/WCTDataMiner/Data/DbContextFactory.cs
+++ b/src/WCTDataMiner.Core/Data/DbContextFactory.cs
@@ -1,7 +1,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
-namespace WCTDataMiner.Data;
+namespace WCTDataMiner.Core.Data;
///
/// 数据库上下文工厂实现 - 支持SQLite和PostgreSQL切换
diff --git a/src/WCTDataMiner/Data/IDbContextFactory.cs b/src/WCTDataMiner.Core/Data/IDbContextFactory.cs
similarity index 80%
rename from src/WCTDataMiner/Data/IDbContextFactory.cs
rename to src/WCTDataMiner.Core/Data/IDbContextFactory.cs
index 5942d6b..2257625 100644
--- a/src/WCTDataMiner/Data/IDbContextFactory.cs
+++ b/src/WCTDataMiner.Core/Data/IDbContextFactory.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Data;
+namespace WCTDataMiner.Core.Data;
///
/// 数据库上下文工厂接口
diff --git a/src/WCTDataMiner/Data/SeedData.cs b/src/WCTDataMiner.Core/Data/SeedData.cs
similarity index 92%
rename from src/WCTDataMiner/Data/SeedData.cs
rename to src/WCTDataMiner.Core/Data/SeedData.cs
index afe650c..f715393 100644
--- a/src/WCTDataMiner/Data/SeedData.cs
+++ b/src/WCTDataMiner.Core/Data/SeedData.cs
@@ -1,6 +1,6 @@
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data;
+namespace WCTDataMiner.Core.Data;
///
/// 初始数据种子
diff --git a/src/WCTDataMiner/Data/WctMinerDbContext.cs b/src/WCTDataMiner.Core/Data/WctMinerDbContext.cs
similarity index 93%
rename from src/WCTDataMiner/Data/WctMinerDbContext.cs
rename to src/WCTDataMiner.Core/Data/WctMinerDbContext.cs
index 53550c9..ac410a7 100644
--- a/src/WCTDataMiner/Data/WctMinerDbContext.cs
+++ b/src/WCTDataMiner.Core/Data/WctMinerDbContext.cs
@@ -1,7 +1,7 @@
using Microsoft.EntityFrameworkCore;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Data;
+namespace WCTDataMiner.Core.Data;
///
/// WCT数据采集数据库上下文
diff --git a/src/WCTDataMiner/Extensions/ServiceCollectionExtensions.cs b/src/WCTDataMiner.Core/Extensions/ServiceCollectionExtensions.cs
similarity index 91%
rename from src/WCTDataMiner/Extensions/ServiceCollectionExtensions.cs
rename to src/WCTDataMiner.Core/Extensions/ServiceCollectionExtensions.cs
index 8b82175..629f3c8 100644
--- a/src/WCTDataMiner/Extensions/ServiceCollectionExtensions.cs
+++ b/src/WCTDataMiner.Core/Extensions/ServiceCollectionExtensions.cs
@@ -1,10 +1,10 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
-using WCTDataMiner.Data;
-using WCTDataMiner.Parsers;
-using WCTDataMiner.Services;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Parsers;
+using WCTDataMiner.Core.Services;
-namespace WCTDataMiner.Extensions;
+namespace WCTDataMiner.Core.Extensions;
///
/// 服务注册扩展
@@ -51,4 +51,4 @@ public static class ServiceCollectionExtensions
return services;
}
-}
\ No newline at end of file
+}
diff --git a/src/WCTDataMiner/Models/PlossRecord.cs b/src/WCTDataMiner.Core/Models/PlossRecord.cs
similarity index 97%
rename from src/WCTDataMiner/Models/PlossRecord.cs
rename to src/WCTDataMiner.Core/Models/PlossRecord.cs
index 556f8e5..161e3e8 100644
--- a/src/WCTDataMiner/Models/PlossRecord.cs
+++ b/src/WCTDataMiner.Core/Models/PlossRecord.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// Ploss记录实体 - 存储Ploss FOD格式解析数据
diff --git a/src/WCTDataMiner/Models/QfodRecord.cs b/src/WCTDataMiner.Core/Models/QfodRecord.cs
similarity index 94%
rename from src/WCTDataMiner/Models/QfodRecord.cs
rename to src/WCTDataMiner.Core/Models/QfodRecord.cs
index 87948d7..983b03c 100644
--- a/src/WCTDataMiner/Models/QfodRecord.cs
+++ b/src/WCTDataMiner.Core/Models/QfodRecord.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// Qfod记录实体 - 存储Qfod格式解析数据
diff --git a/src/WCTDataMiner/Models/RxType.cs b/src/WCTDataMiner.Core/Models/RxType.cs
similarity index 91%
rename from src/WCTDataMiner/Models/RxType.cs
rename to src/WCTDataMiner.Core/Models/RxType.cs
index 2b16e20..ec15f2e 100644
--- a/src/WCTDataMiner/Models/RxType.cs
+++ b/src/WCTDataMiner.Core/Models/RxType.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// RX类型维度表
diff --git a/src/WCTDataMiner/Models/TestScenario.cs b/src/WCTDataMiner.Core/Models/TestScenario.cs
similarity index 96%
rename from src/WCTDataMiner/Models/TestScenario.cs
rename to src/WCTDataMiner.Core/Models/TestScenario.cs
index 859e0ea..dde7190 100644
--- a/src/WCTDataMiner/Models/TestScenario.cs
+++ b/src/WCTDataMiner.Core/Models/TestScenario.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// 测试场景实体 - 通过外键关联各维度表
diff --git a/src/WCTDataMiner/Models/TxHardware.cs b/src/WCTDataMiner.Core/Models/TxHardware.cs
similarity index 91%
rename from src/WCTDataMiner/Models/TxHardware.cs
rename to src/WCTDataMiner.Core/Models/TxHardware.cs
index 7e1641a..d6415b3 100644
--- a/src/WCTDataMiner/Models/TxHardware.cs
+++ b/src/WCTDataMiner.Core/Models/TxHardware.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// TX硬件版本维度表
diff --git a/src/WCTDataMiner/Models/TxPanel.cs b/src/WCTDataMiner.Core/Models/TxPanel.cs
similarity index 91%
rename from src/WCTDataMiner/Models/TxPanel.cs
rename to src/WCTDataMiner.Core/Models/TxPanel.cs
index d1ba1a7..7635b76 100644
--- a/src/WCTDataMiner/Models/TxPanel.cs
+++ b/src/WCTDataMiner.Core/Models/TxPanel.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// TX面板类型维度表
diff --git a/src/WCTDataMiner/Models/TxSoftware.cs b/src/WCTDataMiner.Core/Models/TxSoftware.cs
similarity index 91%
rename from src/WCTDataMiner/Models/TxSoftware.cs
rename to src/WCTDataMiner.Core/Models/TxSoftware.cs
index a3976dc..1c22c8b 100644
--- a/src/WCTDataMiner/Models/TxSoftware.cs
+++ b/src/WCTDataMiner.Core/Models/TxSoftware.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Models;
+namespace WCTDataMiner.Core.Models;
///
/// TX软件版本维度表
diff --git a/src/WCTDataMiner/Parsers/FileNameParser.cs b/src/WCTDataMiner.Core/Parsers/FileNameParser.cs
similarity index 98%
rename from src/WCTDataMiner/Parsers/FileNameParser.cs
rename to src/WCTDataMiner.Core/Parsers/FileNameParser.cs
index 86fc74f..27884dd 100644
--- a/src/WCTDataMiner/Parsers/FileNameParser.cs
+++ b/src/WCTDataMiner.Core/Parsers/FileNameParser.cs
@@ -1,6 +1,6 @@
using System.Globalization;
-namespace WCTDataMiner.Parsers;
+namespace WCTDataMiner.Core.Parsers;
///
/// 文件名解析器 - 从文件名提取场景信息
diff --git a/src/WCTDataMiner/Parsers/IParser.cs b/src/WCTDataMiner.Core/Parsers/IParser.cs
similarity index 96%
rename from src/WCTDataMiner/Parsers/IParser.cs
rename to src/WCTDataMiner.Core/Parsers/IParser.cs
index 7910e15..1ccdb4a 100644
--- a/src/WCTDataMiner/Parsers/IParser.cs
+++ b/src/WCTDataMiner.Core/Parsers/IParser.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Parsers;
+namespace WCTDataMiner.Core.Parsers;
///
/// 通用解析器接口
diff --git a/src/WCTDataMiner/Parsers/PlossParser.cs b/src/WCTDataMiner.Core/Parsers/PlossParser.cs
similarity index 96%
rename from src/WCTDataMiner/Parsers/PlossParser.cs
rename to src/WCTDataMiner.Core/Parsers/PlossParser.cs
index 55a8a6f..9fb11ed 100644
--- a/src/WCTDataMiner/Parsers/PlossParser.cs
+++ b/src/WCTDataMiner.Core/Parsers/PlossParser.cs
@@ -1,7 +1,7 @@
using System.Text.RegularExpressions;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Parsers;
+namespace WCTDataMiner.Core.Parsers;
///
/// Ploss FOD日志解析器
diff --git a/src/WCTDataMiner/Parsers/QfodParser.cs b/src/WCTDataMiner.Core/Parsers/QfodParser.cs
similarity index 95%
rename from src/WCTDataMiner/Parsers/QfodParser.cs
rename to src/WCTDataMiner.Core/Parsers/QfodParser.cs
index 90d2b0d..c85e31c 100644
--- a/src/WCTDataMiner/Parsers/QfodParser.cs
+++ b/src/WCTDataMiner.Core/Parsers/QfodParser.cs
@@ -1,7 +1,7 @@
using System.Text.RegularExpressions;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Parsers;
+namespace WCTDataMiner.Core.Parsers;
///
/// Qfod日志解析器
diff --git a/src/WCTDataMiner/Services/CleanService.cs b/src/WCTDataMiner.Core/Services/CleanService.cs
similarity index 95%
rename from src/WCTDataMiner/Services/CleanService.cs
rename to src/WCTDataMiner.Core/Services/CleanService.cs
index 2a15bec..68fd667 100644
--- a/src/WCTDataMiner/Services/CleanService.cs
+++ b/src/WCTDataMiner.Core/Services/CleanService.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
-using WCTDataMiner.Data;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 数据清理服务 - 支持软删除
diff --git a/src/WCTDataMiner/Services/DimensionService.cs b/src/WCTDataMiner.Core/Services/DimensionService.cs
similarity index 95%
rename from src/WCTDataMiner/Services/DimensionService.cs
rename to src/WCTDataMiner.Core/Services/DimensionService.cs
index 0aada21..5bdf9d9 100644
--- a/src/WCTDataMiner/Services/DimensionService.cs
+++ b/src/WCTDataMiner.Core/Services/DimensionService.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
-using WCTDataMiner.Data;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 维度表管理服务 - 负责维度表的CRUD操作
diff --git a/src/WCTDataMiner/Services/ExportService.cs b/src/WCTDataMiner.Core/Services/ExportService.cs
similarity index 98%
rename from src/WCTDataMiner/Services/ExportService.cs
rename to src/WCTDataMiner.Core/Services/ExportService.cs
index f6f4a0f..e33da3f 100644
--- a/src/WCTDataMiner/Services/ExportService.cs
+++ b/src/WCTDataMiner.Core/Services/ExportService.cs
@@ -2,10 +2,10 @@ using System.Globalization;
using System.Text;
using System.Text.Json;
using Microsoft.EntityFrameworkCore;
-using WCTDataMiner.Data;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 数据导出服务
diff --git a/src/WCTDataMiner/Services/ParseService.cs b/src/WCTDataMiner.Core/Services/ParseService.cs
similarity index 84%
rename from src/WCTDataMiner/Services/ParseService.cs
rename to src/WCTDataMiner.Core/Services/ParseService.cs
index f031fdf..9a11bf2 100644
--- a/src/WCTDataMiner/Services/ParseService.cs
+++ b/src/WCTDataMiner.Core/Services/ParseService.cs
@@ -1,11 +1,11 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
-using Serilog;
-using WCTDataMiner.Data;
-using WCTDataMiner.Models;
-using WCTDataMiner.Parsers;
+using Microsoft.Extensions.Logging;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Models;
+using WCTDataMiner.Core.Parsers;
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 解析流程协调服务 - 协调文件名解析、行解析、批量写入
@@ -17,6 +17,7 @@ public class ParseService
private readonly QfodParser _qfodParser;
private readonly PlossParser _plossParser;
private readonly FileNameParser _fileNameParser;
+ private readonly ILogger _logger;
private readonly int _batchSize;
public ParseService(
@@ -25,13 +26,15 @@ public class ParseService
QfodParser qfodParser,
PlossParser plossParser,
FileNameParser fileNameParser,
- IConfiguration config)
+ IConfiguration config,
+ ILogger logger)
{
_context = context;
_scenarioService = scenarioService;
_qfodParser = qfodParser;
_plossParser = plossParser;
_fileNameParser = fileNameParser;
+ _logger = logger;
_batchSize = config.GetValue("Parser:BatchSize", 1000);
}
@@ -44,7 +47,7 @@ public class ParseService
if (!fileInfo.Exists)
{
- Log.Error("文件不存在: {FilePath}", filePath);
+ _logger.LogError("文件不存在: {FilePath}", filePath);
return new ParseReport(fileInfo.Name, 0, 0, 0, "文件不存在");
}
@@ -52,11 +55,11 @@ public class ParseService
var scenarioInfo = _fileNameParser.Parse(fileInfo.Name);
if (scenarioInfo == null)
{
- Log.Error("无法解析文件名: {FileName}", fileInfo.Name);
+ _logger.LogError("无法解析文件名: {FileName}", fileInfo.Name);
return new ParseReport(fileInfo.Name, 0, 0, 1, "文件名格式不匹配");
}
- Log.Information("解析文件: {FileName} => 场景: {TxPanel}/{TxHardware}/{TxSoftware}/{RxType}/{TestDate}",
+ _logger.LogInformation("解析文件: {FileName} => 场景: {TxPanel}/{TxHardware}/{TxSoftware}/{RxType}/{TestDate}",
fileInfo.Name, scenarioInfo.TxPanel, scenarioInfo.TxHardware,
scenarioInfo.TxSoftware, scenarioInfo.RxType, scenarioInfo.TestDate);
@@ -82,7 +85,7 @@ public class ParseService
qfodRecords.Add(result.Record!);
else
{
- Log.Error("Qfod解析失败 [{Line}] {Error}: {Message}",
+ _logger.LogError("Qfod解析失败 [{Line}] {Error}: {Message}",
lineNumber, result.ErrorType, result.ErrorMessage);
errorCount++;
}
@@ -94,7 +97,7 @@ public class ParseService
plossRecords.Add(result.Record!);
else
{
- Log.Error("Ploss解析失败 [{Line}] {Error}: {Message}",
+ _logger.LogError("Ploss解析失败 [{Line}] {Error}: {Message}",
lineNumber, result.ErrorType, result.ErrorMessage);
errorCount++;
}
@@ -107,7 +110,7 @@ public class ParseService
// 更新场景统计
await UpdateScenarioStatsAsync(scenario.Id, qfodRecords.Count, plossRecords.Count);
- Log.Information("解析完成: {FileName} => Qfod: {QfodCount}, Ploss: {PlossCount}, Errors: {ErrorCount}",
+ _logger.LogInformation("解析完成: {FileName} => Qfod: {QfodCount}, Ploss: {PlossCount}, Errors: {ErrorCount}",
fileInfo.Name, qfodRecords.Count, plossRecords.Count, errorCount);
return new ParseReport(fileInfo.Name, qfodRecords.Count, plossRecords.Count, errorCount, null);
@@ -121,14 +124,14 @@ public class ParseService
var dirInfo = new DirectoryInfo(dirPath);
if (!dirInfo.Exists)
{
- Log.Error("目录不存在: {DirPath}", dirPath);
+ _logger.LogError("目录不存在: {DirPath}", dirPath);
return [new ParseReport(dirPath, 0, 0, 0, "目录不存在")];
}
var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
var logFiles = dirInfo.GetFiles("*.log", searchOption);
- Log.Information("发现 {FileCount} 个日志文件", logFiles.Length);
+ _logger.LogInformation("发现 {FileCount} 个日志文件", logFiles.Length);
var reports = new List();
foreach (var file in logFiles)
diff --git a/src/WCTDataMiner/Services/ScenarioService.cs b/src/WCTDataMiner.Core/Services/ScenarioService.cs
similarity index 94%
rename from src/WCTDataMiner/Services/ScenarioService.cs
rename to src/WCTDataMiner.Core/Services/ScenarioService.cs
index a3bfa77..ee8fc98 100644
--- a/src/WCTDataMiner/Services/ScenarioService.cs
+++ b/src/WCTDataMiner.Core/Services/ScenarioService.cs
@@ -1,9 +1,9 @@
using Microsoft.EntityFrameworkCore;
-using WCTDataMiner.Data;
-using WCTDataMiner.Models;
-using WCTDataMiner.Parsers;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Models;
+using WCTDataMiner.Core.Parsers;
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 测试场景服务 - 负责测试场景的创建和查询
diff --git a/src/WCTDataMiner/Services/StatsService.cs b/src/WCTDataMiner.Core/Services/StatsService.cs
similarity index 97%
rename from src/WCTDataMiner/Services/StatsService.cs
rename to src/WCTDataMiner.Core/Services/StatsService.cs
index 6cfd31c..8e12b2e 100644
--- a/src/WCTDataMiner/Services/StatsService.cs
+++ b/src/WCTDataMiner.Core/Services/StatsService.cs
@@ -1,8 +1,8 @@
using Microsoft.EntityFrameworkCore;
-using WCTDataMiner.Data;
-using WCTDataMiner.Models;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Models;
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 统计查询服务
diff --git a/src/WCTDataMiner/Services/ThresholdCalculator.cs b/src/WCTDataMiner.Core/Services/ThresholdCalculator.cs
similarity index 97%
rename from src/WCTDataMiner/Services/ThresholdCalculator.cs
rename to src/WCTDataMiner.Core/Services/ThresholdCalculator.cs
index a599907..de3d227 100644
--- a/src/WCTDataMiner/Services/ThresholdCalculator.cs
+++ b/src/WCTDataMiner.Core/Services/ThresholdCalculator.cs
@@ -1,4 +1,4 @@
-namespace WCTDataMiner.Services;
+namespace WCTDataMiner.Core.Services;
///
/// 阈值计算器 - 根据接收功率查表获取动态阈值
diff --git a/src/WCTDataMiner.Core/WCTDataMiner.Core.csproj b/src/WCTDataMiner.Core/WCTDataMiner.Core.csproj
new file mode 100644
index 0000000..a0bbb19
--- /dev/null
+++ b/src/WCTDataMiner.Core/WCTDataMiner.Core.csproj
@@ -0,0 +1,23 @@
+
+
+
+ net8.0
+ enable
+ enable
+ 12.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/WCTDataMiner.Wpf/App.xaml b/src/WCTDataMiner.Wpf/App.xaml
new file mode 100644
index 0000000..ebfa722
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/App.xaml.cs b/src/WCTDataMiner.Wpf/App.xaml.cs
new file mode 100644
index 0000000..be0ab14
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/App.xaml.cs
@@ -0,0 +1,52 @@
+using System.Windows;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using WCTDataMiner.Core.Extensions;
+using WCTDataMiner.Core.Services;
+using WCTDataMiner.Wpf.ViewModels;
+using WCTDataMiner.Wpf.Views;
+
+namespace WCTDataMiner.Wpf;
+
+///
+/// Interaction logic for App.xaml
+///
+public partial class App : Application
+{
+ private IHost? _host;
+
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ _host = Host.CreateDefaultBuilder()
+ .ConfigureServices((context, services) =>
+ {
+ // 注册 Core 层服务
+ services.AddDatabaseServices(context.Configuration);
+ services.AddApplicationServices();
+
+ // 注册 ViewModels
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+
+ // 注册 Views
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ })
+ .Build();
+
+ var mainWindow = _host.Services.GetRequiredService();
+ mainWindow.Show();
+
+ base.OnStartup(e);
+ }
+
+ protected override void OnExit(ExitEventArgs e)
+ {
+ _host?.Dispose();
+ base.OnExit(e);
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/AssemblyInfo.cs b/src/WCTDataMiner.Wpf/AssemblyInfo.cs
new file mode 100644
index 0000000..cc29e7f
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly:ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
diff --git a/src/WCTDataMiner.Wpf/MainWindow.xaml b/src/WCTDataMiner.Wpf/MainWindow.xaml
new file mode 100644
index 0000000..a7f7e16
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/MainWindow.xaml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/MainWindow.xaml.cs b/src/WCTDataMiner.Wpf/MainWindow.xaml.cs
new file mode 100644
index 0000000..ef13ab8
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/MainWindow.xaml.cs
@@ -0,0 +1,23 @@
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace WCTDataMiner.Wpf;
+
+///
+/// Interaction logic for MainWindow.xaml
+///
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/ViewModels/MainViewModel.cs b/src/WCTDataMiner.Wpf/ViewModels/MainViewModel.cs
new file mode 100644
index 0000000..d6ec4fa
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/ViewModels/MainViewModel.cs
@@ -0,0 +1,54 @@
+using CommunityToolkit.Mvvm.ComponentModel;
+using CommunityToolkit.Mvvm.Input;
+
+namespace WCTDataMiner.Wpf.ViewModels;
+
+///
+/// 主窗口 ViewModel - 导航控制
+///
+public partial class MainViewModel : ObservableObject
+{
+ [ObservableProperty]
+ private ObservableObject _currentView = null!;
+
+ [ObservableProperty]
+ private string? _selectedTxPanel;
+
+ [ObservableProperty]
+ private string? _selectedTxHardware;
+
+ [ObservableProperty]
+ private string? _selectedTxSoftware;
+
+ [ObservableProperty]
+ private string? _selectedRxType;
+
+ // 筛选选项列表
+ public List TxPanels { get; } = new() { "全部", "singleMold", "dualMold" };
+ public List TxHardwares { get; } = new() { "全部", "v1.0", "v2.0" };
+ public List TxSoftwares { get; } = new() { "全部", "hex2_1", "hex2_2" };
+ public List RxTypes { get; } = new() { "全部", "iPhone15", "iPhone16", "Android" };
+
+ public MainViewModel()
+ {
+ _currentView = new ScenarioListViewModel();
+ }
+
+ [RelayCommand]
+ private void NavigateToScenarios()
+ {
+ CurrentView = new ScenarioListViewModel();
+ }
+
+ [RelayCommand]
+ private void NavigateToPlossChart(int scenarioId)
+ {
+ CurrentView = new PlossChartViewModel { ScenarioId = scenarioId };
+ }
+
+ [RelayCommand]
+ private void NavigateToQfodChart(int scenarioId)
+ {
+ CurrentView = new QfodChartViewModel { ScenarioId = scenarioId };
+ }
+}
diff --git a/src/WCTDataMiner.Wpf/ViewModels/PlossChartViewModel.cs b/src/WCTDataMiner.Wpf/ViewModels/PlossChartViewModel.cs
new file mode 100644
index 0000000..cd822a6
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/ViewModels/PlossChartViewModel.cs
@@ -0,0 +1,49 @@
+using CommunityToolkit.Mvvm.ComponentModel;
+using LiveChartsCore;
+using LiveChartsCore.SkiaSharpView;
+
+namespace WCTDataMiner.Wpf.ViewModels;
+
+///
+/// Ploss 折线图 ViewModel
+///
+public partial class PlossChartViewModel : ObservableObject
+{
+ [ObservableProperty]
+ private int _scenarioId;
+
+ [ObservableProperty]
+ private ISeries[] _series;
+
+ [ObservableProperty]
+ private Axis[] _xAxes;
+
+ [ObservableProperty]
+ private Axis[] _yAxes;
+
+ public PlossChartViewModel()
+ {
+ // 初始化图表配置
+ Series = Array.Empty();
+ XAxes = new Axis[] { new Axis { Name = "Trigger Count" } };
+ YAxes = new Axis[] { new Axis { Name = "Power Loss (mW)" } };
+ }
+
+ public async Task LoadDataAsync()
+ {
+ // TODO: 从数据库加载 Ploss 数据并构建图表
+ Series = new ISeries[]
+ {
+ new LineSeries
+ {
+ Name = "Ploss",
+ Values = new double[] { -2882, -3500, -4200, -3800, -4500 }
+ },
+ new LineSeries
+ {
+ Name = "Threshold",
+ Values = new double[] { -3000, -3000, -3000, -3000, -3000 }
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/ViewModels/QfodChartViewModel.cs b/src/WCTDataMiner.Wpf/ViewModels/QfodChartViewModel.cs
new file mode 100644
index 0000000..91e9b30
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/ViewModels/QfodChartViewModel.cs
@@ -0,0 +1,49 @@
+using CommunityToolkit.Mvvm.ComponentModel;
+using LiveChartsCore;
+using LiveChartsCore.SkiaSharpView;
+
+namespace WCTDataMiner.Wpf.ViewModels;
+
+///
+/// Qfod 折线图 ViewModel
+///
+public partial class QfodChartViewModel : ObservableObject
+{
+ [ObservableProperty]
+ private int _scenarioId;
+
+ [ObservableProperty]
+ private ISeries[] _series;
+
+ [ObservableProperty]
+ private Axis[] _xAxes;
+
+ [ObservableProperty]
+ private Axis[] _yAxes;
+
+ public QfodChartViewModel()
+ {
+ // 初始化图表配置
+ Series = Array.Empty();
+ XAxes = new Axis[] { new Axis { Name = "Coil Index" } };
+ YAxes = new Axis[] { new Axis { Name = "Q Value" } };
+ }
+
+ public async Task LoadDataAsync()
+ {
+ // TODO: 从数据库加载 Qfod 数据并构建图表
+ Series = new ISeries[]
+ {
+ new LineSeries
+ {
+ Name = "DeltaQ",
+ Values = new double[] { 25, 30, 28 }
+ },
+ new LineSeries
+ {
+ Name = "CurrentQ",
+ Values = new double[] { 45.5, 50.2, 48.8 }
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/ViewModels/ScenarioListViewModel.cs b/src/WCTDataMiner.Wpf/ViewModels/ScenarioListViewModel.cs
new file mode 100644
index 0000000..fbc0cd1
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/ViewModels/ScenarioListViewModel.cs
@@ -0,0 +1,36 @@
+using CommunityToolkit.Mvvm.ComponentModel;
+
+namespace WCTDataMiner.Wpf.ViewModels;
+
+///
+/// 场景列表 ViewModel
+///
+public partial class ScenarioListViewModel : ObservableObject
+{
+ [ObservableProperty]
+ private List _scenarios;
+
+ [ObservableProperty]
+ private ScenarioItem? _selectedScenario;
+
+ public ScenarioListViewModel()
+ {
+ // TODO: 从数据库加载场景列表
+ _scenarios = new List();
+ }
+}
+
+///
+/// 场景项数据模型
+///
+public class ScenarioItem
+{
+ public int Id { get; set; }
+ public string TxPanel { get; set; } = "";
+ public string TxHardware { get; set; } = "";
+ public string TxSoftware { get; set; } = "";
+ public string RxType { get; set; } = "";
+ public string TestDate { get; set; } = "";
+ public int QfodCount { get; set; }
+ public int PlossCount { get; set; }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/Views/PlossChartView.xaml b/src/WCTDataMiner.Wpf/Views/PlossChartView.xaml
new file mode 100644
index 0000000..6fae7bc
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/Views/PlossChartView.xaml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/Views/PlossChartView.xaml.cs b/src/WCTDataMiner.Wpf/Views/PlossChartView.xaml.cs
new file mode 100644
index 0000000..0338e98
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/Views/PlossChartView.xaml.cs
@@ -0,0 +1,18 @@
+using System.Windows.Controls;
+
+namespace WCTDataMiner.Wpf.Views;
+
+public partial class PlossChartView : UserControl
+{
+ public PlossChartView()
+ {
+ InitializeComponent();
+ Loaded += async (s, e) =>
+ {
+ if (DataContext is ViewModels.PlossChartViewModel vm)
+ {
+ await vm.LoadDataAsync();
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/Views/QfodChartView.xaml b/src/WCTDataMiner.Wpf/Views/QfodChartView.xaml
new file mode 100644
index 0000000..6947d4c
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/Views/QfodChartView.xaml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/Views/QfodChartView.xaml.cs b/src/WCTDataMiner.Wpf/Views/QfodChartView.xaml.cs
new file mode 100644
index 0000000..7fceded
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/Views/QfodChartView.xaml.cs
@@ -0,0 +1,18 @@
+using System.Windows.Controls;
+
+namespace WCTDataMiner.Wpf.Views;
+
+public partial class QfodChartView : UserControl
+{
+ public QfodChartView()
+ {
+ InitializeComponent();
+ Loaded += async (s, e) =>
+ {
+ if (DataContext is ViewModels.QfodChartViewModel vm)
+ {
+ await vm.LoadDataAsync();
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/Views/ScenarioListView.xaml b/src/WCTDataMiner.Wpf/Views/ScenarioListView.xaml
new file mode 100644
index 0000000..1f57c9f
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/Views/ScenarioListView.xaml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/Views/ScenarioListView.xaml.cs b/src/WCTDataMiner.Wpf/Views/ScenarioListView.xaml.cs
new file mode 100644
index 0000000..95662b6
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/Views/ScenarioListView.xaml.cs
@@ -0,0 +1,30 @@
+using System.Windows;
+using System.Windows.Controls;
+
+namespace WCTDataMiner.Wpf.Views;
+
+public partial class ScenarioListView : UserControl
+{
+ public ScenarioListView()
+ {
+ InitializeComponent();
+ }
+
+ private void OnViewPlossChart(object sender, RoutedEventArgs e)
+ {
+ // TODO: 导航到 Ploss 图表页面
+ if (DataContext is ViewModels.ScenarioListViewModel vm && vm.SelectedScenario != null)
+ {
+ // Navigation logic
+ }
+ }
+
+ private void OnViewQfodChart(object sender, RoutedEventArgs e)
+ {
+ // TODO: 导航到 Qfod 图表页面
+ if (DataContext is ViewModels.ScenarioListViewModel vm && vm.SelectedScenario != null)
+ {
+ // Navigation logic
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/WCTDataMiner.Wpf/WCTDataMiner.Wpf.csproj b/src/WCTDataMiner.Wpf/WCTDataMiner.Wpf.csproj
new file mode 100644
index 0000000..419e5fc
--- /dev/null
+++ b/src/WCTDataMiner.Wpf/WCTDataMiner.Wpf.csproj
@@ -0,0 +1,29 @@
+
+
+
+ WinExe
+ net8.0-windows
+ enable
+ enable
+ true
+ 12.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/WCTDataMiner/Commands/CleanCommand.cs b/src/WCTDataMiner/Commands/CleanCommand.cs
index 3691b0c..0b9da7c 100644
--- a/src/WCTDataMiner/Commands/CleanCommand.cs
+++ b/src/WCTDataMiner/Commands/CleanCommand.cs
@@ -1,5 +1,5 @@
using System.CommandLine;
-using WCTDataMiner.Services;
+using WCTDataMiner.Core.Services;
namespace WCTDataMiner.Commands;
diff --git a/src/WCTDataMiner/Commands/ExportCommand.cs b/src/WCTDataMiner/Commands/ExportCommand.cs
index fcde7ca..54c87e9 100644
--- a/src/WCTDataMiner/Commands/ExportCommand.cs
+++ b/src/WCTDataMiner/Commands/ExportCommand.cs
@@ -1,5 +1,5 @@
using System.CommandLine;
-using WCTDataMiner.Services;
+using WCTDataMiner.Core.Services;
namespace WCTDataMiner.Commands;
diff --git a/src/WCTDataMiner/Commands/ParseCommand.cs b/src/WCTDataMiner/Commands/ParseCommand.cs
index 7a7a588..18b9504 100644
--- a/src/WCTDataMiner/Commands/ParseCommand.cs
+++ b/src/WCTDataMiner/Commands/ParseCommand.cs
@@ -1,5 +1,5 @@
using System.CommandLine;
-using WCTDataMiner.Services;
+using WCTDataMiner.Core.Services;
namespace WCTDataMiner.Commands;
diff --git a/src/WCTDataMiner/Commands/StatsCommand.cs b/src/WCTDataMiner/Commands/StatsCommand.cs
index 63fcdd3..2bd3eeb 100644
--- a/src/WCTDataMiner/Commands/StatsCommand.cs
+++ b/src/WCTDataMiner/Commands/StatsCommand.cs
@@ -1,5 +1,5 @@
using System.CommandLine;
-using WCTDataMiner.Services;
+using WCTDataMiner.Core.Services;
namespace WCTDataMiner.Commands;
diff --git a/src/WCTDataMiner/Program.cs b/src/WCTDataMiner/Program.cs
index d4400a3..e989910 100644
--- a/src/WCTDataMiner/Program.cs
+++ b/src/WCTDataMiner/Program.cs
@@ -4,9 +4,9 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
using WCTDataMiner.Commands;
-using WCTDataMiner.Data;
-using WCTDataMiner.Extensions;
-using WCTDataMiner.Services;
+using WCTDataMiner.Core.Data;
+using WCTDataMiner.Core.Extensions;
+using WCTDataMiner.Core.Services;
namespace WCTDataMiner;
diff --git a/src/WCTDataMiner/WCTDataMiner.csproj b/src/WCTDataMiner/WCTDataMiner.csproj
index c1be1f2..216640c 100644
--- a/src/WCTDataMiner/WCTDataMiner.csproj
+++ b/src/WCTDataMiner/WCTDataMiner.csproj
@@ -9,15 +9,6 @@
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
@@ -34,10 +25,14 @@
+
+
+
+
PreserveNewest
-
\ No newline at end of file
+