Parcourir la source

Phase 3: msbuild hygiene - CPM, kill NU1903 at root, analyzers, Backend.slnx

- Central Package Management (Directory.Packages.props, 32 versions), common props consolidated
- remove legacy AspNetCore 2.3.9 pins -> FrameworkReference; Newtonsoft 9.0.1 (NU1903) gone from graph
- Admin: drop NuGet.Packaging/Protocol 7.3.1, CodeGeneration.Design PrivateAssets=all
- AnalysisLevel=latest-recommended + EnforceCodeStyleInBuild (1581 style warnings to triage later)
- Admin/Admin.slnx -> Backend.slnx; Jenkinsfiles + CLAUDE.md updated
- restore 0 NU warnings, build 0 errors, tests 49/49

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
KIM-JINO5 il y a 3 semaines
Parent
commit
f43d758365

+ 40 - 43
Admin/Admin.csproj

@@ -1,50 +1,47 @@
-<Project Sdk="Microsoft.NET.Sdk.Web">
+<Project Sdk="Microsoft.NET.Sdk.Web">
 
-	<PropertyGroup>
-		<TargetFramework>net10.0</TargetFramework>
-		<Nullable>enable</Nullable>
-		<ImplicitUsings>enable</ImplicitUsings>
-		<HotReloadAutoRestart>true</HotReloadAutoRestart>
-	</PropertyGroup>
+  <PropertyGroup>
+    <HotReloadAutoRestart>true</HotReloadAutoRestart>
+  </PropertyGroup>
 
-	<ItemGroup>
-	  <None Remove="nul" />
-	</ItemGroup>
-	
-	<ItemGroup>
-		<None Include=".github\copilot-instructions.md" />
-	</ItemGroup>
+  <ItemGroup>
+    <None Include=".github\copilot-instructions.md" />
+  </ItemGroup>
 
-	<ItemGroup>
-		<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.7" />
-		<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="10.0.7" />
-		<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.7">
-			<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-			<PrivateAssets>all</PrivateAssets>
-		</PackageReference>
-		<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.7" />
-		<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.7">
-			<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-			<PrivateAssets>all</PrivateAssets>
-		</PackageReference>
-		<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.7" />
-		<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
-		<PackageReference Include="NuGet.Packaging" Version="7.3.1" />
-		<PackageReference Include="NuGet.Protocol" Version="7.3.1" />
-		<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
-		<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
-		<PackageReference Include="System.Management" Version="10.0.7" />
-	</ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
+    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Design">
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      <PrivateAssets>all</PrivateAssets>
+    </PackageReference>
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools">
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+      <PrivateAssets>all</PrivateAssets>
+    </PackageReference>
+    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" />
+    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design">
+      <PrivateAssets>all</PrivateAssets>
+    </PackageReference>
+    <PackageReference Include="Serilog.AspNetCore" />
+    <PackageReference Include="System.Management" />
+  </ItemGroup>
 
-	<ItemGroup>
-		<ProjectReference Include="..\Application\Application.csproj" />
-		<ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
-	</ItemGroup>
+  <ItemGroup>
+    <!-- CodeGeneration.Design(design-time) 이 NuGet.Packaging/Protocol 6.12.1 을 끌고 옴 — 저심각도 advisory 1건만 스코프 억제 -->
+    <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g4vj-cjjj-v7hg" />
+  </ItemGroup>
 
-	<ItemGroup>
-		<Folder Include="wwwroot\uploads\basic\" />
-		<Folder Include="wwwroot\uploads\banner\" />
-		<Folder Include="wwwroot\uploads\thumb\" />
-	</ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Application\Application.csproj" />
+    <ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="wwwroot\uploads\basic\" />
+    <Folder Include="wwwroot\uploads\banner\" />
+    <Folder Include="wwwroot\uploads\thumb\" />
+  </ItemGroup>
 
 </Project>

+ 0 - 10
Admin/Admin.slnx

@@ -1,10 +0,0 @@
-<Solution>
-  <Project Path="../Application/Application.csproj" Id="cbdcdeca-80d7-44ee-96f4-a980c8ffd984" />
-  <Project Path="../Domain/Domain.csproj" Id="f295e410-1385-4a94-92dc-e4c528e3c63d" />
-  <Project Path="../Infrastructure/Infrastructure.csproj" Id="bf5c91c0-794f-484a-81ec-fe9d0cc6b027" />
-  <Project Path="../SharedKernel/SharedKernel.csproj" Id="8af73947-cdea-4086-884c-bed61a7418b6" />
-  <Project Path="Admin.csproj" />
-  <Project Path="../Web.Api/Web.Api.csproj" />
-  <Project Path="../MailWorker/MailWorker.csproj" />
-  <Project Path="../Tests/Application.Tests/Application.Tests.csproj" />
-</Solution>

