初始化
Some checks failed
CI/CD Pipeline / 测试 (18.x) (push) Has been cancelled
CI/CD Pipeline / 测试 (20.x) (push) Has been cancelled
CI/CD Pipeline / 安全检查 (push) Has been cancelled
CI/CD Pipeline / 部署 (push) Has been cancelled
CI/CD Pipeline / 通知 (push) Has been cancelled

This commit is contained in:
2025-11-03 19:47:36 +08:00
parent 7a04b85667
commit f25b0307db
454 changed files with 37064 additions and 4544 deletions

View File

@@ -3,15 +3,6 @@ using HardwarePerformance.Core.Entities;
namespace HardwarePerformance.Infrastructure.Data
{
/// <summary>
/// 基础实体类
/// </summary>
public abstract class BaseEntity
{
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
/// <summary>
/// 应用程序数据库上下文
/// </summary>

View File

@@ -51,19 +51,19 @@ namespace HardwarePerformance.Infrastructure.Data
{
Name = "Geekbench",
Description = "跨平台处理器和内存性能测试工具",
ApiUrl = "https://browser.geekbench.com/"
Url = "https://browser.geekbench.com/"
},
new DataSource
{
Name = "3DMark",
Description = "游戏和图形性能基准测试工具",
ApiUrl = "https://www.3dmark.com/"
Url = "https://www.3dmark.com/"
},
new DataSource
{
Name = "AnTuTu",
Description = "移动设备综合性能测试平台",
ApiUrl = "https://www.antutu.com/"
Url = "https://www.antutu.com/"
}
};
@@ -126,7 +126,7 @@ namespace HardwarePerformance.Infrastructure.Data
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
BenchmarkType = "Single-Core",
TestName = "Single-Core",
Score = cpu.Name.Contains("A17") ? 2950 : cpu.Name.Contains("Snapdragon") ? 2300 : 2200,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
@@ -135,7 +135,7 @@ namespace HardwarePerformance.Infrastructure.Data
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
BenchmarkType = "Multi-Core",
TestName = "Multi-Core",
Score = cpu.Name.Contains("A17") ? 7200 : cpu.Name.Contains("Snapdragon") ? 7400 : 7500,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
@@ -154,14 +154,14 @@ namespace HardwarePerformance.Infrastructure.Data
specifications.Add(new Specification
{
ProductId = cpu.Id,
Key = "制程工艺",
Name = "制程工艺",
Value = "3nm",
Unit = "nm"
});
specifications.Add(new Specification
{
ProductId = cpu.Id,
Key = "核心数",
Name = "核心数",
Value = "6",
Unit = "核"
});
@@ -171,14 +171,14 @@ namespace HardwarePerformance.Infrastructure.Data
specifications.Add(new Specification
{
ProductId = cpu.Id,
Key = "制程工艺",
Name = "制程工艺",
Value = "4nm",
Unit = "nm"
});
specifications.Add(new Specification
{
ProductId = cpu.Id,
Key = "核心数",
Name = "核心数",
Value = "8",
Unit = "核"
});
@@ -188,14 +188,14 @@ namespace HardwarePerformance.Infrastructure.Data
specifications.Add(new Specification
{
ProductId = cpu.Id,
Key = "制程工艺",
Name = "制程工艺",
Value = "4nm",
Unit = "nm"
});
specifications.Add(new Specification
{
ProductId = cpu.Id,
Key = "核心数",
Name = "核心数",
Value = "8",
Unit = "核"
});
@@ -242,7 +242,7 @@ namespace HardwarePerformance.Infrastructure.Data
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
BenchmarkType = "Single-Core",
TestName = "Single-Core",
Score = cpu.Name.Contains("Intel") ? 3200 : 2300,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id
@@ -251,7 +251,7 @@ namespace HardwarePerformance.Infrastructure.Data
performanceScores.Add(new PerformanceScore
{
ProductId = cpu.Id,
BenchmarkType = "Multi-Core",
TestName = "Multi-Core",
Score = cpu.Name.Contains("Intel") ? 22000 : 30000,
TestDate = DateTime.Now,
DataSourceId = geekbenchSource.Id

View File

@@ -1,226 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace HardwarePerformance.Infrastructure.Data.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Categories",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Name = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false),
Description = table.Column<string>(type: "text", nullable: true),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Categories", x => x.Id);
});
migrationBuilder.CreateTable(
name: "DataSources",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Name = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false),
Description = table.Column<string>(type: "text", nullable: true),
ApiUrl = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_DataSources", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Products",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Name = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false),
Model = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false),
Manufacturer = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false),
ReleaseDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
ImageUrl = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true),
CategoryId = table.Column<int>(type: "int", nullable: false),
CurrentRank = table.Column<int>(type: "int", nullable: true),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Products", x => x.Id);
table.ForeignKey(
name: "FK_Products_Categories_CategoryId",
column: x => x.CategoryId,
principalTable: "Categories",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "PerformanceScores",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
ProductId = table.Column<int>(type: "int", nullable: false),
BenchmarkType = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false),
Score = table.Column<decimal>(type: "decimal(10,2)", nullable: false),
TestDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
DataSourceId = table.Column<int>(type: "int", nullable: false),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_PerformanceScores", x => x.Id);
table.ForeignKey(
name: "FK_PerformanceScores_DataSources_DataSourceId",
column: x => x.DataSourceId,
principalTable: "DataSources",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_PerformanceScores_Products_ProductId",
column: x => x.ProductId,
principalTable: "Products",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "RankingHistories",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
ProductId = table.Column<int>(type: "int", nullable: false),
Rank = table.Column<int>(type: "int", nullable: false),
CategoryId = table.Column<int>(type: "int", nullable: false),
RecordDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_RankingHistories", x => x.Id);
table.ForeignKey(
name: "FK_RankingHistories_Categories_CategoryId",
column: x => x.CategoryId,
principalTable: "Categories",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_RankingHistories_Products_ProductId",
column: x => x.ProductId,
principalTable: "Products",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Specifications",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
ProductId = table.Column<int>(type: "int", nullable: false),
Key = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false),
Value = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: false),
Unit = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Specifications", x => x.Id);
table.ForeignKey(
name: "FK_Specifications_Products_ProductId",
column: x => x.ProductId,
principalTable: "Products",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_PerformanceScores_BenchmarkType",
table: "PerformanceScores",
column: "BenchmarkType");
migrationBuilder.CreateIndex(
name: "IX_PerformanceScores_ProductId",
table: "PerformanceScores",
column: "ProductId");
migrationBuilder.CreateIndex(
name: "IX_Products_CategoryId",
table: "Products",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_Products_Manufacturer",
table: "Products",
column: "Manufacturer");
migrationBuilder.CreateIndex(
name: "IX_Products_Model",
table: "Products",
column: "Model");
migrationBuilder.CreateIndex(
name: "IX_Products_Name",
table: "Products",
column: "Name");
migrationBuilder.CreateIndex(
name: "IX_RankingHistories_CategoryId",
table: "RankingHistories",
column: "CategoryId");
migrationBuilder.CreateIndex(
name: "IX_RankingHistories_ProductId",
table: "RankingHistories",
column: "ProductId");
migrationBuilder.CreateIndex(
name: "IX_Specifications_ProductId",
table: "Specifications",
column: "ProductId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "PerformanceScores");
migrationBuilder.DropTable(
name: "RankingHistories");
migrationBuilder.DropTable(
name: "Specifications");
migrationBuilder.DropTable(
name: "DataSources");
migrationBuilder.DropTable(
name: "Products");
migrationBuilder.DropTable(
name: "Categories");
}
}
}

