update:应用打包

This commit is contained in:
ltx 2026-06-22 09:20:20 +08:00
parent 02ace70937
commit 92df3bf9ba
31 changed files with 844 additions and 78 deletions

View File

@ -0,0 +1,189 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.StaticFiles;
using System.Runtime.Versioning;
using System.Text.Json;
using System.Windows.Forms;
namespace YD_TrainingCompetition_Api.Controllers;
// LibraryController 支持桌面端"用资源管理器选取任意赛事文件夹":
// - scan:按约定子目录扫描所选文件夹,返回其中的背景/口令/LOGO/秩序册资源
// - file:把磁盘上任意已存在的文件通过 http 提供给前端(图片/音频/秩序册)
[ApiController]
[Route("api/[controller]")]
public sealed class LibraryController : ControllerBase
{
private static readonly string[] BackgroundDirs = { "背景", "背景图" };
private static readonly string[] PasswordDirs = { "口令" };
private static readonly string[] LogoDirs = { "赛事LOGO", "赛事logo" };
private static readonly string[] RosterDirs = { "秩序册" };
private static readonly HashSet<string> ImageExt = new(StringComparer.OrdinalIgnoreCase)
{ ".jpg", ".jpeg", ".png", ".webp", ".gif", ".bmp", ".svg" };
private static readonly HashSet<string> RosterExt = new(StringComparer.OrdinalIgnoreCase)
{ ".txt", ".csv", ".xlsx", ".xls" };
private static readonly HashSet<string> PasswordExt = new(StringComparer.OrdinalIgnoreCase)
{ ".mp3" };
private static readonly FileExtensionContentTypeProvider ContentTypeProvider = new();
// 在本机弹出系统文件夹选择对话框(供浏览器开发环境使用;桌面端优先走 Electron)。
[HttpPost("pick-folder")]
[SupportedOSPlatform("windows")]
public IActionResult PickFolder()
{
string? selectedPath = null;
var thread = new Thread(() =>
{
using var dialog = new FolderBrowserDialog
{
Description = "选择赛事文件夹",
UseDescriptionForTitle = true,
ShowNewFolderButton = false,
};
if (dialog.ShowDialog() == DialogResult.OK)
{
selectedPath = dialog.SelectedPath;
}
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
if (string.IsNullOrWhiteSpace(selectedPath))
{
return Ok(new { canceled = true, path = (string?)null });
}
return Ok(new { canceled = false, path = selectedPath });
}
// 扫描用户选取的赛事文件夹,结构与原 static/manifest.json 中单个赛事一致。
[HttpGet("scan")]
public IActionResult Scan([FromQuery] string path)
{
if (string.IsNullOrWhiteSpace(path))
{
return BadRequest(new { message = "缺少文件夹路径" });
}
var folderPath = path.Trim();
if (!Directory.Exists(folderPath))
{
return NotFound(new { message = $"文件夹不存在:{folderPath}" });
}
var folder = new DirectoryInfo(folderPath).Name;
var displayName = ReadDisplayName(folderPath) ?? folder;
var result = new
{
id = folderPath,
name = displayName,
folder,
folderPath,
backgrounds = ListFiles(folderPath, BackgroundDirs, ImageExt),
passwords = ListFiles(folderPath, PasswordDirs, PasswordExt),
logos = ListFiles(folderPath, LogoDirs, ImageExt),
rosters = ListFiles(folderPath, RosterDirs, RosterExt),
};
return Ok(result);
}
// 提供磁盘上任意已存在文件(仅限本机桌面端调用)。支持音视频拖动定位。
[HttpGet("file")]
public IActionResult GetFile([FromQuery] string path)
{
if (string.IsNullOrWhiteSpace(path))
{
return BadRequest(new { message = "缺少文件路径" });
}
var filePath = path.Trim();
if (!System.IO.File.Exists(filePath))
{
return NotFound(new { message = $"文件不存在:{filePath}" });
}
if (!ContentTypeProvider.TryGetContentType(filePath, out var contentType))
{
contentType = "application/octet-stream";
}
return PhysicalFile(filePath, contentType, enableRangeProcessing: true);
}
private List<object> ListFiles(string folderPath, string[] subDirCandidates, HashSet<string> allowedExt)
{
var subDir = ResolveSubDir(folderPath, subDirCandidates);
var dir = Path.Combine(folderPath, subDir);
if (!Directory.Exists(dir))
{
return new List<object>();
}
return Directory
.EnumerateFiles(dir)
.Where(file =>
{
var name = Path.GetFileName(file);
return !name.StartsWith("~$", StringComparison.Ordinal)
&& allowedExt.Contains(Path.GetExtension(file));
})
.OrderBy(file => Path.GetFileName(file), StringComparer.CurrentCulture)
.Select(file => (object)new
{
file = Path.GetFileName(file),
path = BuildFileUrl(file),
})
.ToList();
}
private static string ResolveSubDir(string folderPath, string[] candidates)
{
foreach (var name in candidates)
{
if (Directory.Exists(Path.Combine(folderPath, name)))
{
return name;
}
}
return candidates[0];
}
// 返回前端可直接请求的绝对地址,避免 resolveStaticUrl 误编码查询串。
private string BuildFileUrl(string absolutePath)
{
var encoded = Uri.EscapeDataString(absolutePath);
return $"{Request.Scheme}://{Request.Host}/api/library/file?path={encoded}";
}
private static string? ReadDisplayName(string folderPath)
{
var metaPath = Path.Combine(folderPath, "event.json");
if (!System.IO.File.Exists(metaPath))
{
return null;
}
try
{
using var doc = JsonDocument.Parse(System.IO.File.ReadAllText(metaPath));
if (doc.RootElement.TryGetProperty("displayName", out var prop)
&& prop.ValueKind == JsonValueKind.String)
{
return prop.GetString();
}
}
catch
{
// 忽略损坏的 event.json
}
return null;
}
}

View File

@ -50,10 +50,28 @@ if (app.Environment.IsDevelopment())
app.UseSwaggerUI();
}
// 提供打包后内置的前端静态资源(桌面端通过 http 加载,避免 file:// 下 fetch/绝对路径失效)。
// 使用可执行文件同级的 wwwroot 绝对路径,避免内容根/工作目录差异导致静态资源 404。
var webRootPath = Path.Combine(AppContext.BaseDirectory, "wwwroot");
var hasBundledFrontend = Directory.Exists(webRootPath);
Microsoft.Extensions.FileProviders.PhysicalFileProvider? frontendFileProvider = null;
if (hasBundledFrontend)
{
frontendFileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(webRootPath);
app.UseDefaultFiles(new DefaultFilesOptions { FileProvider = frontendFileProvider });
app.UseStaticFiles(new StaticFileOptions { FileProvider = frontendFileProvider });
}
app.UseRouting();
app.UseCors();
app.MapControllers();
app.MapHub<ScoringHub>("/hubs/scoring");
// 单页应用兜底:非 API/Hub 路由回退到 index.html(仅当存在内置前端时生效)。
if (hasBundledFrontend && frontendFileProvider is not null)
{
app.MapFallbackToFile("index.html", new StaticFileOptions { FileProvider = frontendFileProvider });
}
app.Run();

View File

@ -1,9 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
<ItemGroup>

View File

@ -1 +1 @@
[{"deviceId":"0","counter":0,"bsName":"NO-0","athleteName":"\u674E\u80DC\u5E2D","school":null,"errorCount":null,"battery":40,"mode":2,"remainingSeconds":5,"rssi":null,"gatewayId":"serial-2.4g","timestamp":"2026-06-10T07:50:31.7658274+00:00","ingestedAt":"2026-06-10T07:50:31.7658274+00:00"},{"deviceId":"1","counter":6,"bsName":"NO-1","athleteName":"\u8D75\u5176\u4E09","school":null,"errorCount":null,"battery":4,"mode":2,"remainingSeconds":5,"rssi":null,"gatewayId":"serial-2.4g","timestamp":"2026-06-10T07:50:31.7118198+00:00","ingestedAt":"2026-06-10T07:50:31.7118199+00:00"}]
[{"deviceId":"1","counter":17,"bsName":"NO-1","athleteName":"\u8D75\u5176\u4E09","school":null,"errorCount":null,"battery":4,"mode":2,"remainingSeconds":5,"rssi":null,"gatewayId":"serial-2.4g","timestamp":"2026-06-10T07:54:30.4008994+00:00","ingestedAt":"2026-06-10T07:54:30.4008995+00:00"},{"deviceId":"0","counter":0,"bsName":"NO-0","athleteName":"\u674E\u80DC\u5E2D","school":null,"errorCount":null,"battery":40,"mode":2,"remainingSeconds":5,"rssi":null,"gatewayId":"serial-2.4g","timestamp":"2026-06-10T07:54:30.3829874+00:00","ingestedAt":"2026-06-10T07:54:30.3829875+00:00"}]

View File

@ -1,4 +1,148 @@
[
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "SetCount",
"RelativePath": "api/Competition/participants/{participantId}/count",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [
{
"Name": "participantId",
"Type": "System.Int32",
"IsRequired": true
},
{
"Name": "request",
"Type": "YD_TrainingCompetition_Api.Competition.CompetitionParticipantCountRequest",
"IsRequired": true
}
],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "ChangeCount",
"RelativePath": "api/Competition/participants/{participantId}/delta",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [
{
"Name": "participantId",
"Type": "System.Int32",
"IsRequired": true
},
{
"Name": "request",
"Type": "YD_TrainingCompetition_Api.Competition.CompetitionParticipantDeltaRequest",
"IsRequired": true
}
],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "SelectRound",
"RelativePath": "api/Competition/rounds/{roundIndex}/select",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [
{
"Name": "roundIndex",
"Type": "System.Int32",
"IsRequired": true
}
],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "DownloadCurrentRound",
"RelativePath": "api/Competition/rounds/current/download",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "NextRound",
"RelativePath": "api/Competition/rounds/next",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "PreviousRound",
"RelativePath": "api/Competition/rounds/previous",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "GetSession",
"RelativePath": "api/Competition/session",
"HttpMethod": "GET",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "CreateSession",
"RelativePath": "api/Competition/session",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [
{
"Name": "request",
"Type": "YD_TrainingCompetition_Api.Competition.CreateCompetitionSessionRequest",
"IsRequired": true
}
],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "Reset",
"RelativePath": "api/Competition/test/reset",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "Start",
"RelativePath": "api/Competition/test/start",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.CompetitionController",
"Method": "Stop",
"RelativePath": "api/Competition/test/stop",
"HttpMethod": "POST",
"IsController": true,
"Order": 0,
"Parameters": [],
"ReturnTypes": []
},
{
"ContainingType": "YD_TrainingCompetition_Api.Controllers.DevicesController",
"Method": "GetAll",

View File

@ -5,6 +5,226 @@
"version": "1.0"
},
"paths": {
"/api/Competition/session": {
"get": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
},
"post": {
"tags": [
"Competition"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateCompetitionSessionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CreateCompetitionSessionRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CreateCompetitionSessionRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/rounds/{roundIndex}/select": {
"post": {
"tags": [
"Competition"
],
"parameters": [
{
"name": "roundIndex",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/rounds/next": {
"post": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/rounds/previous": {
"post": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/rounds/current/download": {
"post": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/test/start": {
"post": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/test/stop": {
"post": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/test/reset": {
"post": {
"tags": [
"Competition"
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/participants/{participantId}/count": {
"post": {
"tags": [
"Competition"
],
"parameters": [
{
"name": "participantId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompetitionParticipantCountRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CompetitionParticipantCountRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CompetitionParticipantCountRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Competition/participants/{participantId}/delta": {
"post": {
"tags": [
"Competition"
],
"parameters": [
{
"name": "participantId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompetitionParticipantDeltaRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CompetitionParticipantDeltaRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CompetitionParticipantDeltaRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/api/Devices": {
"get": {
"tags": [
@ -197,6 +417,122 @@
},
"components": {
"schemas": {
"CompetitionParticipantCountRequest": {
"type": "object",
"properties": {
"count": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"CompetitionParticipantDeltaRequest": {
"type": "object",
"properties": {
"delta": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"CreateCompetitionParticipantRequest": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int32",
"nullable": true
},
"name": {
"type": "string",
"nullable": true
},
"projectName": {
"type": "string",
"nullable": true
},
"school": {
"type": "string",
"nullable": true
},
"deviceId": {
"type": "string",
"nullable": true
},
"rfid": {
"type": "string",
"nullable": true
},
"roundIndex": {
"type": "integer",
"format": "int32",
"nullable": true
},
"slotIndex": {
"type": "integer",
"format": "int32",
"nullable": true
},
"count": {
"type": "integer",
"format": "int32",
"nullable": true
}
},
"additionalProperties": false
},
"CreateCompetitionSessionRequest": {
"type": "object",
"properties": {
"eventId": {
"type": "string",
"nullable": true
},
"eventName": {
"type": "string",
"nullable": true
},
"rosterPath": {
"type": "string",
"nullable": true
},
"totalRounds": {
"type": "integer",
"format": "int32",
"nullable": true
},
"testDurationSeconds": {
"type": "integer",
"format": "int32",
"nullable": true
},
"roundParticipantCounts": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"nullable": true
},
"roundNames": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"participants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreateCompetitionParticipantRequest"
},
"nullable": true
}
},
"additionalProperties": false
},
"DeviceTelemetry": {
"type": "object",
"properties": {
@ -230,6 +566,16 @@
"format": "int32",
"nullable": true
},
"mode": {
"type": "integer",
"format": "int32",
"nullable": true
},
"remainingSeconds": {
"type": "integer",
"format": "int32",
"nullable": true
},
"rssi": {
"type": "integer",
"format": "int32",

View File

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

View File

@ -1 +1 @@
2c0084134aafe744368ccfd3fc9f06ffc2c91a4f524dfd4275171a9220e15a37
13b99b04233ec26b73a823514c11878270a50969af3bfe348cac5bd51a621eab

View File

@ -1,4 +1,10 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0
build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v8.0
@ -8,17 +14,16 @@ build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property.EntryPointFilePath =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = YD_TrainingCompetition_Api
build_property.RootNamespace = YD_TrainingCompetition_Api
build_property.ProjectDir = C:\Users\tangl\Desktop\Git\YD_TrainingCompetition_Api\
build_property.ProjectDir = c:\Project\赛事\YD_TrainingCompetition_Api\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 8.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = C:\Users\tangl\Desktop\Git\YD_TrainingCompetition_Api
build_property.MSBuildProjectDirectory = c:\Project\赛事\YD_TrainingCompetition_Api
build_property._RazorSourceGeneratorDebug =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =

View File

@ -9,9 +9,11 @@ global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
global using System;
global using System.Collections.Generic;
global using System.Drawing;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Net.Http.Json;
global using System.Threading;
global using System.Threading.Tasks;
global using System.Windows.Forms;

View File

@ -14,5 +14,5 @@ using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.AspNetCore.OpenApi")]
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")]
// Generated by the MSBuild WriteCodeFragment class.
// 由 MSBuild WriteCodeFragment 类生成。

View File

@ -1 +1 @@
bf6d5d4b9e555a7c41a193809454f3d2c724fe7406f356106eaf0b2cd2e18dd8
01ecfb21737675c7f10acbae1c2df898e232d2572b54ce5b3c99396a1260a63f

View File

@ -73,3 +73,59 @@ C:\Users\tangl\AppData\Local\Temp\yd-trainingcompetition-debug\YD_TrainingCompet
C:\Users\tangl\AppData\Local\Temp\yd-trainingcompetition-debug\YD_TrainingCompetition_Api.runtimeconfig.json
C:\Users\tangl\AppData\Local\Temp\yd-trainingcompetition-debug\YD_TrainingCompetition_Api.dll
C:\Users\tangl\AppData\Local\Temp\yd-trainingcompetition-debug\YD_TrainingCompetition_Api.pdb
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\appsettings.Development.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\appsettings.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\data\device_snapshot.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\frontend\package.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\YD_TrainingCompetition_Api.staticwebassets.endpoints.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\YD_TrainingCompetition_Api.exe
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\YD_TrainingCompetition_Api.deps.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\YD_TrainingCompetition_Api.runtimeconfig.json
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\YD_TrainingCompetition_Api.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\YD_TrainingCompetition_Api.pdb
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\ClosedXML.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\ClosedXML.Parser.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\DocumentFormat.OpenXml.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\DocumentFormat.OpenXml.Framework.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\ExcelNumberFormat.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\Microsoft.AspNetCore.OpenApi.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\Microsoft.OpenApi.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\MQTTnet.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\RBush.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\SixLabors.Fonts.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\System.IO.Packaging.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\System.IO.Ports.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\linux-arm\native\libSystem.IO.Ports.Native.so
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\linux-arm64\native\libSystem.IO.Ports.Native.so
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\linux-x64\native\libSystem.IO.Ports.Native.so
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\osx-arm64\native\libSystem.IO.Ports.Native.dylib
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\osx-x64\native\libSystem.IO.Ports.Native.dylib
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\unix\lib\net8.0\System.IO.Ports.dll
C:\Project\赛事\YD_TrainingCompetition_Api\bin\Debug\net8.0\runtimes\win\lib\net8.0\System.IO.Ports.dll
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.csproj.AssemblyReference.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\rpswa.dswa.cache.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.GeneratedMSBuildEditorConfig.editorconfig
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.AssemblyInfoInputs.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.AssemblyInfo.cs
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.csproj.CoreCompileInputs.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.MvcApplicationPartsAssemblyInfo.cs
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.MvcApplicationPartsAssemblyInfo.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\rjimswa.dswa.cache.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\rjsmrazor.dswa.cache.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\rjsmcshtml.dswa.cache.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\scopedcss\bundle\YD_TrainingCompetition_Api.styles.css
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\staticwebassets.build.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\staticwebassets.build.json.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\staticwebassets.development.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\staticwebassets.build.endpoints.json
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\swae.build.ex.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\staticwebassets.upToDateCheck.txt
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_Train.D1237001.Up2Date
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.dll
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\refint\YD_TrainingCompetition_Api.dll
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.pdb
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\YD_TrainingCompetition_Api.genruntimeconfig.cache
C:\Project\赛事\YD_TrainingCompetition_Api\obj\Debug\net8.0\ref\YD_TrainingCompetition_Api.dll

View File

@ -1 +1 @@
c41e55300b66fcab1eb3bc0ccac343eeb66dd3e2fc6fb5e2d4cc9fc8eb2ec044
c659ae5135c19ede357ea68eca33fdb1a93dbbe14f3395f1dae162cc53ad96d1

Binary file not shown.

View File

@ -1 +1 @@
{"GlobalPropertiesHash":"7v98JcpqvwqzU/QYAD3Y/R6J1Dq1dvIOvOonPJSAY/o=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["sBoAyRclr1CKC92HfAAtFvUqZh22blS8EwztX85/jzI=","lRP663q1jWxdZdYOmc2wjTzW2wzkjrV5K5AQF5Nczjg=","ahm7KLt9SKzurzovfwEINdpL8xMpazEyMYfPKSIbwRw=","EpC0gkO6Bi4kHPlV6/6ePHAWwYV4C\u002Bk6T9APzUmK8dc=","W0TNs8Unj/yFC0Eq11RwkveQBppb3KbVVnD\u002Bd/hX2bQ=","zILSqi0oYMh5X9VoIeYYDiPBckO6C\u002Bj1cMqb/TkAk\u002BQ=","l8cBdSBEbCbYAUGdFTokP7VuqNI\u002BtXOMcBODhiY1tp0=","3/m3nre\u002B7Rua1XUsC78YML707ZbeP6OhiU/\u002Bw2mgx9A=","kfJ1taNoHoc7P7IIQ5QPm3dKkPRIznH7EqgWCQpXDfc=","unJ923zHDemMYZAg2x0ltyX/HFXM2DenFpoQdJU\u002BeFc=","fVVCo2Nzv\u002BTHdMhFRq9E9Tjo\u002BLI45VnhzaX74Lpc5VY=","mjfPHVkVMOF8u6j01bMimYhwBaJWGZ1ZzB8gfEE0wAU=","FQ0Lk7BgmdPS57YopNh8qe8949sfU5\u002BooYA3wxVRvNU=","joE75\u002BLOnsuvO6IkmxPOZn/NconBwBtNz0g33B0jkCk=","hA9l\u002BAXzudQCc7r51qnxeg1z5knXWHAhlNsu0Y/9UyE=","JrlnwC8RRhGg4QYubrLSZObL/8WAjhhtpKmfA6hn4L8="],"CachedAssets":{},"CachedCopyCandidates":{}}
{"GlobalPropertiesHash":"XcfqPWLJuXlMEXoPeI7MtnSga/ETvFsVqy18XHnSVdw=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["f81qd3adk1gl4Al2inzRV1Mz6IVbJ6tCB3\u002BdgXe2LVM=","J1KdIVD5o3FNrX\u002B7s6wuDJNmMSXt1FgBbu38p5K8ums=","FSeHV291f1geMhXpr6cY8CushW6/jmG/8iV8QzDDz6Y=","ydGBWL6K4qlPJcMwQmEtbZ3boJpF6e9plvE0JfHa6aM=","jAYcqOJ9orzI7afkTLqGvDt041KcWrF\u002BsiOU6Nwm6wI=","0eb89c3amkS1MHT9yE\u002BObdtyc64gshJJBeUtmTdvb/Q=","IkT0Axk9lz7NpQszbMvQh9eQaxuwWk9s7QWxDgqYJgI=","uXnS2JOJlvtgq8JKzQoL\u002BUIbGfKwSe8jOOTbymVdzY0=","RbB9PEYNumCNN9l3eVOQ2k3447dezVg\u002Bgv12yEuBJSE=","hKbmaIIRKyW\u002BbyRpL9NTfKA49tOu64ewoWesv/Wz3TA=","X2ljK\u002Biq2gyeWGgWDUFY/0pP1ZpcWjZOiziot8NgI3w=","EoSjB1ziYOAYuPE/mqgBFS6xxGH9nBu7IU2SdnbWce0=","76eWiuTj\u002BCpP2T\u002BsnYYRtzAJnnrMJ6Vcr\u002BTuhLlLlaw=","iKhweurUFlqa7RcRWXb3CYjtz6ethl1ToC6uOeSN4sQ=","6B4\u002BNl\u002BNuepYkvZKDEbMdOZ0jbBZbkbPm/5IPvkMMkQ=","LLCFOrGdnyDuZsNmUeKyceUHSoM9FDEkZk2DzG5Uy24="],"CachedAssets":{},"CachedCopyCandidates":{}}

View File

@ -1 +1 @@
{"GlobalPropertiesHash":"9PKPvLIb7x7yMaeY1PINOf+9jQkrdIjPkSe6ctIZ1Zs=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["sBoAyRclr1CKC92HfAAtFvUqZh22blS8EwztX85/jzI=","lRP663q1jWxdZdYOmc2wjTzW2wzkjrV5K5AQF5Nczjg=","ahm7KLt9SKzurzovfwEINdpL8xMpazEyMYfPKSIbwRw=","EpC0gkO6Bi4kHPlV6/6ePHAWwYV4C\u002Bk6T9APzUmK8dc=","W0TNs8Unj/yFC0Eq11RwkveQBppb3KbVVnD\u002Bd/hX2bQ=","zILSqi0oYMh5X9VoIeYYDiPBckO6C\u002Bj1cMqb/TkAk\u002BQ=","l8cBdSBEbCbYAUGdFTokP7VuqNI\u002BtXOMcBODhiY1tp0=","3/m3nre\u002B7Rua1XUsC78YML707ZbeP6OhiU/\u002Bw2mgx9A=","kfJ1taNoHoc7P7IIQ5QPm3dKkPRIznH7EqgWCQpXDfc=","unJ923zHDemMYZAg2x0ltyX/HFXM2DenFpoQdJU\u002BeFc=","fVVCo2Nzv\u002BTHdMhFRq9E9Tjo\u002BLI45VnhzaX74Lpc5VY=","mjfPHVkVMOF8u6j01bMimYhwBaJWGZ1ZzB8gfEE0wAU=","FQ0Lk7BgmdPS57YopNh8qe8949sfU5\u002BooYA3wxVRvNU=","joE75\u002BLOnsuvO6IkmxPOZn/NconBwBtNz0g33B0jkCk=","hA9l\u002BAXzudQCc7r51qnxeg1z5knXWHAhlNsu0Y/9UyE=","JrlnwC8RRhGg4QYubrLSZObL/8WAjhhtpKmfA6hn4L8="],"CachedAssets":{},"CachedCopyCandidates":{}}
{"GlobalPropertiesHash":"0eWcQ4VcOiXvf/8f+9XA63mtnKhbu57YakrtBHnJEA4=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["f81qd3adk1gl4Al2inzRV1Mz6IVbJ6tCB3\u002BdgXe2LVM=","J1KdIVD5o3FNrX\u002B7s6wuDJNmMSXt1FgBbu38p5K8ums=","FSeHV291f1geMhXpr6cY8CushW6/jmG/8iV8QzDDz6Y=","ydGBWL6K4qlPJcMwQmEtbZ3boJpF6e9plvE0JfHa6aM=","jAYcqOJ9orzI7afkTLqGvDt041KcWrF\u002BsiOU6Nwm6wI=","0eb89c3amkS1MHT9yE\u002BObdtyc64gshJJBeUtmTdvb/Q=","IkT0Axk9lz7NpQszbMvQh9eQaxuwWk9s7QWxDgqYJgI=","uXnS2JOJlvtgq8JKzQoL\u002BUIbGfKwSe8jOOTbymVdzY0=","RbB9PEYNumCNN9l3eVOQ2k3447dezVg\u002Bgv12yEuBJSE=","hKbmaIIRKyW\u002BbyRpL9NTfKA49tOu64ewoWesv/Wz3TA=","X2ljK\u002Biq2gyeWGgWDUFY/0pP1ZpcWjZOiziot8NgI3w=","EoSjB1ziYOAYuPE/mqgBFS6xxGH9nBu7IU2SdnbWce0=","76eWiuTj\u002BCpP2T\u002BsnYYRtzAJnnrMJ6Vcr\u002BTuhLlLlaw=","iKhweurUFlqa7RcRWXb3CYjtz6ethl1ToC6uOeSN4sQ=","6B4\u002BNl\u002BNuepYkvZKDEbMdOZ0jbBZbkbPm/5IPvkMMkQ=","LLCFOrGdnyDuZsNmUeKyceUHSoM9FDEkZk2DzG5Uy24="],"CachedAssets":{},"CachedCopyCandidates":{}}

View File

@ -1 +1 @@
{"GlobalPropertiesHash":"YUqh7DweOFk41PNBn8yV1oJK8hMpD2qUvV27+I8+FHk=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["sBoAyRclr1CKC92HfAAtFvUqZh22blS8EwztX85/jzI=","lRP663q1jWxdZdYOmc2wjTzW2wzkjrV5K5AQF5Nczjg=","ahm7KLt9SKzurzovfwEINdpL8xMpazEyMYfPKSIbwRw=","EpC0gkO6Bi4kHPlV6/6ePHAWwYV4C\u002Bk6T9APzUmK8dc="],"CachedAssets":{},"CachedCopyCandidates":{}}
{"GlobalPropertiesHash":"HmPV413vUlyh8cdwmVqkwuZTo85mi3Pjg0N8jhsoQDI=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["f81qd3adk1gl4Al2inzRV1Mz6IVbJ6tCB3\u002BdgXe2LVM=","J1KdIVD5o3FNrX\u002B7s6wuDJNmMSXt1FgBbu38p5K8ums=","FSeHV291f1geMhXpr6cY8CushW6/jmG/8iV8QzDDz6Y=","ydGBWL6K4qlPJcMwQmEtbZ3boJpF6e9plvE0JfHa6aM="],"CachedAssets":{},"CachedCopyCandidates":{}}

View File

@ -1,38 +1,37 @@
{
"format": 1,
"restore": {
"C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj": {}
"C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj": {}
},
"projects": {
"C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj": {
"C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"projectUniqueName": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"projectName": "YD_TrainingCompetition_Api",
"projectPath": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"packagesPath": "C:\\Users\\tangl\\.nuget\\packages\\",
"outputPath": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\obj\\",
"projectPath": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"packagesPath": "C:\\Users\\19304\\.nuget\\packages\\",
"outputPath": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\tangl\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Users\\19304\\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": [
"net8.0"
"net8.0-windows"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"framework": "net8.0",
"targetAlias": "net8.0",
"net8.0-windows": {
"framework": "net8.0-windows7.0",
"targetAlias": "net8.0-windows",
"projectReferences": {}
}
},
@ -49,9 +48,9 @@
"SdkAnalysisLevel": "10.0.300"
},
"frameworks": {
"net8.0": {
"framework": "net8.0",
"targetAlias": "net8.0",
"net8.0-windows": {
"framework": "net8.0-windows7.0",
"targetAlias": "net8.0-windows",
"dependencies": {
"ClosedXML": {
"target": "Package",
@ -91,9 +90,12 @@
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
},
"Microsoft.WindowsDesktop.App.WindowsForms": {
"privateAssets": "none"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.300/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.301/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@ -5,12 +5,12 @@
<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\tangl\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\19304\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\tangl\.nuget\packages\" />
<SourceRoot Include="C:\Users\19304\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
@ -18,6 +18,6 @@
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore\6.6.2\build\Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore\6.6.2\build\Swashbuckle.AspNetCore.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\tangl\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\19304\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>
</PropertyGroup>
</Project>

View File

@ -1,7 +1,7 @@
{
"version": 4,
"targets": {
"net8.0": {
"net8.0-windows": {
"ClosedXML/0.104.0": {
"type": "package",
"dependencies": {
@ -1029,7 +1029,7 @@
}
},
"projectFileDependencyGroups": {
"net8.0": [
"net8.0-windows": [
"ClosedXML >= 0.104.0",
"MQTTnet >= 4.3.7.1207",
"Microsoft.AspNetCore.OpenApi >= 8.0.27",
@ -1038,38 +1038,37 @@
]
},
"packageFolders": {
"C:\\Users\\tangl\\.nuget\\packages\\": {},
"C:\\Users\\19304\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"projectUniqueName": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"projectName": "YD_TrainingCompetition_Api",
"projectPath": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"packagesPath": "C:\\Users\\tangl\\.nuget\\packages\\",
"outputPath": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\obj\\",
"projectPath": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"packagesPath": "C:\\Users\\19304\\.nuget\\packages\\",
"outputPath": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\tangl\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Users\\19304\\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": [
"net8.0"
"net8.0-windows"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"framework": "net8.0",
"targetAlias": "net8.0",
"net8.0-windows": {
"framework": "net8.0-windows7.0",
"targetAlias": "net8.0-windows",
"projectReferences": {}
}
},
@ -1086,9 +1085,9 @@
"SdkAnalysisLevel": "10.0.300"
},
"frameworks": {
"net8.0": {
"framework": "net8.0",
"targetAlias": "net8.0",
"net8.0-windows": {
"framework": "net8.0-windows7.0",
"targetAlias": "net8.0-windows",
"dependencies": {
"ClosedXML": {
"target": "Package",
@ -1128,9 +1127,12 @@
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
},
"Microsoft.WindowsDesktop.App.WindowsForms": {
"privateAssets": "none"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.300/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.301/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@ -1,32 +1,32 @@
{
"version": 2,
"dgSpecHash": "Dt5gZIeIL0Q=",
"dgSpecHash": "MwWq4leAOS8=",
"success": true,
"projectFilePath": "C:\\Users\\tangl\\Desktop\\Git\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"projectFilePath": "C:\\Project\\赛事\\YD_TrainingCompetition_Api\\YD_TrainingCompetition_Api.csproj",
"expectedPackageFiles": [
"C:\\Users\\tangl\\.nuget\\packages\\closedxml\\0.104.0\\closedxml.0.104.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\closedxml.parser\\1.2.0\\closedxml.parser.1.2.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\documentformat.openxml\\3.0.1\\documentformat.openxml.3.0.1.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\documentformat.openxml.framework\\3.0.1\\documentformat.openxml.framework.3.0.1.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\excelnumberformat\\1.1.0\\excelnumberformat.1.1.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.27\\microsoft.aspnetcore.openapi.8.0.27.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\mqttnet\\4.3.7.1207\\mqttnet.4.3.7.1207.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\rbush\\3.2.0\\rbush.3.2.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\runtime.linux-arm.runtime.native.system.io.ports\\8.0.0\\runtime.linux-arm.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\runtime.linux-arm64.runtime.native.system.io.ports\\8.0.0\\runtime.linux-arm64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\runtime.linux-x64.runtime.native.system.io.ports\\8.0.0\\runtime.linux-x64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\runtime.native.system.io.ports\\8.0.0\\runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\runtime.osx-arm64.runtime.native.system.io.ports\\8.0.0\\runtime.osx-arm64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\runtime.osx-x64.runtime.native.system.io.ports\\8.0.0\\runtime.osx-x64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\sixlabors.fonts\\1.0.0\\sixlabors.fonts.1.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\system.io.packaging\\8.0.0\\system.io.packaging.8.0.0.nupkg.sha512",
"C:\\Users\\tangl\\.nuget\\packages\\system.io.ports\\8.0.0\\system.io.ports.8.0.0.nupkg.sha512"
"C:\\Users\\19304\\.nuget\\packages\\closedxml\\0.104.0\\closedxml.0.104.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\closedxml.parser\\1.2.0\\closedxml.parser.1.2.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\documentformat.openxml\\3.0.1\\documentformat.openxml.3.0.1.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\documentformat.openxml.framework\\3.0.1\\documentformat.openxml.framework.3.0.1.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\excelnumberformat\\1.1.0\\excelnumberformat.1.1.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.27\\microsoft.aspnetcore.openapi.8.0.27.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\mqttnet\\4.3.7.1207\\mqttnet.4.3.7.1207.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\rbush\\3.2.0\\rbush.3.2.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\runtime.linux-arm.runtime.native.system.io.ports\\8.0.0\\runtime.linux-arm.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\runtime.linux-arm64.runtime.native.system.io.ports\\8.0.0\\runtime.linux-arm64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\runtime.linux-x64.runtime.native.system.io.ports\\8.0.0\\runtime.linux-x64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\runtime.native.system.io.ports\\8.0.0\\runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\runtime.osx-arm64.runtime.native.system.io.ports\\8.0.0\\runtime.osx-arm64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\runtime.osx-x64.runtime.native.system.io.ports\\8.0.0\\runtime.osx-x64.runtime.native.system.io.ports.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\sixlabors.fonts\\1.0.0\\sixlabors.fonts.1.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\system.io.packaging\\8.0.0\\system.io.packaging.8.0.0.nupkg.sha512",
"C:\\Users\\19304\\.nuget\\packages\\system.io.ports\\8.0.0\\system.io.ports.8.0.0.nupkg.sha512"
],
"logs": []
}