+ 2 - 8
Application/Application.csproj

@@ -1,13 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
-  <PropertyGroup>
-    <TargetFramework>net10.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
-  </PropertyGroup>
-
   <ItemGroup>
-    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.7" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore" />
   </ItemGroup>
 
   <ItemGroup>
@@ -19,4 +13,4 @@
     <InternalsVisibleTo Include="Application.Tests" />
   </ItemGroup>
 
-</Project>
+</Project>

+ 10 - 0
Backend.slnx

@@ -0,0 +1,10 @@
+<Solution>
+  <Project Path="Application/Application.csproj" Id="cbdcdeca-80d7-44ee-96f4-a980c8ffd984" />
+  <Project Path="Domain/Domain.csproj" Id="f295e410-1385-4a94-92dc-e4c528e3c63d" />
+  <Project Path="Infrastructure/Infrastructure.csproj" Id="bf5c91c0-794f-484a-81ec-fe9d0cc6b027" />
+  <Project Path="SharedKernel/SharedKernel.csproj" Id="8af73947-cdea-4086-884c-bed61a7418b6" />
+  <Project Path="Admin/Admin.csproj" />
+  <Project Path="Web.Api/Web.Api.csproj" />
+  <Project Path="MailWorker/MailWorker.csproj" />
+  <Project Path="Tests/Application.Tests/Application.Tests.csproj" />
+</Solution>

+ 1 - 1
CLAUDE.md

