From dcbd9bab41af44642dfbb4e6d7a65c4ab34e380e Mon Sep 17 00:00:00 2001 From: Toutsu Date: Tue, 26 May 2026 12:10:48 +0300 Subject: [PATCH] fix(discord): add missing Dapper.AOT reference to DiscordBot project MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GmRelay.Shared references Dapper.AOT with PrivateAssets=all, which prevents the runtime DLL from flowing to downstream projects. Telegram bot works because it explicitly references Dapper.AOT directly, but Discord bot did not — causing FileNotFoundException for Dapper.AOT at runtime, breaking the scheduler and slash commands. - Add Dapper.AOT 1.0.48 to GmRelay.DiscordBot.csproj - Add regression test: DiscordWorkerProject_ShouldExist asserts Dapper.AOT is present in the DiscordBot csproj - Bump version → 3.0.9 Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/deploy.yml | 2 +- Directory.Build.props | 2 +- compose.yaml | 6 +++--- src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj | 3 +++ src/GmRelay.DiscordBot/packages.lock.json | 6 ++++++ src/GmRelay.Web/Components/Layout/NavMenu.razor | 2 +- .../Discord/DiscordProjectStructureTests.cs | 15 ++++++++------- tests/GmRelay.Bot.Tests/packages.lock.json | 13 +++++++------ 8 files changed, 30 insertions(+), 19 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index b6141dc..b42aecd 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -6,7 +6,7 @@ on: - main env: - VERSION: 3.0.8 + VERSION: 3.0.9 jobs: # ЧАСТЬ 1: Собираем образы и кладем в Gitea (чтобы делиться с ребятами) diff --git a/Directory.Build.props b/Directory.Build.props index 9c4aac7..99566b7 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - 3.0.8 + 3.0.9 net10.0 preview enable diff --git a/compose.yaml b/compose.yaml index 3013a39..c679ff9 100644 --- a/compose.yaml +++ b/compose.yaml @@ -49,7 +49,7 @@ services: crond -f bot: - image: git.codeanddice.ru/toutsu/gmrelay-bot:3.0.8 + image: git.codeanddice.ru/toutsu/gmrelay-bot:3.0.9 restart: always depends_on: db: @@ -67,7 +67,7 @@ services: retries: 3 discord: - image: git.codeanddice.ru/toutsu/gmrelay-discord-bot:3.0.8 + image: git.codeanddice.ru/toutsu/gmrelay-discord-bot:3.0.9 restart: always depends_on: db: @@ -84,7 +84,7 @@ services: retries: 3 web: - image: git.codeanddice.ru/toutsu/gmrelay-web:3.0.8 + image: git.codeanddice.ru/toutsu/gmrelay-web:3.0.9 restart: always depends_on: db: diff --git a/src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj b/src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj index 49c7f1b..b56e7c0 100644 --- a/src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj +++ b/src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj @@ -6,11 +6,14 @@ enable enable dotnet-GmRelay.DiscordBot-issue-26 + + $(NoWarn);DAP005 + diff --git a/src/GmRelay.DiscordBot/packages.lock.json b/src/GmRelay.DiscordBot/packages.lock.json index 776398d..bd123d4 100644 --- a/src/GmRelay.DiscordBot/packages.lock.json +++ b/src/GmRelay.DiscordBot/packages.lock.json @@ -28,6 +28,12 @@ "resolved": "2.1.72", "contentHash": "ns4mGqQd9a/MhP8m6w556vVlZIa0/MfUu03zrxjZC/jlr1uVCsUac8bkdB+Fs98Llbd56rRSo1eZH5VVmeGZyw==" }, + "Dapper.AOT": { + "type": "Direct", + "requested": "[1.0.48, )", + "resolved": "1.0.48", + "contentHash": "rsLM3yKr4g+YKKox9lhc8D+kz67P7Q9+xdyn1LmCsoYr1kYpJSm+Nt6slo5UrfUrcTiGJ57zUlyO8XUdV7G7iA==" + }, "Microsoft.Extensions.Hosting": { "type": "Direct", "requested": "[10.0.5, )", diff --git a/src/GmRelay.Web/Components/Layout/NavMenu.razor b/src/GmRelay.Web/Components/Layout/NavMenu.razor index 8624368..0c39840 100644 --- a/src/GmRelay.Web/Components/Layout/NavMenu.razor +++ b/src/GmRelay.Web/Components/Layout/NavMenu.razor @@ -73,7 +73,7 @@ - + diff --git a/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs b/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs index 701bbb6..f0ec6b9 100644 --- a/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs +++ b/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs @@ -40,6 +40,7 @@ public sealed class DiscordProjectStructureTests Assert.Contains("GmRelay.Shared.csproj", project); Assert.DoesNotContain("Telegram.Bot", project); Assert.DoesNotContain("GmRelay.Bot.csproj", project); + Assert.Contains("Dapper.AOT", project); } [Fact] @@ -61,7 +62,7 @@ public sealed class DiscordProjectStructureTests var prChecks = File.ReadAllText(Path.Combine(repoRoot, ".gitea", "workflows", "pr-checks.yml")); var deploy = File.ReadAllText(Path.Combine(repoRoot, ".gitea", "workflows", "deploy.yml")); - Assert.Contains("gmrelay-discord-bot:3.0.8", compose); + Assert.Contains("gmrelay-discord-bot:3.0.9", compose); Assert.Contains("Discord__Token=${DISCORD_BOT_TOKEN:?Set DISCORD_BOT_TOKEN in .env}", compose); Assert.Contains("src/GmRelay.DiscordBot/Dockerfile", deploy); Assert.Contains("DISCORD_BOT_TOKEN", deploy); @@ -75,13 +76,13 @@ public sealed class DiscordProjectStructureTests { var repoRoot = GetRepoRoot(); - Assert.Contains("3.0.8", File.ReadAllText(Path.Combine(repoRoot, "Directory.Build.props"))); - Assert.Contains("VERSION: 3.0.8", File.ReadAllText(Path.Combine(repoRoot, ".gitea", "workflows", "deploy.yml"))); - Assert.Contains("gmrelay-bot:3.0.8", File.ReadAllText(Path.Combine(repoRoot, "compose.yaml"))); - Assert.Contains("gmrelay-web:3.0.8", File.ReadAllText(Path.Combine(repoRoot, "compose.yaml"))); - Assert.Contains("gmrelay-discord-bot:3.0.8", File.ReadAllText(Path.Combine(repoRoot, "compose.yaml"))); + Assert.Contains("3.0.9", File.ReadAllText(Path.Combine(repoRoot, "Directory.Build.props"))); + Assert.Contains("VERSION: 3.0.9", File.ReadAllText(Path.Combine(repoRoot, ".gitea", "workflows", "deploy.yml"))); + Assert.Contains("gmrelay-bot:3.0.9", File.ReadAllText(Path.Combine(repoRoot, "compose.yaml"))); + Assert.Contains("gmrelay-web:3.0.9", File.ReadAllText(Path.Combine(repoRoot, "compose.yaml"))); + Assert.Contains("gmrelay-discord-bot:3.0.9", File.ReadAllText(Path.Combine(repoRoot, "compose.yaml"))); Assert.Contains( - "v3.0.8", + "v3.0.9", File.ReadAllText(Path.Combine(repoRoot, "src", "GmRelay.Web", "Components", "Layout", "NavMenu.razor"))); } diff --git a/tests/GmRelay.Bot.Tests/packages.lock.json b/tests/GmRelay.Bot.Tests/packages.lock.json index 2ad87a5..d350362 100644 --- a/tests/GmRelay.Bot.Tests/packages.lock.json +++ b/tests/GmRelay.Bot.Tests/packages.lock.json @@ -392,8 +392,8 @@ "Aspire.Npgsql": "[13.2.2, )", "Dapper": "[2.1.72, )", "Dapper.AOT": "[1.0.48, )", - "GmRelay.ServiceDefaults": "[2.5.0, )", - "GmRelay.Shared": "[2.5.0, )", + "GmRelay.ServiceDefaults": "[3.0.9, )", + "GmRelay.Shared": "[3.0.9, )", "Npgsql": "[10.0.2, )", "Telegram.Bot": "[22.9.5.3, )", "dbup-postgresql": "[7.0.1, )" @@ -404,8 +404,9 @@ "dependencies": { "Aspire.Npgsql": "[13.2.2, )", "Dapper": "[2.1.72, )", - "GmRelay.ServiceDefaults": "[2.5.0, )", - "GmRelay.Shared": "[2.5.0, )", + "Dapper.AOT": "[1.0.48, )", + "GmRelay.ServiceDefaults": "[3.0.9, )", + "GmRelay.Shared": "[3.0.9, )", "NetCord.Hosting": "[1.0.0-alpha.489, )", "NetCord.Hosting.Services": "[1.0.0-alpha.489, )", "NetCord.Services": "[1.0.0-alpha.489, )", @@ -436,8 +437,8 @@ "dependencies": { "Aspire.Npgsql": "[13.2.2, )", "Dapper": "[2.1.72, )", - "GmRelay.ServiceDefaults": "[2.5.0, )", - "GmRelay.Shared": "[2.5.0, )", + "GmRelay.ServiceDefaults": "[3.0.9, )", + "GmRelay.Shared": "[3.0.9, )", "Npgsql": "[10.0.2, )", "Telegram.Bot": "[22.9.6.1, )" }