View File

@@ -1,315 +0,0 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using HardwarePerformance.Infrastructure.Data;
#nullable disable
namespace HardwarePerformance.Infrastructure.Data.Migrations
{
[DbContext(typeof(AppDbContext))]
partial class AppDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
MySqlModelBuilderExtensions.UseCollation(modelBuilder, "utf8mb4_0900_ai_ci");
modelBuilder.Entity("HardwarePerformance.Core.Entities.Category", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<string>("Description")
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.ToTable("Categories");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.DataSource", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("ApiUrl")
.HasMaxLength(500)
.HasColumnType("varchar(500)");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<string>("Description")
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.ToTable("DataSources");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.PerformanceScore", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("BenchmarkType")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<int>("DataSourceId")
.HasColumnType("int");
b.Property<int>("ProductId")
.HasColumnType("int");
b.Property<decimal>("Score")
.HasColumnType("decimal(10,2)");
b.Property<DateTime>("TestDate")
.HasColumnType("datetime(6)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.HasIndex("BenchmarkType");
b.HasIndex("ProductId");
b.ToTable("PerformanceScores");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.Product", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("CategoryId")
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<string>("ImageUrl")
.HasMaxLength(500)
.HasColumnType("varchar(500)");
b.Property<string>("Manufacturer")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("Model")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("varchar(200)");
b.Property<int?>("CurrentRank")
.HasColumnType("int");
b.Property<DateTime>("ReleaseDate")
.HasColumnType("datetime(6)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.HasIndex("CategoryId");
b.HasIndex("Manufacturer");
b.HasIndex("Model");
b.HasIndex("Name");
b.ToTable("Products");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.RankingHistory", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("CategoryId")
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<int>("ProductId")
.HasColumnType("int");
b.Property<int>("Rank")
.HasColumnType("int");
b.Property<DateTime>("RecordDate")
.HasColumnType("datetime(6)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.HasIndex("CategoryId");
b.HasIndex("ProductId");
b.ToTable("RankingHistories");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.Specification", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<string>("Key")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("varchar(100)");
b.Property<int>("ProductId")
.HasColumnType("int");
b.Property<string>("Unit")
.HasMaxLength(50)
.HasColumnType("varchar(50)");
b.Property<string>("Value")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("varchar(500)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.HasIndex("ProductId");
b.ToTable("Specifications");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.PerformanceScore", b =>
{
b.HasOne("HardwarePerformance.Core.Entities.DataSource", "DataSource")
.WithMany()
.HasForeignKey("DataSourceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("HardwarePerformance.Core.Entities.Product", "Product")
.WithMany("PerformanceScores")
.HasForeignKey("ProductId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("DataSource");
b.Navigation("Product");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.Product", b =>
{
b.HasOne("HardwarePerformance.Core.Entities.Category", "Category")
.WithMany("Products")
.HasForeignKey("CategoryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Category");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.RankingHistory", b =>
{
b.HasOne("HardwarePerformance.Core.Entities.Category", "Category")
.WithMany()
.HasForeignKey("CategoryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("HardwarePerformance.Core.Entities.Product", "Product")
.WithMany("RankingHistories")
.HasForeignKey("ProductId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Category");
b.Navigation("Product");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.Specification", b =>
{
b.HasOne("HardwarePerformance.Core.Entities.Product", "Product")
.WithMany("Specifications")
.HasForeignKey("ProductId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Product");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.Category", b =>
{
b.Navigation("Products");
});
modelBuilder.Entity("HardwarePerformance.Core.Entities.Product", b =>
{
b.Navigation("PerformanceScores");
b.Navigation("RankingHistories");
b.Navigation("Specifications");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -1,6 +1,7 @@
using System.Data;
using MySql.Data.MySqlClient;
using HardwarePerformance.Core.Entities;
using Microsoft.Extensions.Configuration;
namespace HardwarePerformance.Infrastructure.Data;
@@ -202,4 +203,63 @@ public class SimpleAppDbContext
cmd.CommandText = insertSpecifications;
await cmd.ExecuteNonQueryAsync();
}
public async Task<List<object>> GetCategoriesAsync()
{
var categories = new List<object>();
using var connection = new MySqlConnection(_connectionString);
await connection.OpenAsync();
using var cmd = new MySqlCommand("SELECT * FROM Categories", connection);
using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
categories.Add(new
{
Id = reader.GetInt32("Id"),
Name = reader.GetString("Name"),
Description = reader.IsDBNull("Description") ? null : reader.GetString("Description"),
CreatedAt = reader.GetDateTime("CreatedAt")
});
}
return categories;
}
public async Task<List<object>> GetProductsAsync(int categoryId = 0, int page = 1, int pageSize = 10)
{
var products = new List<object>();
using var connection = new MySqlConnection(_connectionString);
await connection.OpenAsync();
var offset = (page - 1) * pageSize;
var query = categoryId > 0
? $"SELECT p.*, c.Name as CategoryName FROM Products p LEFT JOIN Categories c ON p.CategoryId = c.Id WHERE p.CategoryId = {categoryId} LIMIT {pageSize} OFFSET {offset}"
: $"SELECT p.*, c.Name as CategoryName FROM Products p LEFT JOIN Categories c ON p.CategoryId = c.Id LIMIT {pageSize} OFFSET {offset}";
using var cmd = new MySqlCommand(query, connection);
using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
products.Add(new
{
Id = reader.GetInt32("Id"),
Name = reader.GetString("Name"),
Model = reader.IsDBNull("Model") ? null : reader.GetString("Model"),
Manufacturer = reader.IsDBNull("Manufacturer") ? null : reader.GetString("Manufacturer"),
ImageUrl = reader.IsDBNull("ImageUrl") ? null : reader.GetString("ImageUrl"),
ReleaseDate = reader.IsDBNull("ReleaseDate") ? (DateTime?)null : reader.GetDateTime("ReleaseDate"),
CategoryId = reader.IsDBNull("CategoryId") ? (int?)null : reader.GetInt32("CategoryId"),
CategoryName = reader.IsDBNull("CategoryName") ? null : reader.GetString("CategoryName"),
CurrentRank = reader.IsDBNull("CurrentRank") ? (int?)null : reader.GetInt32("CurrentRank"),
CreatedAt = reader.GetDateTime("CreatedAt")
});
}
return products;
}
}

View File

@@ -6,10 +6,15 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" />
<PackageReference Include="MySql.Data" Version="9.0.0" />
<PackageReference Include="StackExchange.Redis" Version="2.7.27" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\HardwarePerformance.Core\HardwarePerformance.Core.csproj" />
<ProjectReference Include="..\HardwarePerformance.Application\HardwarePerformance.Application.csproj" />
</ItemGroup>
<PropertyGroup>

View File

@@ -0,0 +1,50 @@
using Microsoft.EntityFrameworkCore;
using HardwarePerformance.Application.Interfaces;
using HardwarePerformance.Core.Entities;
using HardwarePerformance.Infrastructure.Data;
namespace HardwarePerformance.Infrastructure.Repositories
{
/// <summary>
/// 类别Repository实现
/// </summary>
public class CategoryRepository : Repository<Category>, ICategoryRepository
{
public CategoryRepository(AppDbContext context) : base(context)
{
}
public async Task<Category?> GetByNameAsync(string name)
{
return await _dbSet
.FirstOrDefaultAsync(c => c.Name == name);
}
public async Task<IEnumerable<Category>> GetCategoriesWithProductCountAsync()
{
return await _dbSet
.Include(c => c.Products)
.Select(c => new Category
{
Id = c.Id,
Name = c.Name,
Description = c.Description,
IconUrl = c.IconUrl,
Products = new List<Product>() // 不加载实际产品,只用于计数
})
.ToListAsync();
}
public async Task<bool> IsNameExistsAsync(string name, int? excludeId = null)
{
var query = _dbSet.Where(c => c.Name == name);
if (excludeId.HasValue)
{
query = query.Where(c => c.Id != excludeId.Value);
}
return await query.AnyAsync();
}
}
}

View File

@@ -0,0 +1,235 @@
using Microsoft.EntityFrameworkCore;
using HardwarePerformance.Application.Interfaces;
using HardwarePerformance.Core.Entities;
using HardwarePerformance.Infrastructure.Data;
namespace HardwarePerformance.Infrastructure.Repositories
{
/// <summary>
/// 产品Repository实现
/// </summary>
public class ProductRepository : Repository<Product>, IProductRepository
{
public ProductRepository(AppDbContext context) : base(context)
{
}
public async Task<(IEnumerable<Product> products, int totalCount)> GetByCategoryAsync(
int categoryId,
int pageNumber = 1,
int pageSize = 20,
string sortBy = "CurrentRank",
bool ascending = true)
{
var query = _dbSet
.Include(p => p.Category)
.Include(p => p.PerformanceScores)
.Where(p => p.CategoryId == categoryId);
// 排序
query = ApplySorting(query, sortBy, ascending);
var totalCount = await query.CountAsync();
var products = await query
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
return (products, totalCount);
}
public async Task<Product?> GetByModelAsync(string model)
{
return await _dbSet
.Include(p => p.Category)
.Include(p => p.PerformanceScores)
.FirstOrDefaultAsync(p => p.Model == model);
}
public async Task<IEnumerable<Product>> GetTopNByCategoryAsync(int categoryId, int n)
{
return await _dbSet
.Include(p => p.Category)
.Include(p => p.PerformanceScores)
.Where(p => p.CategoryId == categoryId)
.OrderBy(p => p.CurrentRank)
.Take(n)
.ToListAsync();
}
public async Task<(IEnumerable<Product> products, int totalCount)> SearchAsync(
string searchTerm,
int? categoryId = null,
int pageNumber = 1,
int pageSize = 20)
{
var query = _dbSet
.Include(p => p.Category)
.Include(p => p.PerformanceScores)
.Where(p =>
(string.IsNullOrEmpty(searchTerm) ||
p.Name.Contains(searchTerm) ||
p.Model.Contains(searchTerm) ||
p.Manufacturer.Contains(searchTerm)) &&
(!categoryId.HasValue || p.CategoryId == categoryId.Value));
var totalCount = await query.CountAsync();
var products = await query
.OrderBy(p => p.CurrentRank)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
return (products, totalCount);
}
public async Task<(IEnumerable<Product> products, int totalCount)> FilterAsync(
int categoryId,
int? minScore = null,
int? maxScore = null,
int? minYear = null,
int? maxYear = null,
string? manufacturer = null,
int pageNumber = 1,
int pageSize = 20)
{
var query = _dbSet
.Include(p => p.Category)
.Include(p => p.PerformanceScores)
.Where(p => p.CategoryId == categoryId);
// 性能分数筛选
if (minScore.HasValue)
{
query = query.Where(p => p.PerformanceScores.Any(ps => ps.Score >= minScore.Value));
}
if (maxScore.HasValue)
{
query = query.Where(p => p.PerformanceScores.Any(ps => ps.Score <= maxScore.Value));
}
// 发布年份筛选
if (minYear.HasValue)
{
query = query.Where(p => p.ReleaseDate.HasValue && p.ReleaseDate.Value.Year >= minYear.Value);
}
if (maxYear.HasValue)
{
query = query.Where(p => p.ReleaseDate.HasValue && p.ReleaseDate.Value.Year <= maxYear.Value);
}
// 品牌筛选
if (!string.IsNullOrEmpty(manufacturer))
{
query = query.Where(p => p.Manufacturer == manufacturer);
}
var totalCount = await query.CountAsync();
var products = await query
.OrderBy(p => p.CurrentRank)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
return (products, totalCount);
}
public async Task<Product?> GetWithDetailsAsync(int id)
{
return await _dbSet
.Include(p => p.Category)
.Include(p => p.Specifications)
.Include(p => p.PerformanceScores)
.ThenInclude(ps => ps.DataSource)
.Include(p => p.RankingHistories
.OrderByDescending(rh => rh.RecordDate)
.Take(12)) // 最近12个月的排名历史
.FirstOrDefaultAsync(p => p.Id == id);
}
public async Task<IEnumerable<Product>> GetByIdsAsync(IEnumerable<int> productIds)
{
return await _dbSet
.Include(p => p.Category)
.Include(p => p.Specifications)
.Include(p => p.PerformanceScores)
.ThenInclude(ps => ps.DataSource)
.Where(p => productIds.Contains(p.Id))
.ToListAsync();
}
public async Task<IEnumerable<string>> GetManufacturersAsync(int? categoryId = null)
{
var query = _dbSet.AsQueryable();
if (categoryId.HasValue)
{
query = query.Where(p => p.CategoryId == categoryId.Value);
}
return await query
.Where(p => !string.IsNullOrEmpty(p.Manufacturer))
.Select(p => p.Manufacturer)
.Distinct()
.OrderBy(m => m)
.ToListAsync();
}
public async Task<IEnumerable<RankingHistory>> GetRankingHistoryAsync(int productId, int months = 12)
{
var startDate = DateTime.UtcNow.AddMonths(-months);
return await _context.RankingHistories
.Where(rh => rh.ProductId == productId && rh.RecordDate >= startDate)
.OrderBy(rh => rh.RecordDate)
.ToListAsync();
}
public async Task<(IEnumerable<Product> products, int totalCount)> GetByManufacturerAsync(
string manufacturer,
int? categoryId = null,
int pageNumber = 1,
int pageSize = 20)
{
var query = _dbSet
.Include(p => p.Category)
.Include(p => p.PerformanceScores)
.Where(p => p.Manufacturer == manufacturer);
if (categoryId.HasValue)
{
query = query.Where(p => p.CategoryId == categoryId.Value);
}
var totalCount = await query.CountAsync();
var products = await query
.OrderBy(p => p.CurrentRank)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
return (products, totalCount);
}
private IQueryable<Product> ApplySorting(IQueryable<Product> query, string sortBy, bool ascending)
{
return sortBy.ToLower() switch
{
"name" => ascending ? query.OrderBy(p => p.Name) : query.OrderByDescending(p => p.Name),
"manufacturer" => ascending ? query.OrderBy(p => p.Manufacturer) : query.OrderByDescending(p => p.Manufacturer),
"releasedate" => ascending ? query.OrderBy(p => p.ReleaseDate) : query.OrderByDescending(p => p.ReleaseDate),
"currentrank" => ascending ? query.OrderBy(p => p.CurrentRank) : query.OrderByDescending(p => p.CurrentRank),
"score" => ascending ?
query.OrderBy(p => p.PerformanceScores.Any() ? p.PerformanceScores.Average(ps => ps.Score) : 0) :
query.OrderByDescending(p => p.PerformanceScores.Any() ? p.PerformanceScores.Average(ps => ps.Score) : 0),
_ => ascending ? query.OrderBy(p => p.CurrentRank) : query.OrderByDescending(p => p.CurrentRank)
};
}
}
}

View File

@@ -0,0 +1,91 @@
using Microsoft.EntityFrameworkCore;
using HardwarePerformance.Application.Interfaces;
using HardwarePerformance.Infrastructure.Data;
namespace HardwarePerformance.Infrastructure.Repositories
{
/// <summary>
/// 通用Repository基类实现基本的CRUD操作
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
public class Repository<T> : IRepository<T> where T : class
{
protected readonly AppDbContext _context;
protected readonly DbSet<T> _dbSet;
public Repository(AppDbContext context)
{
_context = context;
_dbSet = context.Set<T>();
}
public virtual async Task<T?> GetByIdAsync(int id)
{
return await _dbSet.FindAsync(id);
}
public virtual async Task<IEnumerable<T>> GetAllAsync()
{
return await _dbSet.ToListAsync();
}
public virtual async Task<IEnumerable<T>> FindAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return await _dbSet.Where(predicate).ToListAsync();
}
public virtual async Task<bool> ExistsAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return await _dbSet.AnyAsync(predicate);
}
public virtual async Task<T> AddAsync(T entity)
{
await _dbSet.AddAsync(entity);
await _context.SaveChangesAsync();
return entity;
}
public virtual async Task<IEnumerable<T>> AddRangeAsync(IEnumerable<T> entities)
{
await _dbSet.AddRangeAsync(entities);
await _context.SaveChangesAsync();
return entities;
}
public virtual async Task<T> UpdateAsync(T entity)
{
_dbSet.Update(entity);
await _context.SaveChangesAsync();
return entity;
}
public virtual async Task<bool> DeleteAsync(T entity)
{
_dbSet.Remove(entity);
await _context.SaveChangesAsync();
return true;
}
public virtual async Task<bool> DeleteByIdAsync(int id)
{
var entity = await GetByIdAsync(id);
if (entity == null)
{
return false;
}
return await DeleteAsync(entity);
}
public virtual async Task<int> CountAsync()
{
return await _dbSet.CountAsync();
}
public virtual async Task<int> CountAsync(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return await _dbSet.CountAsync(predicate);
}
}
}

View File

@@ -1,4 +1,6 @@
using StackExchange.Redis;
using Microsoft.Extensions.Logging;
using System.Text.Json;
namespace HardwarePerformance.Infrastructure.Services;

View File

@@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "net9.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "9.0.0"
},
"configProperties": {
"System.Reflection.NullabilityInfoContext.IsSupported": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@@ -1,10 +1,9 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
// This code was generated by a tool.
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
@@ -14,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("HardwarePerformance.Infrastructure")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7a04b856674d8e31e95655605d640e36e54e848a")]
[assembly: System.Reflection.AssemblyProductAttribute("HardwarePerformance.Infrastructure")]
[assembly: System.Reflection.AssemblyTitleAttribute("HardwarePerformance.Infrastructure")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@@ -1 +1 @@
1ef23de4e336eea01c33b39c99b91c4270cbe40a9e883f3a11996f68da9a0855
d7554d87611695c232a287a1b7d8d0e5582d71cb8867f711040df3d91ff79c9a

View File

@@ -1,14 +1,24 @@
is_global = true
build_property.TargetFramework = net9.0
build_property.TargetFramework = net9.0
build_property.TargetPlatformMinVersion =
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v9.0
build_property.RootNamespace = HardwarePerformance.Infrastructure
build_property.ProjectDir = C:\work\电脑硬件-01\backend\HardwarePerformance.Infrastructure\
build_property.ProjectDir = D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 9.0

View File

@@ -1,8 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;

View File

@@ -1 +1 @@
caf94e062580521c8dd2e44f4ece773de615e92af912cbbe4f50ec0e552135e2
8d8220281ced08823dd3e7dec2e8e310f93bd61f7432e31336c7f49035e8e8bc

View File

@@ -13,3 +13,22 @@ C:\work\电脑硬件-01\backend\HardwarePerformance.Infrastructure\obj\Debug\net
C:\work\电脑硬件-01\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\refint\HardwarePerformance.Infrastructure.dll
C:\work\电脑硬件-01\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.pdb
C:\work\电脑硬件-01\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\ref\HardwarePerformance.Infrastructure.dll
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.dll
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\refint\HardwarePerformance.Infrastructure.dll
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.pdb
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.csproj.AssemblyReference.cache
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.GeneratedMSBuildEditorConfig.editorconfig
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.AssemblyInfoInputs.cache
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.AssemblyInfo.cs
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.csproj.CoreCompileInputs.cache
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Infrastructure.deps.json
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Infrastructure.runtimeconfig.json
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Infrastructure.dll
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Infrastructure.pdb
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Application.dll
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Core.dll
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Core.pdb
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\bin\Debug\net9.0\HardwarePerformance.Application.pdb
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\Hardware.DD8A83DD.Up2Date
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\HardwarePerformance.Infrastructure.genruntimeconfig.cache
D:\work\Demo\it\it\backend\HardwarePerformance.Infrastructure\obj\Debug\net9.0\ref\HardwarePerformance.Infrastructure.dll

View File

@@ -0,0 +1 @@
2ba385f2ac0804b85ba290a606cc2f3c0f1aafd34ba7b26c04f962ebdc3db21b

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="GetEFProjectMetadata">
<MSBuild Condition=" '$(TargetFramework)' == '' "
Projects="$(MSBuildProjectFile)"
Targets="GetEFProjectMetadata"
Properties="TargetFramework=$(TargetFrameworks.Split(';')[0]);EFProjectMetadataFile=$(EFProjectMetadataFile)" />
<ItemGroup Condition=" '$(TargetFramework)' != '' ">
<EFProjectMetadata Include="AssemblyName: $(AssemblyName)" />
<EFProjectMetadata Include="Language: $(Language)" />
<EFProjectMetadata Include="OutputPath: $(OutputPath)" />
<EFProjectMetadata Include="Platform: $(Platform)" />
<EFProjectMetadata Include="PlatformTarget: $(PlatformTarget)" />
<EFProjectMetadata Include="ProjectAssetsFile: $(ProjectAssetsFile)" />
<EFProjectMetadata Include="ProjectDir: $(ProjectDir)" />
<EFProjectMetadata Include="RootNamespace: $(RootNamespace)" />
<EFProjectMetadata Include="RuntimeFrameworkVersion: $(RuntimeFrameworkVersion)" />
<EFProjectMetadata Include="TargetFileName: $(TargetFileName)" />
<EFProjectMetadata Include="TargetFrameworkMoniker: $(TargetFrameworkMoniker)" />
<EFProjectMetadata Include="Nullable: $(Nullable)" />
<EFProjectMetadata Include="TargetFramework: $(TargetFramework)" />
<EFProjectMetadata Include="TargetPlatformIdentifier: $(TargetPlatformIdentifier)" />
</ItemGroup>
<WriteLinesToFile Condition=" '$(TargetFramework)' != '' "
File="$(EFProjectMetadataFile)"
Lines="@(EFProjectMetadata)" />
</Target>
</Project>

View File

@@ -1,24 +1,24 @@
{
"format": 1,
"restore": {
"C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj": {}
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj": {}
},
"projects": {
"C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj": {
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Application\\HardwarePerformance.Application.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj",
"projectName": "HardwarePerformance.Core",
"projectPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj",
"packagesPath": "C:\\Users\\\\.nuget\\packages\\",
"outputPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Core\\obj\\",
"projectUniqueName": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Application\\HardwarePerformance.Application.csproj",
"projectName": "HardwarePerformance.Application",
"projectPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Application\\HardwarePerformance.Application.csproj",
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
"outputPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Application\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\work\\电脑硬件-01\\backend\\NuGet.Config",
"C:\\Users\\\\AppData\\Roaming\\NuGet\\NuGet.Config",
"D:\\work\\Demo\\it\\it\\backend\\NuGet.Config",
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
@@ -26,9 +26,94 @@
"net9.0"
],
"sources": {
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
"https://nuget.cdn.azure.cn/v3/index.json": {},
"https://packages.microsoft.com/index.json": {}
"https://nuget.cdn.azure.cn/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj": {
"projectPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "10.0.100"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[9.0.10, 9.0.10]"
},
{
"name": "Microsoft.NETCore.App.Ref",
"version": "[9.0.10, 9.0.10]"
},
{
"name": "Microsoft.WindowsDesktop.App.Ref",
"version": "[9.0.10, 9.0.10]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100-rc.2.25502.107/PortableRuntimeIdentifierGraph.json"
}
}
},
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj",
"projectName": "HardwarePerformance.Core",
"projectPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj",
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
"outputPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"D:\\work\\Demo\\it\\it\\backend\\NuGet.Config",
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
"https://nuget.cdn.azure.cn/v3/index.json": {}
},
"frameworks": {
"net9.0": {
@@ -46,7 +131,7 @@
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
"SdkAnalysisLevel": "10.0.100"
},
"frameworks": {
"net9.0": {
@@ -62,30 +147,44 @@
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[9.0.10, 9.0.10]"
},
{
"name": "Microsoft.NETCore.App.Ref",
"version": "[9.0.10, 9.0.10]"
},
{
"name": "Microsoft.WindowsDesktop.App.Ref",
"version": "[9.0.10, 9.0.10]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100-rc.2.25502.107/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj": {
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"projectUniqueName": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"projectName": "HardwarePerformance.Infrastructure",
"projectPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"packagesPath": "C:\\Users\\\\.nuget\\packages\\",
"outputPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\obj\\",
"projectPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
"outputPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Infrastructure\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\work\\电脑硬件-01\\backend\\NuGet.Config",
"C:\\Users\\\\AppData\\Roaming\\NuGet\\NuGet.Config",
"D:\\work\\Demo\\it\\it\\backend\\NuGet.Config",
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
@@ -93,16 +192,19 @@
"net9.0"
],
"sources": {
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
"https://nuget.cdn.azure.cn/v3/index.json": {},
"https://packages.microsoft.com/index.json": {}
"https://nuget.cdn.azure.cn/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj": {
"projectPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj"
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Application\\HardwarePerformance.Application.csproj": {
"projectPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Application\\HardwarePerformance.Application.csproj"
},
"D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj": {
"projectPath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Core\\HardwarePerformance.Core.csproj"
}
}
}
@@ -117,7 +219,7 @@
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
"SdkAnalysisLevel": "10.0.100"
},
"frameworks": {
"net9.0": {
@@ -135,6 +237,18 @@
"target": "Package",
"version": "[9.0.0, )"
},
"Microsoft.Extensions.Configuration.Abstractions": {
"target": "Package",
"version": "[9.0.0, )"
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"target": "Package",
"version": "[9.0.0, )"
},
"Microsoft.Extensions.Logging.Abstractions": {
"target": "Package",
"version": "[9.0.0, )"
},
"MySql.Data": {
"target": "Package",
"version": "[9.0.0, )"
@@ -142,6 +256,10 @@
"Pomelo.EntityFrameworkCore.MySql": {
"target": "Package",
"version": "[9.0.0, )"
},
"StackExchange.Redis": {
"target": "Package",
"version": "[2.7.27, )"
}
},
"imports": [
@@ -155,12 +273,26 @@
],
"assetTargetFallback": true,
"warn": true,
"downloadDependencies": [
{
"name": "Microsoft.AspNetCore.App.Ref",
"version": "[9.0.10, 9.0.10]"
},
{
"name": "Microsoft.NETCore.App.Ref",
"version": "[9.0.10, 9.0.10]"
},
{
"name": "Microsoft.WindowsDesktop.App.Ref",
"version": "[9.0.10, 9.0.10]"
}
],
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100-rc.2.25502.107/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@@ -5,12 +5,21 @@
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Administrator\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\\.nuget\packages\" />
<SourceRoot Include="C:\Users\Administrator\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\9.0.0\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\9.0.0\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.props" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\9.0.0\build\net8.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\9.0.0\build\net8.0\Microsoft.EntityFrameworkCore.Design.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\Administrator\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.4</PkgMicrosoft_CodeAnalysis_Analyzers>
<PkgMicrosoft_EntityFrameworkCore_Tools Condition=" '$(PkgMicrosoft_EntityFrameworkCore_Tools)' == '' ">C:\Users\Administrator\.nuget\packages\microsoft.entityframeworkcore.tools\9.0.0</PkgMicrosoft_EntityFrameworkCore_Tools>
</PropertyGroup>
</Project>

View File

@@ -1,2 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)system.text.json\9.0.0\buildTransitive\net8.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\9.0.0\buildTransitive\net8.0\System.Text.Json.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.0\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.0\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\9.0.0\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\9.0.0\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" />
<Import Project="$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets" Condition="Exists('$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
</ImportGroup>
</Project>

View File

@@ -1,27 +1,81 @@
{
"version": 2,
"dgSpecHash": "fC6gM55oPjY=",
"success": false,
"projectFilePath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"expectedPackageFiles": [],
"logs": [
{
"code": "NU1301",
"level": "Error",
"message": "无法加载源 https://nuget.cdn.azure.cn/v3/index.json 的服务索引。\r\n 不知道这样的主机。 (null:80)\r\n 不知道这样的主机。",
"projectPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"filePath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"libraryId": "Microsoft.EntityFrameworkCore.Design",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "无法加载源 https://nuget.cdn.azure.cn/v3/index.json 的服务索引。\r\n 不知道这样的主机。 (null:80)\r\n 不知道这样的主机。",
"projectPath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"filePath": "C:\\work\\电脑硬件-01\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"libraryId": "Microsoft.EntityFrameworkCore",
"targetGraphs": []
}
]
"dgSpecHash": "sERbqzpivow=",
"success": true,
"projectFilePath": "D:\\work\\Demo\\it\\it\\backend\\HardwarePerformance.Infrastructure\\HardwarePerformance.Infrastructure.csproj",
"expectedPackageFiles": [
"C:\\Users\\Administrator\\.nuget\\packages\\bouncycastle.cryptography\\2.3.1\\bouncycastle.cryptography.2.3.1.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\google.protobuf\\3.26.1\\google.protobuf.3.26.1.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\k4os.compression.lz4\\1.3.8\\k4os.compression.lz4.1.3.8.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\k4os.compression.lz4.streams\\1.3.8\\k4os.compression.lz4.streams.1.3.8.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\k4os.hash.xxhash\\1.0.8\\k4os.hash.xxhash.1.0.8.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\7.0.0\\microsoft.bcl.asyncinterfaces.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.build.framework\\17.8.3\\microsoft.build.framework.17.8.3.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.build.locator\\1.7.8\\microsoft.build.locator.1.7.8.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.4\\microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.codeanalysis.common\\4.8.0\\microsoft.codeanalysis.common.4.8.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.8.0\\microsoft.codeanalysis.csharp.4.8.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.8.0\\microsoft.codeanalysis.csharp.workspaces.4.8.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.8.0\\microsoft.codeanalysis.workspaces.common.4.8.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.codeanalysis.workspaces.msbuild\\4.8.0\\microsoft.codeanalysis.workspaces.msbuild.4.8.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.entityframeworkcore\\9.0.0\\microsoft.entityframeworkcore.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\9.0.0\\microsoft.entityframeworkcore.abstractions.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\9.0.0\\microsoft.entityframeworkcore.analyzers.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.entityframeworkcore.design\\9.0.0\\microsoft.entityframeworkcore.design.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\9.0.0\\microsoft.entityframeworkcore.relational.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.entityframeworkcore.tools\\9.0.0\\microsoft.entityframeworkcore.tools.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\9.0.0\\microsoft.extensions.caching.abstractions.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.caching.memory\\9.0.0\\microsoft.extensions.caching.memory.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\9.0.0\\microsoft.extensions.configuration.abstractions.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\9.0.0\\microsoft.extensions.dependencyinjection.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\9.0.0\\microsoft.extensions.dependencyinjection.abstractions.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.dependencymodel\\9.0.0\\microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.logging\\9.0.0\\microsoft.extensions.logging.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\9.0.0\\microsoft.extensions.logging.abstractions.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.options\\9.0.0\\microsoft.extensions.options.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.extensions.primitives\\9.0.0\\microsoft.extensions.primitives.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\mono.texttemplating\\3.0.0\\mono.texttemplating.3.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\mysql.data\\9.0.0\\mysql.data.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\mysqlconnector\\2.4.0\\mysqlconnector.2.4.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\9.0.0\\pomelo.entityframeworkcore.mysql.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\stackexchange.redis\\2.7.27\\stackexchange.redis.2.7.27.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.codedom\\6.0.0\\system.codedom.6.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.collections.immutable\\7.0.0\\system.collections.immutable.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.composition\\7.0.0\\system.composition.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.composition.attributedmodel\\7.0.0\\system.composition.attributedmodel.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.composition.convention\\7.0.0\\system.composition.convention.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.composition.hosting\\7.0.0\\system.composition.hosting.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.composition.runtime\\7.0.0\\system.composition.runtime.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.composition.typedparts\\7.0.0\\system.composition.typedparts.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.configuration.configurationmanager\\8.0.0\\system.configuration.configurationmanager.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.1\\system.diagnostics.diagnosticsource.8.0.1.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.0\\system.diagnostics.eventlog.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.io.pipelines\\7.0.0\\system.io.pipelines.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.reflection.metadata\\7.0.0\\system.reflection.metadata.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.runtime.loader\\4.3.0\\system.runtime.loader.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.security.cryptography.protecteddata\\8.0.0\\system.security.cryptography.protecteddata.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.security.permissions\\8.0.0\\system.security.permissions.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.text.encoding.codepages\\8.0.0\\system.text.encoding.codepages.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.text.json\\9.0.0\\system.text.json.9.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.threading.channels\\7.0.0\\system.threading.channels.7.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.windows.extensions\\8.0.0\\system.windows.extensions.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\zstdsharp.port\\0.8.0\\zstdsharp.port.0.8.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.netcore.app.ref\\9.0.10\\microsoft.netcore.app.ref.9.0.10.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.windowsdesktop.app.ref\\9.0.10\\microsoft.windowsdesktop.app.ref.9.0.10.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.aspnetcore.app.ref\\9.0.10\\microsoft.aspnetcore.app.ref.9.0.10.nupkg.sha512"
],
"logs": []
}