@@ -112,7 +112,7 @@ Auth(social-login/disconnect 포함), Banner, Channel(플래그 게이트), Chat
 
 ```bash
 # Solution build
-dotnet build Admin/Admin.slnx
+dotnet build Backend.slnx
 
 # API 실행
 dotnet run --project Web.Api

+ 6 - 2
Directory.Build.props

@@ -1,5 +1,9 @@
 <Project>
   <PropertyGroup>
-    <NoWarn>$(NoWarn);NU1903</NoWarn>
+    <TargetFramework>net10.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <AnalysisLevel>latest-recommended</AnalysisLevel>
+    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
   </PropertyGroup>
-</Project>
+</Project>

+ 38 - 0
Directory.Packages.props

@@ -0,0 +1,38 @@
+<Project>
+  <PropertyGroup>
+    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
+  </PropertyGroup>
+  <ItemGroup>
+    <PackageVersion Include="AspNetCore.HealthChecks.Redis" Version="9.0.0" />
+    <PackageVersion Include="AspNetCore.HealthChecks.SqlServer" Version="9.0.0" />
+    <PackageVersion Include="BCrypt.Net-Next" Version="4.0.3" />
+    <PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" />
+    <PackageVersion Include="MailKit" Version="4.16.0" />
+    <PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.AspNetCore.DataProtection" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.AspNetCore.Identity.UI" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.7" />
+    <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
+    <PackageVersion Include="Microsoft.OpenApi" Version="2.8.0" />
+    <PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
+    <PackageVersion Include="MimeKit" Version="4.16.0" />
+    <PackageVersion Include="MSTest.TestAdapter" Version="3.8.3" />
+    <PackageVersion Include="MSTest.TestFramework" Version="3.8.3" />
+    <PackageVersion Include="Nanoid" Version="3.1.0" />
+    <PackageVersion Include="Serilog.AspNetCore" Version="10.0.0" />
+    <PackageVersion Include="Serilog.Extensions.Hosting" Version="10.0.0" />
+    <PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
+    <PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" />
+    <PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.1" />
+    <PackageVersion Include="System.Management" Version="10.0.7" />
+  </ItemGroup>
+</Project>

+ 3 - 11
Domain/Domain.csproj

@@ -1,16 +1,8 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>net10.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
-  </PropertyGroup>
+<Project Sdk="Microsoft.NET.Sdk">
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.3.9" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.7" />
-    <PackageReference Include="Nanoid" Version="3.1.0" />
-    <PackageReference Include="System.Security.Cryptography.Xml" Version="10.0.7" />
+    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
+    <PackageReference Include="Nanoid" />
   </ItemGroup>
 
 </Project>

+ 17 - 23
Infrastructure/Infrastructure.csproj

@@ -1,31 +1,25 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>net10.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
-  </PropertyGroup>
+<Project Sdk="Microsoft.NET.Sdk">
 
   <ItemGroup>
-    <PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
-    <PackageReference Include="AspNetCore.HealthChecks.Redis" Version="9.0.0" />
-    <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="9.0.0" />
-    <PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />
-    <PackageReference Include="MailKit" Version="4.16.0" />
-    <PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="10.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="10.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="10.0.7" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.7" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.7">
+    <PackageReference Include="AspNetCore.HealthChecks.Redis" />
+    <PackageReference Include="AspNetCore.HealthChecks.SqlServer" />
+    <PackageReference Include="BCrypt.Net-Next" />
+    <PackageReference Include="BouncyCastle.Cryptography" />
+    <PackageReference Include="MailKit" />
+    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
+    <PackageReference Include="Microsoft.AspNetCore.DataProtection" />
+    <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" />
+    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
+    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Design">
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <PrivateAssets>all</PrivateAssets>
     </PackageReference>
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.7" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.7" />
-    <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.7" />
-    <PackageReference Include="MimeKit" Version="4.16.0" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
+    <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" />
+    <PackageReference Include="MimeKit" />
   </ItemGroup>
 
   <ItemGroup>

+ 6 - 6
Jenkinsfile

@@ -1,6 +1,6 @@
 // =====================================================================
 // ANTOOZA Backend Jenkinsfile (IIS In-Process + WinSW Worker)
-//   - Solution:        Admin/Admin.slnx (.NET 10)
+//   - Solution:        Backend.slnx (.NET 10)
 //   - Components:      Web.Api (IIS ANTOOZA-API), Admin (IIS ANTOOZA-Admin), MailWorker (WinSW antooza-mail)
 //   - Agent:           CTL-Window-Server (Jenkins inbound agent on 10.10.0.100)
 //   - Branches:        main / dev  -> deploy to dev environment (dev-*.antooza.com)
@@ -37,7 +37,7 @@ pipeline {
     WORKER_RELEASES             = 'F:\\workspace\\ANTOOZA\\_releases'
 
     // Project paths (relative to Backend/ working dir on agent)
-    SLN_FILE     = 'Admin\\Admin.slnx'
+    SLN_FILE     = 'Backend.slnx'
     API_PROJ     = 'Web.Api\\Web.Api.csproj'
     ADMIN_PROJ   = 'Admin\\Admin.csproj'
     MAIL_PROJ    = 'MailWorker\\MailWorker.csproj'
@@ -47,7 +47,7 @@ pipeline {
     EF_START_PROJ = 'Admin'
 
     // Change detection paths
-    SHARED_PATHS = 'Application/,Domain/,Infrastructure/,SharedKernel/,Directory.Build.props,global.json,Admin/Admin.slnx'
+    SHARED_PATHS = 'Application/,Domain/,Infrastructure/,SharedKernel/,Directory.Build.props,Directory.Packages.props,global.json,Backend.slnx'
     API_PATHS    = 'Web.Api/'
     ADMIN_PATHS  = 'Admin/'
     MAIL_PATHS   = 'MailWorker/'
@@ -64,12 +64,12 @@ pipeline {
         script {
           // Multibranch checkout drops repo root. Solution lives in Backend/.
           // dir('') would throw — use '.' as the no-prefix marker instead.
-          if (fileExists('Backend\\Admin\\Admin.slnx')) {
+          if (fileExists('Backend\\Backend.slnx')) {
             env.WORK_SUBDIR = 'Backend'
-          } else if (fileExists('Admin\\Admin.slnx')) {
+          } else if (fileExists('Backend.slnx')) {
             env.WORK_SUBDIR = '.'
           } else {
-            error 'Cannot locate Admin\\Admin.slnx in checkout.'
+            error 'Cannot locate Backend.slnx in checkout.'
           }
           echo "Working subdirectory = '${env.WORK_SUBDIR}'"
         }

+ 6 - 6
Jenkinsfile.prod

@@ -1,6 +1,6 @@
 // =====================================================================
 // ANTOOZA Backend Jenkinsfile (PROD)
-//   - Solution:        Admin/Admin.slnx (.NET 10)
+//   - Solution:        Backend.slnx (.NET 10)
 //   - Components:      Web.Api (IIS ANTOOZA-API), Admin (IIS ANTOOZA-Admin), MailWorker (WinSW antooza-mail)
 //   - Agent:           PROD-Window-Server (Jenkins inbound agent on 10.1.0.100)
 //   - Branches:        main only (dev 는 Backend/Jenkinsfile 사용)
@@ -35,7 +35,7 @@ pipeline {
     WORKER_RELEASES             = 'C:\\workspace\\ANTOOZA\\_releases'
 
     // Project paths (relative to Backend/ working dir on agent)
-    SLN_FILE     = 'Admin\\Admin.slnx'
+    SLN_FILE     = 'Backend.slnx'
     API_PROJ     = 'Web.Api\\Web.Api.csproj'
     ADMIN_PROJ   = 'Admin\\Admin.csproj'
     MAIL_PROJ    = 'MailWorker\\MailWorker.csproj'
@@ -43,7 +43,7 @@ pipeline {
     EF_CTX_PROJ   = 'Infrastructure'
     EF_START_PROJ = 'Admin'
 
-    SHARED_PATHS = 'Application/,Domain/,Infrastructure/,SharedKernel/,Directory.Build.props,global.json,Admin/Admin.slnx'
+    SHARED_PATHS = 'Application/,Domain/,Infrastructure/,SharedKernel/,Directory.Build.props,Directory.Packages.props,global.json,Backend.slnx'
     API_PATHS    = 'Web.Api/'
     ADMIN_PATHS  = 'Admin/'
     MAIL_PATHS   = 'MailWorker/'
@@ -57,12 +57,12 @@ pipeline {
     stage('Locate workdir') {
       steps {
         script {
-          if (fileExists('Backend\\Admin\\Admin.slnx')) {
+          if (fileExists('Backend\\Backend.slnx')) {
             env.WORK_SUBDIR = 'Backend'
-          } else if (fileExists('Admin\\Admin.slnx')) {
+          } else if (fileExists('Backend.slnx')) {
             env.WORK_SUBDIR = '.'
           } else {
-            error 'Cannot locate Admin\\Admin.slnx in checkout.'
+            error 'Cannot locate Backend.slnx in checkout.'
           }
           echo "Working subdirectory = '${env.WORK_SUBDIR}'"
         }

+ 6 - 11
MailWorker/MailWorker.csproj

@@ -2,27 +2,22 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>net10.0</TargetFramework>
-    <Nullable>enable</Nullable>
-    <ImplicitUsings>enable</ImplicitUsings>
     <RootNamespace>MailWorker</RootNamespace>
     <AssemblyName>MailWorker</AssemblyName>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="10.0.7" />
-    <PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.7" />
-    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.7" />
-    <PackageReference Include="Serilog.Extensions.Hosting" Version="10.0.0" />
-    <PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
-    <PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
+    <PackageReference Include="Microsoft.AspNetCore.DataProtection" />
+    <PackageReference Include="Microsoft.Extensions.Hosting" />
+    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" />
+    <PackageReference Include="Serilog.Extensions.Hosting" />
+    <PackageReference Include="Serilog.Sinks.File" />
+    <PackageReference Include="Serilog.Sinks.Console" />
   </ItemGroup>
 
   <ItemGroup>
     <ProjectReference Include="..\Application\Application.csproj" />
-    <ProjectReference Include="..\Domain\Domain.csproj" />
     <ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
-    <ProjectReference Include="..\SharedKernel\SharedKernel.csproj" />
   </ItemGroup>
 
   <ItemGroup>

+ 2 - 10
SharedKernel/SharedKernel.csproj

@@ -1,15 +1,7 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>net10.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
-  </PropertyGroup>
+<Project Sdk="Microsoft.NET.Sdk">
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Authorization" Version="10.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.3.9" />
-    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.3.9" />
+    <FrameworkReference Include="Microsoft.AspNetCore.App" />
   </ItemGroup>
 
 </Project>

+ 3 - 6
Tests/Application.Tests/Application.Tests.csproj

@@ -1,16 +1,13 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>net10.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
     <IsPackable>false</IsPackable>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
-    <PackageReference Include="MSTest.TestAdapter" Version="3.8.3" />
-    <PackageReference Include="MSTest.TestFramework" Version="3.8.3" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" />
+    <PackageReference Include="MSTest.TestAdapter" />
+    <PackageReference Include="MSTest.TestFramework" />
   </ItemGroup>
 
   <ItemGroup>

+ 7 - 17
Web.Api/Web.Api.csproj

@@ -1,20 +1,16 @@
-<Project Sdk="Microsoft.NET.Sdk.Web">
+<Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>net10.0</TargetFramework>
-    <Nullable>enable</Nullable>
-    <ImplicitUsings>enable</ImplicitUsings>
     <UserSecretsId>3c382f4e-81a2-4b63-929f-fefd29e950e8</UserSecretsId>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.7" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.7" />
-    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.7" />
-    <PackageReference Include="Microsoft.OpenApi" Version="2.8.0" />
-    <PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
-    <PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
-    <PackageReference Include="Swashbuckle.AspNetCore" Version="10.2.1" />
+    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
+    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
+    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" />
+    <PackageReference Include="Microsoft.OpenApi" />
+    <PackageReference Include="Serilog.AspNetCore" />
+    <PackageReference Include="Swashbuckle.AspNetCore" />
   </ItemGroup>
 
   <ItemGroup>
@@ -22,10 +18,4 @@
     <ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
   </ItemGroup>
 
-  <ItemGroup>
-    <Folder Include="Endpoints\Channel\" />
-    <Folder Include="Endpoints\Donation\" />
-    <Folder Include="Endpoints\Widget\" />
-  </ItemGroup>
-
 </Project>

+ 1 - 1
dotnet-tools.json

@@ -3,7 +3,7 @@
   "isRoot": true,
   "tools": {
     "dotnet-ef": {
-      "version": "10.0.6",
+      "version": "10.0.7",
       "commands": [
         "dotnet-ef"
       ],