From 8abddd2f72f1acd02af06ba24236663f8ad13195 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 | 1 + src/GmRelay.Web/Components/Layout/NavMenu.razor | 2 +- .../Discord/DiscordProjectStructureTests.cs | 15 ++++++++------- 6 files changed, 15 insertions(+), 13 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..e4f5762 100644 --- a/src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj +++ b/src/GmRelay.DiscordBot/GmRelay.DiscordBot.csproj @@ -11,6 +11,7 @@ + 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"))); }