Conversation
WalkthroughUpgrade solution and projects from .NET 8 to .NET 10, introduce centralized package versioning (Directory.Packages.props), make GitVersion.Tool installation version-driven via a new PowerShell module, remove Serilog file sink, adjust CI/build/installer scripts, and update test toolchain and functional tests. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/continuous-delivery.yml (1)
64-64: Windows build still uses .NET 8 SDK - should be updated to 10.x.xThe macOS build job (line 103) was updated to use
dotnet-version: 10.x.x, but the Windows build job still uses8.x.x. Since all projects now targetnet10.0, the Windows build will fail when trying to compile against the .NET 8 SDK.Apply this diff to fix the inconsistency:
- name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 8.x.x + dotnet-version: 10.x.x
🧹 Nitpick comments (2)
tests/Elzik.FmSync.Worker.Tests.Functional/WorkerTests.cs (1)
7-8: Unused import detected.
Microsoft.VisualStudio.TestPlatform.CommunicationUtilities(line 8) appears to be unused in this file. WhileSystem.ComponentModelis needed forWin32Exception, the TestPlatform import doesn't seem to have any references.using System.ComponentModel; -using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities;src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj (1)
29-29: Remove unusedSerilog.Sinks.Filepackage reference.The package is not configured in
appSettings.json(only Console sink is used) and has no references in the codebase, making it safe to remove from the project dependencies.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (16)
.github/workflows/continuous-delivery.yml(2 hunks)Elzik.FmSync.sln(2 hunks)global.json(1 hunks)src/Elzik.FmSync.Application/Elzik.FmSync.Application.csproj(2 hunks)src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj(2 hunks)src/Elzik.FmSync.Console/appSettings.json(1 hunks)src/Elzik.FmSync.Domain/Elzik.FmSync.Domain.csproj(2 hunks)src/Elzik.FmSync.Infrastructure/Elzik.FmSync.Infrastructure.csproj(2 hunks)src/Elzik.FmSync.Worker/Elzik.FmSync.Worker.csproj(3 hunks)tests/Elzik.FmSync.Application.Tests.Unit/Elzik.FmSync.Application.Tests.Unit.csproj(2 hunks)tests/Elzik.FmSync.Console.Tests.Functional/ConsoleTests.cs(0 hunks)tests/Elzik.FmSync.Console.Tests.Functional/Elzik.FmSync.Console.Tests.Functional.csproj(2 hunks)tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj(2 hunks)tests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj(2 hunks)tests/Elzik.FmSync.Worker.Tests.Functional/WorkerTests.cs(3 hunks)tests/Elzik.FmSync.Worker.Tests.Functional/appSettings.json(1 hunks)
💤 Files with no reviewable changes (1)
- tests/Elzik.FmSync.Console.Tests.Functional/ConsoleTests.cs
🧰 Additional context used
🪛 GitHub Actions: Continuous Delivery
global.json
[error] 1-1: Requested .NET SDK 10.0.100 not found. global.json points to 10.0.100; installed SDKs do not include it. Install the 10.0.100 SDK or update global.json.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: build-macos
- GitHub Check: Codacy Static Code Analysis
- GitHub Check: Analyze (csharp)
🔇 Additional comments (16)
.github/workflows/continuous-delivery.yml (2)
25-25: GitVersion.Tool update looks good.The tool version is aligned with the
GitVersion.MsBuildpackage version (6.5.1) used across project files.
103-103: macOS SDK update to 10.x.x is correct.This aligns with the target framework upgrade to
net10.0.src/Elzik.FmSync.Domain/Elzik.FmSync.Domain.csproj (1)
4-4: Package and framework updates are consistent.The target framework and package versions align with the broader .NET 10 upgrade across the solution.
Also applies to: 15-15, 19-19
src/Elzik.FmSync.Infrastructure/Elzik.FmSync.Infrastructure.csproj (1)
4-4: Infrastructure project updates are aligned with .NET 10.The target framework, GitVersion, Microsoft.Extensions.Options, and SonarAnalyzer versions are consistent with the upgrade.
Also applies to: 15-15, 19-20
tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj (1)
4-4: Test project updates are consistent.The target framework, test SDK, and analyzer packages are properly updated. The addition of
PrivateAssetsandIncludeAssetstoxunit.analyzerscorrectly marks it as a development-only dependency.Also applies to: 37-37, 39-47
tests/Elzik.FmSync.Application.Tests.Unit/Elzik.FmSync.Application.Tests.Unit.csproj (1)
4-4: Unit test project updates are well-structured.The framework and package updates are consistent. The removal of explicit
System.Net.HttpandSystem.Text.RegularExpressionsreferences (per the AI summary) is correct since these are included in the .NET 10 runtime.Also applies to: 30-30, 36-46
src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj (1)
18-28: Package updates are consistent with .NET 10.The Microsoft.Extensions.* packages (10.0.0) and Serilog packages are properly updated to versions compatible with .NET 10.
tests/Elzik.FmSync.Worker.Tests.Functional/WorkerTests.cs (2)
339-360: Good addition of exception handling for process cleanup.The try-catch block around
KillExistingWorkerProcessesproperly handlesWin32Exceptionand provides a clear failure message when permissions are insufficient. The pattern of catching a specific exception, handling the known case, and re-throwing otherwise is correct.
111-111: Test expectation updated to match startup sequence.The change from
"Hosting started"to"A total of 1 directory watchers are running."waits for a later point in the startup sequence, ensuring the worker is fully initialized before the test proceeds.src/Elzik.FmSync.Application/Elzik.FmSync.Application.csproj (1)
4-4: Consistent .NET 10 upgrade applied.The framework and package version updates are consistent with the Worker project upgrade, maintaining alignment across the solution.
Also applies to: 15-22
Elzik.FmSync.sln (1)
28-41: Solution structure reorganized correctly.The project entries have been properly restructured with correct GUIDs and paths maintained throughout the configuration sections.
src/Elzik.FmSync.Console/appSettings.json (1)
9-13: Simplified logging configuration for console application.Removing file-based logging in favor of console-only output is appropriate for a console application, simplifying the configuration and aligning with typical console app patterns.
tests/Elzik.FmSync.Worker.Tests.Functional/appSettings.json (1)
21-21: Simplified test log path configuration.The change from a platform-specific placeholder to a relative path simplifies the test configuration and makes it more maintainable.
tests/Elzik.FmSync.Console.Tests.Functional/Elzik.FmSync.Console.Tests.Functional.csproj (1)
4-4: Test project properly upgraded to .NET 10.The framework and test tooling updates are consistent with the solution-wide upgrade. The addition of PrivateAssets and IncludeAssets attributes to xunit.analyzers improves package reference best practices.
Also applies to: 40-40, 42-42, 47-50
tests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj (1)
4-4: Test project upgrade mirrors Console test project pattern.The framework and package updates are consistent with the Console functional tests project, maintaining uniformity across the test suite.
Also applies to: 40-40, 42-42, 47-50
src/Elzik.FmSync.Worker/Elzik.FmSync.Worker.csproj (1)
4-4: No action required — .NET 10.0 is officially released and package versions are compatible..NET 10.0 was officially released on November 11, 2025, as a Long-Term Support (LTS) version. All referenced packages are available and compatible with .NET 10:
- GitVersion.MsBuild 6.5.0 (stable, Nov 5, 2025)
- Serilog.Extensions.Hosting 9.0.0 (stable)
- Serilog.Settings.Configuration 10.0.0 (Nov 26, 2025)
- Microsoft.Extensions.Hosting 10.0.0 (compatible with net10.0)
The target framework configuration is current and appropriate for production use.
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesFootnotes
|
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
Build/tag-with-semver.ps1 (1)
1-7:⚠️ Potential issue | 🟠 MajorPush only the tag you just rewrote.
Line 6 force-moves the local tag, but Line 7 pushes all tags without
--force. On reruns, this fails when the tag already exists remotely, and it can also publish unrelated local tags. Push only the specific tag and match the force semantics.Proposed fix
git tag $tag -f -git push --tags +git push origin "refs/tags/$tag" --force🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Build/tag-with-semver.ps1` around lines 1 - 7, The script currently force-recreates the local tag ($tag) with git tag -f but then pushes all tags (git push --tags), which can fail or publish unrelated tags; change the push to only push the rewritten tag and preserve force semantics by replacing the global push with a targeted force push of $tag (e.g., use git push --force origin refs/tags/$tag or git push origin --force $tag) so only the specific tag is pushed and remote is updated to match the local force move.src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj (1)
51-52:⚠️ Potential issue | 🟠 MajorQuote the publish script invocation and stop hard-coding
PowerShell.Line 52 will split
$(ProjectDir)and$(PublishDir)on spaces, andPowerShellis not the executable name on Linux/macOS agents. Please quote every path/argument and use an OS-specific shell property; the post-build target should get the same fix so both paths behave consistently.Proposed fix
Add this once near the top of the project:
<PropertyGroup> <PowerShellExecutable Condition="'$(OS)' == 'Windows_NT'">powershell</PowerShellExecutable> <PowerShellExecutable Condition="'$(OS)' != 'Windows_NT'">pwsh</PowerShellExecutable> </PropertyGroup><Target Name="ConsolePostBuildConfigUpdate" AfterTargets="PostBuildEvent"> - <Exec Command="PowerShell -NoProfile -ExecutionPolicy unrestricted -file $(ProjectDir)../../Build/set-platform-specific-config.ps1 $(OutDir) $(OS)" /> + <Exec Command=""$(PowerShellExecutable)" -NoProfile -ExecutionPolicy unrestricted -File "$(ProjectDir)../../Build/set-platform-specific-config.ps1" "$(OutDir)" "$(OS)"" /> </Target> <Target Name="ConsolePostPublishConfigUpdate" AfterTargets="Publish"> - <Exec Command="PowerShell -NoProfile -ExecutionPolicy unrestricted -file $(ProjectDir)../../Build/set-platform-specific-config.ps1 $(PublishDir) $(OS)" /> + <Exec Command=""$(PowerShellExecutable)" -NoProfile -ExecutionPolicy unrestricted -File "$(ProjectDir)../../Build/set-platform-specific-config.ps1" "$(PublishDir)" "$(OS)"" /> </Target>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj` around lines 51 - 52, The post-publish target ConsolePostPublishConfigUpdate currently hard-codes PowerShell and leaves paths unquoted; introduce a PowerShellExecutable property (set to "powershell" on Windows_NT and "pwsh" otherwise), update the <Exec> Command to use that property instead of the literal "PowerShell", and ensure all interpolated arguments like $(ProjectDir), $(PublishDir) and $(OS) are individually quoted to avoid splitting on spaces; apply the same quoting and PowerShellExecutable usage to the corresponding post-build target so both targets behave consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Build/build-windows-installer.ps1`:
- Line 34: Replace instances of the global "dotnet tool update --global
GitVersion.Tool --version 6.6.0" invocation with "dotnet tool install --global
GitVersion.Tool --version 6.6.0" so the CI job does not depend on a
pre-installed global tool; update the command in
Build/build-windows-installer.ps1 (symbol: the dotnet tool update line) and make
the same change in build-osx-installer.ps1 (the corresponding line around the
GitVersion.Tool call) and tag-with-semver.ps1 (the initial dotnet tool
invocation), ensuring you use install --global and add --allow-prerelease only
if you need prerelease versions.
In
`@Installer/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixproj`:
- Line 12: The project still overrides GitVersionTargetFramework to net8.0 while
upgrading GitVersion.MsBuild to 6.6.0; update the MSBuild property
GitVersionTargetFramework in Elzik.FmSync.WindowsInstaller.wixproj from "net8.0"
to "net10.0" so it matches the rest of the codebase and the new GitVersion
package; locate the GitVersionTargetFramework property in the project file and
change its value to "net10.0", then rebuild to confirm no target-framework
mismatches.
In
`@tests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj`:
- Around line 32-39: Remove the coverlet.collector package reference from the
test project: locate the <PackageReference Include="coverlet.collector"
Version="8.0.0"> entry in Elzik.FmSync.Worker.Tests.Functional.csproj and delete
that entire PackageReference block so only coverlet.msbuild remains (preserve
the existing coverlet.msbuild PackageReference); this ensures coverage is
collected via coverlet.msbuild as required by the build script.
---
Outside diff comments:
In `@Build/tag-with-semver.ps1`:
- Around line 1-7: The script currently force-recreates the local tag ($tag)
with git tag -f but then pushes all tags (git push --tags), which can fail or
publish unrelated tags; change the push to only push the rewritten tag and
preserve force semantics by replacing the global push with a targeted force push
of $tag (e.g., use git push --force origin refs/tags/$tag or git push origin
--force $tag) so only the specific tag is pushed and remote is updated to match
the local force move.
In `@src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj`:
- Around line 51-52: The post-publish target ConsolePostPublishConfigUpdate
currently hard-codes PowerShell and leaves paths unquoted; introduce a
PowerShellExecutable property (set to "powershell" on Windows_NT and "pwsh"
otherwise), update the <Exec> Command to use that property instead of the
literal "PowerShell", and ensure all interpolated arguments like $(ProjectDir),
$(PublishDir) and $(OS) are individually quoted to avoid splitting on spaces;
apply the same quoting and PowerShellExecutable usage to the corresponding
post-build target so both targets behave consistently.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: f278317c-1b06-4447-9ec8-92c6da00038d
📒 Files selected for processing (14)
.github/workflows/continuous-delivery.ymlBuild/build-osx-installer.ps1Build/build-windows-installer.ps1Build/tag-with-semver.ps1Installer/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixprojsrc/Elzik.FmSync.Application/Elzik.FmSync.Application.csprojsrc/Elzik.FmSync.Console/Elzik.FmSync.Console.csprojsrc/Elzik.FmSync.Domain/Elzik.FmSync.Domain.csprojsrc/Elzik.FmSync.Infrastructure/Elzik.FmSync.Infrastructure.csprojsrc/Elzik.FmSync.Worker/Elzik.FmSync.Worker.csprojtests/Elzik.FmSync.Application.Tests.Unit/Elzik.FmSync.Application.Tests.Unit.csprojtests/Elzik.FmSync.Console.Tests.Functional/Elzik.FmSync.Console.Tests.Functional.csprojtests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csprojtests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj
🚧 Files skipped from review as they are similar to previous changes (6)
- src/Elzik.FmSync.Domain/Elzik.FmSync.Domain.csproj
- Build/build-osx-installer.ps1
- src/Elzik.FmSync.Worker/Elzik.FmSync.Worker.csproj
- tests/Elzik.FmSync.Console.Tests.Functional/Elzik.FmSync.Console.Tests.Functional.csproj
- src/Elzik.FmSync.Application/Elzik.FmSync.Application.csproj
- .github/workflows/continuous-delivery.yml
Installer/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixproj
Outdated
Show resolved
Hide resolved
tests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj (1)
40-48:⚠️ Potential issue | 🟡 MinorConsider .NET 8 runtime requirement for xunit.runner.visualstudio 3.1.5.
The
xunit.runner.visualstudio3.x series is compatible with xunit 2.x. However, version 3.1.0 and later require .NET 8 as the minimum runtime for the runner utility. If this test project targets an older .NET version, the 3.1.5 runner may encounter runtime compatibility issues. Consider pinning to an earlier 3.x version (e.g., 3.0.2) if .NET 8 is not available.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj` around lines 40 - 48, The xunit.runner.visualstudio PackageReference currently uses version 3.1.5 which requires .NET 8; either downgrade the PackageReference for xunit.runner.visualstudio from "3.1.5" to a .NET‑7 compatible version like "3.0.2" or update the test project's TargetFramework to net8.0 so the runner's runtime requirement is met—modify the PackageReference element with Include="xunit.runner.visualstudio" (or adjust the TargetFramework element) accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In
`@tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj`:
- Around line 40-48: The xunit.runner.visualstudio PackageReference currently
uses version 3.1.5 which requires .NET 8; either downgrade the PackageReference
for xunit.runner.visualstudio from "3.1.5" to a .NET‑7 compatible version like
"3.0.2" or update the test project's TargetFramework to net8.0 so the runner's
runtime requirement is met—modify the PackageReference element with
Include="xunit.runner.visualstudio" (or adjust the TargetFramework element)
accordingly.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 7cdcb512-5fe8-4068-8165-e32c5376fd0f
📒 Files selected for processing (4)
tests/Elzik.FmSync.Application.Tests.Unit/Elzik.FmSync.Application.Tests.Unit.csprojtests/Elzik.FmSync.Console.Tests.Functional/Elzik.FmSync.Console.Tests.Functional.csprojtests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csprojtests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj
There was a problem hiding this comment.
🧹 Nitpick comments (2)
tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj (1)
34-45: Minor: Inconsistent indentation on PackageReference elements.Lines 34, 35, 40, 41, and 45 have a leading space before the
<PackageReferencetag, while line 30 does not. This is purely cosmetic.🧹 Proposed fix for consistent indentation
- <PackageReference Include="Microsoft.NET.Test.Sdk" /> - <PackageReference Include="Shouldly" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" /> + <PackageReference Include="Shouldly" />Apply similar spacing adjustments to lines 40, 41, and 45.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj` around lines 34 - 45, The PackageReference elements have inconsistent leading spaces; normalize indentation so all <PackageReference .../> tags match the existing style (no leading space) used earlier in the file. Update the entries including SonarAnalyzer.CSharp, xunit.analyzers, xunit.runner.visualstudio (and any other PackageReference tags shown) to remove the extra leading space so indentation is consistent across the csproj.src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj (1)
29-29: Consider removingSerilog.Sinks.Fileif no longer used.Based on the summary, the File sink configuration was removed from
appSettings.json. If file logging is no longer needed, this package reference could be removed to reduce dependencies.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj` at line 29, The project still references the Serilog.Sinks.File package even though file sink config was removed; remove the PackageReference for "Serilog.Sinks.File" from the Elzik.FmSync.Console.csproj (the <PackageReference Include="Serilog.Sinks.File" /> element) to drop the unused dependency, then run dotnet restore/build to verify nothing else depends on that sink and update any remaining logging configuration if necessary.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@src/Elzik.FmSync.Console/Elzik.FmSync.Console.csproj`:
- Line 29: The project still references the Serilog.Sinks.File package even
though file sink config was removed; remove the PackageReference for
"Serilog.Sinks.File" from the Elzik.FmSync.Console.csproj (the <PackageReference
Include="Serilog.Sinks.File" /> element) to drop the unused dependency, then run
dotnet restore/build to verify nothing else depends on that sink and update any
remaining logging configuration if necessary.
In
`@tests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csproj`:
- Around line 34-45: The PackageReference elements have inconsistent leading
spaces; normalize indentation so all <PackageReference .../> tags match the
existing style (no leading space) used earlier in the file. Update the entries
including SonarAnalyzer.CSharp, xunit.analyzers, xunit.runner.visualstudio (and
any other PackageReference tags shown) to remove the extra leading space so
indentation is consistent across the csproj.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 3e303450-78df-49bb-bbb6-7dab1056ffeb
📒 Files selected for processing (12)
.github/dependabot.ymlDirectory.Packages.propsInstaller/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixprojsrc/Elzik.FmSync.Application/Elzik.FmSync.Application.csprojsrc/Elzik.FmSync.Console/Elzik.FmSync.Console.csprojsrc/Elzik.FmSync.Domain/Elzik.FmSync.Domain.csprojsrc/Elzik.FmSync.Infrastructure/Elzik.FmSync.Infrastructure.csprojsrc/Elzik.FmSync.Worker/Elzik.FmSync.Worker.csprojtests/Elzik.FmSync.Application.Tests.Unit/Elzik.FmSync.Application.Tests.Unit.csprojtests/Elzik.FmSync.Console.Tests.Functional/Elzik.FmSync.Console.Tests.Functional.csprojtests/Elzik.FmSync.Infrastructure.Tests.Integration/Elzik.FmSync.Infrastructure.Tests.Integration.csprojtests/Elzik.FmSync.Worker.Tests.Functional/Elzik.FmSync.Worker.Tests.Functional.csproj
💤 Files with no reviewable changes (1)
- .github/dependabot.yml
🚧 Files skipped from review as they are similar to previous changes (3)
- Installer/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixproj
- src/Elzik.FmSync.Worker/Elzik.FmSync.Worker.csproj
- src/Elzik.FmSync.Infrastructure/Elzik.FmSync.Infrastructure.csproj
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Build/build-osx-installer.ps1`:
- Around line 75-77: The current bootstrap always runs "dotnet tool install" for
GitVersion.Tool and fails on reruns; modify the logic after calling
Get-GitVersionToolVersion (using $gitVersionToolVersion) to first run "dotnet
tool list --global" and check for an existing GitVersion.Tool entry matching the
tool name, then call "dotnet tool update --global GitVersion.Tool --version
$gitVersionToolVersion" when installed or "dotnet tool install --global
GitVersion.Tool --version $gitVersionToolVersion" when not installed so the
bootstrap becomes idempotent.
In `@Build/build-windows-installer.ps1`:
- Around line 34-36: Replace the unconditional dotnet tool install call for
GitVersion.Tool with an idempotent branch: use dotnet tool list --global to
check for GitVersion.Tool (use the same name used in the failing call), and if
present run dotnet tool update --global --version $gitVersionToolVersion
--allow-downgrade, otherwise run dotnet tool install --global --version
$gitVersionToolVersion --allow-downgrade; keep using Get-GitVersionToolVersion
to populate $gitVersionToolVersion and ensure all invocations reference that
variable.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 1c398a1e-9254-4c82-8ed5-4dce5aa6a4c3
📒 Files selected for processing (7)
.github/workflows/continuous-delivery.ymlBuild/Get-GitVersionToolVersion.psm1Build/build-osx-installer.ps1Build/build-windows-installer.ps1Build/tag-with-semver.ps1Directory.Packages.propsInstaller/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixproj
💤 Files with no reviewable changes (1)
- Build/tag-with-semver.ps1
Summary by CodeRabbit
Chores
Changes