Add support for systems running only .NET 9.0 (without .NET 8.0) in Refitter.MSBuild#746
Conversation
WalkthroughUpdates MSBuild packaging paths to versioned task folders, adds .NET runtime detection in RefitterGenerateTask to choose net8.0 or net9.0 refitter.dll at runtime, and introduces a Bash script to perform an end-to-end local build, pack, and test cycle for the MSBuild integration. Changes
Sequence Diagram(s)sequenceDiagram
participant MSB as MSBuild
participant Task as RefitterGenerateTask
participant CLI as dotnet CLI
participant RT as Installed Runtimes
participant DLL as refitter.dll (net8.0 or net9.0)
MSB->>Task: Execute()
Task->>CLI: dotnet --list-runtimes
CLI-->>Task: list of runtimes
Task->>RT: Inspect for Microsoft.NETCore.App 9.x
alt .NET 9 found
Task->>Task: Select path .../net9.0/refitter.dll
Task-->>MSB: Log "Using .NET 9"
else .NET 9 not found
Task->>Task: Select path .../net8.0/refitter.dll
Task-->>MSB: Log "Using .NET 8"
end
Task->>CLI: dotnet [args] <path to DLL> [...options]
CLI->>DLL: Launch generator
DLL-->>Task: Generate files
Task-->>MSB: Return existing generated files
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Pre-merge checks (2 passed, 1 warning)❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Poem
Tip 👮 Agentic pre-merge checks are now available in preview!Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.
Please see the documentation for more information. Example: reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"
mode: "warning"
instructions: |
Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).Please share your feedback with us on this Discord post. ✨ Finishing touches
🧪 Generate unit tests
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.
Pull Request Overview
This PR adds support for systems running only .NET 9.0 (without .NET 8.0) in Refitter.MSBuild by implementing runtime detection and dynamic path resolution. The changes ensure the MSBuild task can use the appropriate .NET version of the CLI tool based on what's installed on the system.
- Adds runtime detection logic to identify available .NET versions
- Updates package structure to include both .NET 8.0 and 9.0 versions
- Implements fallback logic prioritizing .NET 9.0 when available
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| src/Refitter.MSBuild/RefitterGenerateTask.cs | Adds runtime detection and dynamic path resolution for .NET 8/9 CLI executables |
| src/Refitter.MSBuild/Refitter.MSBuild.csproj | Updates package structure to include both .NET 8.0 and 9.0 binaries in separate folders |
| test/MSBuild/build.sh | Adds test script for MSBuild integration testing |
| var args = $"{refitterDll} --settings-file {file}"; | ||
| if (DisableLogging) | ||
| { | ||
| TryLogError($"Refitter CLI not found at: {refitterDll}"); | ||
| TryLogError($"Assembly location: {assembly.Location}"); | ||
| TryLogError($"Package folder: {packageFolder}"); | ||
| return new List<string>(); | ||
| args += " --no-logging"; | ||
| } |
There was a problem hiding this comment.
The code no longer validates if the refitterDll file exists before attempting to execute it. The original file existence check was removed but not replaced, which could lead to runtime errors when the selected .NET version's DLL is missing.
| private static List<string> GetInstalledDotnetRuntimes() | ||
| { | ||
| var installedRuntimes = new List<string>(); | ||
| using (var process = new Process()) | ||
| { | ||
| process.StartInfo.FileName = "dotnet"; | ||
| process.StartInfo.Arguments = "--list-runtimes"; | ||
| process.StartInfo.RedirectStandardOutput = true; | ||
| process.StartInfo.UseShellExecute = false; | ||
| process.StartInfo.CreateNoWindow = true; | ||
|
|
||
| process.Start(); | ||
| using (var reader = process.StandardOutput) | ||
| { | ||
| var output = reader.ReadToEnd(); | ||
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); | ||
| } | ||
| process.WaitForExit(); | ||
| } |
There was a problem hiding this comment.
The method doesn't handle process execution failures or capture stderr output. If the 'dotnet' command fails or isn't found, the method will silently return an empty list, causing the runtime detection to fail without proper error reporting.
| private static List<string> GetInstalledDotnetRuntimes() | |
| { | |
| var installedRuntimes = new List<string>(); | |
| using (var process = new Process()) | |
| { | |
| process.StartInfo.FileName = "dotnet"; | |
| process.StartInfo.Arguments = "--list-runtimes"; | |
| process.StartInfo.RedirectStandardOutput = true; | |
| process.StartInfo.UseShellExecute = false; | |
| process.StartInfo.CreateNoWindow = true; | |
| process.Start(); | |
| using (var reader = process.StandardOutput) | |
| { | |
| var output = reader.ReadToEnd(); | |
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); | |
| } | |
| process.WaitForExit(); | |
| } | |
| private List<string> GetInstalledDotnetRuntimes() | |
| { | |
| var installedRuntimes = new List<string>(); | |
| try | |
| { | |
| using (var process = new Process()) | |
| { | |
| process.StartInfo.FileName = "dotnet"; | |
| process.StartInfo.Arguments = "--list-runtimes"; | |
| process.StartInfo.RedirectStandardOutput = true; | |
| process.StartInfo.RedirectStandardError = true; | |
| process.StartInfo.UseShellExecute = false; | |
| process.StartInfo.CreateNoWindow = true; | |
| process.Start(); | |
| string output = process.StandardOutput.ReadToEnd(); | |
| string error = process.StandardError.ReadToEnd(); | |
| process.WaitForExit(); | |
| if (process.ExitCode != 0) | |
| { | |
| TryLogError($"Failed to execute 'dotnet --list-runtimes'. Exit code: {process.ExitCode}. Error: {error}"); | |
| return new List<string>(); | |
| } | |
| if (!string.IsNullOrWhiteSpace(error)) | |
| { | |
| TryLogError($"Error output from 'dotnet --list-runtimes': {error}"); | |
| } | |
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); | |
| } | |
| } | |
| catch (Exception ex) | |
| { | |
| TryLogError($"Exception while executing 'dotnet --list-runtimes': {ex.Message}"); | |
| return new List<string>(); | |
| } |
| using (var reader = process.StandardOutput) | ||
| { | ||
| var output = reader.ReadToEnd(); | ||
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); |
There was a problem hiding this comment.
The null-conditional operator on output is unnecessary since Split is called on a potentially null string. If output is null, this will throw a NullReferenceException. Should use output?.Split(...) ?? [] or check for null explicitly before splitting.
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); | |
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty<string>()); |
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #746 +/- ##
==========================================
+ Coverage 95.47% 98.52% +3.05%
==========================================
Files 60 60
Lines 2982 2918 -64
==========================================
+ Hits 2847 2875 +28
+ Misses 102 4 -98
- Partials 33 39 +6
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (2)
test/MSBuild/build.sh (1)
20-20: Consider capturing build output for debugging.The verbose logging with
-fileloggerwill create an msbuild.log file, but it's not mentioned or cleaned up.Apply this diff to handle the log file:
dotnet run -v d -filelogger + +# Display log file location for debugging +if [ -f msbuild.log ]; then + echo "Build log saved to: $(pwd)/msbuild.log" +fi + dotnet remove package Refitter.MSBuild rm -f Refitter.MSBuild.*.nupkg +rm -f msbuild.log # Clean up log filesrc/Refitter.MSBuild/RefitterGenerateTask.cs (1)
67-67: Typo in variable name: "seperator" should be "separator".The variable name has a spelling error that appears multiple times in the code.
Apply this diff to fix the typo:
- var seperator = Path.DirectorySeparatorChar; - var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll"; + var separator = Path.DirectorySeparatorChar; + var refitterDll = $"{packageFolder}{separator}..{separator}net8.0{separator}refitter.dll";And update line 73 as well:
- refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll"; + refitterDll = $"{packageFolder}{separator}..{separator}net9.0{separator}refitter.dll";
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
src/Refitter.MSBuild/Refitter.MSBuild.csproj(1 hunks)src/Refitter.MSBuild/RefitterGenerateTask.cs(2 hunks)test/MSBuild/build.sh(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.cs
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
**/*.cs: Follow existing C# coding conventions defined in .editorconfig
Use PascalCase for public members and camelCase for parameters and local variables
Use meaningful variable and method names
Keep methods focused with single responsibility
Files:
src/Refitter.MSBuild/RefitterGenerateTask.cs
src/{Refitter,Refitter.Core,Refitter.SourceGenerator,Refitter.MSBuild}/**/*.cs
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Include XML documentation for public APIs
Files:
src/Refitter.MSBuild/RefitterGenerateTask.cs
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
PR: christianhelle/refitter#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-13T18:27:12.292Z
Learning: Before committing, run 'dotnet format src/Refitter.sln' and ensure 'dotnet format --verify-no-changes' passes
Learnt from: CR
PR: christianhelle/refitter#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-13T18:27:12.292Z
Learning: Install .NET 8.0 and 9.0 SDKs and ensure PATH is set as described before building or testing
📚 Learning: 2025-08-13T18:27:12.292Z
Learnt from: CR
PR: christianhelle/refitter#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-13T18:27:12.292Z
Learning: Applies to src/{Refitter,Refitter.Core,Refitter.SourceGenerator,Refitter.MSBuild}/**/*.cs : Include XML documentation for public APIs
Applied to files:
src/Refitter.MSBuild/Refitter.MSBuild.csproj
📚 Learning: 2025-08-13T18:27:12.292Z
Learnt from: CR
PR: christianhelle/refitter#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-13T18:27:12.292Z
Learning: Before committing, run 'dotnet format src/Refitter.sln' and ensure 'dotnet format --verify-no-changes' passes
Applied to files:
src/Refitter.MSBuild/Refitter.MSBuild.csprojtest/MSBuild/build.sh
⏰ 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). (5)
- GitHub Check: 👌 Verify build
- GitHub Check: 👌 Verify build
- GitHub Check: script
- GitHub Check: 👌 Verify build
- GitHub Check: Analyze (csharp)
🔇 Additional comments (2)
src/Refitter.MSBuild/Refitter.MSBuild.csproj (1)
27-28: LGTM! The multi-runtime packaging structure aligns well with the runtime detection logic.The separation of net8.0 and net9.0 content into versioned task folders enables the MSBuild task to select the appropriate runtime at execution time.
src/Refitter.MSBuild/RefitterGenerateTask.cs (1)
115-136: Add XML documentation for the new public method.According to the coding guidelines, public APIs in this project should include XML documentation.
Apply this diff to add XML documentation:
+ /// <summary> + /// Gets the list of installed .NET runtimes by invoking 'dotnet --list-runtimes'. + /// </summary> + /// <returns>A list of installed runtime descriptions.</returns> private static List<string> GetInstalledDotnetRuntimes()Actually, since this is a
privatemethod, XML documentation is not required. The method visibility is appropriate.
| var expectedFiles = GetExpectedGeneratedFiles(file); | ||
| var assembly = Assembly.GetExecutingAssembly(); | ||
| var packageFolder = Path.GetDirectoryName(assembly.Location); | ||
| var seperator = Path.DirectorySeparatorChar; | ||
| var refitterDll = $"{packageFolder}{seperator}..{seperator}refitter.dll"; | ||
| var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll"; | ||
|
|
||
| var args = $"{refitterDll} --settings-file {file}"; | ||
| if (DisableLogging) | ||
| List<string> installedRuntimes = GetInstalledDotnetRuntimes(); | ||
| if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9."))) | ||
| { | ||
| args += " --no-logging"; | ||
| // Use .NET 9 version if available | ||
| refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll"; | ||
| TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter."); | ||
| } | ||
| else | ||
| { | ||
| TryLogCommandLine("Using .NET 8 version of Refitter."); | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add fallback for when the dotnet command fails to detect runtimes.
The runtime detection could fail if the dotnet command is not available or returns an error. Consider adding error handling.
Apply this diff to add error handling:
var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll";
- List<string> installedRuntimes = GetInstalledDotnetRuntimes();
- if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9.")))
+ try
{
- // Use .NET 9 version if available
- refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll";
- TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter.");
+ List<string> installedRuntimes = GetInstalledDotnetRuntimes();
+ if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9.")))
+ {
+ // Use .NET 9 version if available
+ refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll";
+ TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter.");
+ }
+ else
+ {
+ TryLogCommandLine("Using .NET 8 version of Refitter.");
+ }
}
- else
+ catch (Exception ex)
{
- TryLogCommandLine("Using .NET 8 version of Refitter.");
+ TryLogCommandLine($"Failed to detect .NET runtimes: {ex.Message}. Defaulting to .NET 8 version.");
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| var expectedFiles = GetExpectedGeneratedFiles(file); | |
| var assembly = Assembly.GetExecutingAssembly(); | |
| var packageFolder = Path.GetDirectoryName(assembly.Location); | |
| var seperator = Path.DirectorySeparatorChar; | |
| var refitterDll = $"{packageFolder}{seperator}..{seperator}refitter.dll"; | |
| var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll"; | |
| var args = $"{refitterDll} --settings-file {file}"; | |
| if (DisableLogging) | |
| List<string> installedRuntimes = GetInstalledDotnetRuntimes(); | |
| if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9."))) | |
| { | |
| args += " --no-logging"; | |
| // Use .NET 9 version if available | |
| refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll"; | |
| TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter."); | |
| } | |
| else | |
| { | |
| TryLogCommandLine("Using .NET 8 version of Refitter."); | |
| } | |
| var expectedFiles = GetExpectedGeneratedFiles(file); | |
| var assembly = Assembly.GetExecutingAssembly(); | |
| var packageFolder = Path.GetDirectoryName(assembly.Location); | |
| var seperator = Path.DirectorySeparatorChar; | |
| var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll"; | |
| try | |
| { | |
| List<string> installedRuntimes = GetInstalledDotnetRuntimes(); | |
| if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9."))) | |
| { | |
| // Use .NET 9 version if available | |
| refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll"; | |
| TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter."); | |
| } | |
| else | |
| { | |
| TryLogCommandLine("Using .NET 8 version of Refitter."); | |
| } | |
| } | |
| catch (Exception ex) | |
| { | |
| TryLogCommandLine($"Failed to detect .NET runtimes: {ex.Message}. Defaulting to .NET 8 version."); | |
| } |
🤖 Prompt for AI Agents
In src/Refitter.MSBuild/RefitterGenerateTask.cs around lines 63 to 79, the code
assumes GetInstalledDotnetRuntimes() always succeeds and will throw or return
nothing if the dotnet command is missing; wrap the call in a try/catch (or
otherwise detect failures) so exceptions are caught and logged via
TryLogCommandLine/TryLogError, treat failures as “unknown” and fall back to
using the .NET 8 refitter.dll path, and ensure you also handle an empty list
case by falling back to .NET 8 and logging a warning that runtime detection
failed so the build continues with the safe default.
| var args = $"{refitterDll} --settings-file {file}"; | ||
| if (DisableLogging) | ||
| { | ||
| TryLogError($"Refitter CLI not found at: {refitterDll}"); | ||
| TryLogError($"Assembly location: {assembly.Location}"); | ||
| TryLogError($"Package folder: {packageFolder}"); | ||
| return new List<string>(); | ||
| args += " --no-logging"; | ||
| } |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Verify that the refitter.dll exists before attempting to execute.
The previous version had a check to ensure the refitter.dll file exists. Without this check, the error message might be less clear if the file is missing.
Let me verify if there's any validation elsewhere in the codebase:
🏁 Script executed:
#!/bin/bash
# Check if there's any file existence validation for refitter.dll
rg -n "File\.Exists.*refitter" --type cs
rg -n "refitter\.dll" --type cs -C3Length of output: 1327
Add a File.Exists guard for refitter.dll before executing.
No existence check was found in src/Refitter.MSBuild/RefitterGenerateTask.cs — refitterDll is built around line ~67 and args are assembled at lines 81–85; add a guard like if (!File.Exists(refitterDll)) { Log.LogError($"Refitter not found at '{refitterDll}'"); return false; } so failures are clear.
🤖 Prompt for AI Agents
In src/Refitter.MSBuild/RefitterGenerateTask.cs around lines 81–85 (refitterDll
is constructed near line ~67), add a File.Exists check for refitterDll before
assembling or executing the args; if the file does not exist call Log.LogError
with a clear message including the refitterDll path and return false to abort
the task so failures are explicit and surfaced.
| using (var reader = process.StandardOutput) | ||
| { | ||
| var output = reader.ReadToEnd(); | ||
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); |
There was a problem hiding this comment.
Potential NullReferenceException when splitting output.
The null-conditional operator ?. is used with Split, but the result is then passed to AddRange which doesn't handle null gracefully.
Apply this diff to handle potential null output:
- installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries));
+ if (!string.IsNullOrEmpty(output))
+ {
+ installedRuntimes.AddRange(output.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries));
+ }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| installedRuntimes.AddRange(output?.Split([Environment.NewLine], StringSplitOptions.RemoveEmptyEntries)); | |
| if (!string.IsNullOrEmpty(output)) | |
| { | |
| installedRuntimes.AddRange(output.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)); | |
| } |
🤖 Prompt for AI Agents
In src/Refitter.MSBuild/RefitterGenerateTask.cs around line 130, the code calls
AddRange(output?.Split([Environment.NewLine],
StringSplitOptions.RemoveEmptyEntries)) which can pass null to AddRange if
output is null; change it so AddRange receives a non-null sequence (for example
use the null-coalescing operator to supply Array.Empty<string>() or an empty
enumerable when output is null) so AddRange is never called with a null
argument.
| #!/bin/bash | ||
|
|
||
| rm -rf bin | ||
| rm -rf obj | ||
| dotnet build-server shutdown | ||
| dotnet nuget locals global-packages --clear | ||
| rm -f Refitter.MSBuild.*.nupkg | ||
| rm -f Petstore.cs | ||
| dotnet restore ../../src/Refitter.sln | ||
| dotnet clean -c release ../../src/Refitter.sln | ||
| dotnet build -c release ../../src/Refitter/Refitter.csproj | ||
| dotnet build -c release ../../src/Refitter.MSBuild/Refitter.MSBuild.csproj | ||
| dotnet pack -c release ../../src/Refitter.MSBuild/Refitter.MSBuild.csproj -o . | ||
|
|
||
| # Find the nupkg file and add it as a package | ||
| find . -name "Refitter.MSBuild.*.nupkg" -exec dotnet add package {} --source . \; | ||
|
|
||
| dotnet restore | ||
| dotnet add package Refitter.MSBuild --source . | ||
| dotnet run -v d -filelogger | ||
| dotnet remove package Refitter.MSBuild | ||
| rm -f Refitter.MSBuild.*.nupkg No newline at end of file |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add error handling and make the script more robust.
The script lacks error handling which could lead to silent failures or incomplete cleanup. Consider adding set -e to exit on errors and trap cleanup operations.
Apply this diff to add error handling:
#!/bin/bash
+set -e # Exit on error
+
+# Trap to ensure cleanup even on failure
+trap 'echo "Build failed. Cleaning up..."; rm -f Refitter.MSBuild.*.nupkg' ERR
rm -rf bin
rm -rf objAlso consider checking if required tools are available:
# Check required tools
for cmd in dotnet find; do
if ! command -v $cmd &> /dev/null; then
echo "Error: $cmd is not installed"
exit 1
fi
done🤖 Prompt for AI Agents
In test/MSBuild/build.sh around lines 1 to 22, the script lacks error handling
and checks for required commands; update it to fail fast and perform guaranteed
cleanup by adding "set -euo pipefail" (or at least "set -e"), add a trap to run
cleanup on EXIT (removing temporary files and shutting down build server), and
explicitly verify required tools (dotnet and find) are available before
proceeding, printing a clear error and exiting if missing; also ensure each
critical command is allowed to fail the script (no silent ignores) and log
failures with descriptive messages so failures are visible.
| dotnet pack -c release ../../src/Refitter.MSBuild/Refitter.MSBuild.csproj -o . | ||
|
|
||
| # Find the nupkg file and add it as a package | ||
| find . -name "Refitter.MSBuild.*.nupkg" -exec dotnet add package {} --source . \; |
There was a problem hiding this comment.
The find command may fail if no .nupkg files exist.
The find command with -exec will fail if no matching files are found, which could happen on first run or after cleanup.
Apply this diff to handle the case when no packages are found:
# Find the nupkg file and add it as a package
-find . -name "Refitter.MSBuild.*.nupkg" -exec dotnet add package {} --source . \;
+NUPKG_FILES=$(find . -name "Refitter.MSBuild.*.nupkg" 2>/dev/null || true)
+if [ -n "$NUPKG_FILES" ]; then
+ echo "$NUPKG_FILES" | xargs -I {} dotnet add package {} --source .
+else
+ echo "Error: No .nupkg files found after packing"
+ exit 1
+fi📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| find . -name "Refitter.MSBuild.*.nupkg" -exec dotnet add package {} --source . \; | |
| # Find the nupkg file and add it as a package | |
| NUPKG_FILES=$(find . -name "Refitter.MSBuild.*.nupkg" 2>/dev/null || true) | |
| if [ -n "$NUPKG_FILES" ]; then | |
| echo "$NUPKG_FILES" | xargs -I {} dotnet add package {} --source . | |
| else | |
| echo "Error: No .nupkg files found after packing" | |
| exit 1 | |
| fi |
🤖 Prompt for AI Agents
In test/MSBuild/build.sh around line 16 the find command uses -exec which causes
the script to exit/fail when no Refitter.MSBuild.*.nupkg files exist; replace
that single-line command with a safe variant that does nothing when there are no
matches (for example use find ... -print0 piped to xargs -0 with the GNU xargs
-r/--no-run-if-empty option, or use find -exec sh -c 'dotnet add package "$1"
--source .' _ {} \; wrapped to ignore missing results) so the script continues
without error when no .nupkg files are found.
Updated [refitter](https://github.com/christianhelle/refitter) from 1.4.0 to 1.7.0. <details> <summary>Release notes</summary> _Sourced from [refitter's releases](https://github.com/christianhelle/refitter/releases)._ ## 1.7.0 ## What's Changed * Fix Multipart file array support by @christianhelle in christianhelle/refitter#784 * Add option to remove `[JsonConverter(typeof(JsonStringEnumConverter))]` from generated contracts by @christianhelle in christianhelle/refitter#786 * Improve OpenAPI Description handling by @christianhelle in christianhelle/refitter#787 * Update Smoke Tests workflow trigger by @christianhelle in christianhelle/refitter#791 * Add support for customizing the default Integer format by @christianhelle in christianhelle/refitter#792 * NSwag v14.6.2 by @christianhelle in christianhelle/refitter#800 ## New Contributors: - @christophdebaene - @7amou3 - @HGCollier **Full Changelog**: christianhelle/refitter@1.6.5...1.7.0 ## 1.6.5 ## What's Changed * Do not remove colon from url paths, verify they're not present in operation names by @eoma-knowit in christianhelle/refitter#765 * Add ability to skip-validation + simplify Unicode logging by @david-pw in christianhelle/refitter#767 * Use NSwag's built-in System.Text.Json polymorphic serialization by @0xced in christianhelle/refitter#772 ## New Contributors * @eoma-knowit made their first contribution in christianhelle/refitter#765 * @david-pw made their first contribution in christianhelle/refitter#767 * @0xced made their first contribution in christianhelle/refitter#772 **Full Changelog**: christianhelle/refitter@1.6.4...1.6.5 ## 1.6.4 ## What's Changed * Fix SonarCloud maintainability issues - eliminate code duplication and improve code quality in christianhelle/refitter#753 * Update --operation-name-template implementation to replace all {operationName} instances with Execute by @christianhelle in christianhelle/refitter#759 **Full Changelog**: christianhelle/refitter@1.6.3...1.6.4 ## 1.6.3 ## What's Changed * Fix MSBuild task so that the generated code is included in the compilation by @christianhelle in christianhelle/refitter#745 * Add support for systems running only .NET 9.0 (without .NET 8.0) in Refitter.MSBuild by @christianhelle in christianhelle/refitter#746 * Introduce --simple-output CLI argument by @christianhelle in christianhelle/refitter#751 **Full Changelog**: christianhelle/refitter@1.6.2...1.6.3 ## 1.6.2 ## What's Changed * docs: add @SWarnberg as a contributor for bug by @allcontributors[bot] in christianhelle/refitter#714 * docs: add @lilinus as a contributor for bug by @allcontributors[bot] in christianhelle/refitter#717 * Fix missing namespace import by @christianhelle in christianhelle/refitter#718 * Fix match path on cmd prompt by @christianhelle in christianhelle/refitter#719 * Fix table alignments in CLI Output by @christianhelle in christianhelle/refitter#720 * NSwag v14.5.0 by @renovate[bot] in christianhelle/refitter#722 * Add comprehensive GitHub Copilot instructions for Refitter repository by @Copilot in christianhelle/refitter#725 * Bump actions/checkout from 4 to 5 by @dependabot[bot] in christianhelle/refitter#727 * chore(deps): update dependency polly to 8.6.2 by @renovate[bot] in christianhelle/refitter#716 * chore(deps): update dependency microsoft.extensions.http.resilience to 9.8.0 by @renovate[bot] in christianhelle/refitter#728 * ASCII Art Title by @christianhelle in christianhelle/refitter#729 **Full Changelog**: christianhelle/refitter@1.6.1...1.6.2 ## 1.6.1 ## What's Changed * Update dependency Refitter.SourceGenerator to 1.6.0 by @renovate in christianhelle/refitter#704 * Add console output screenshots to documentation by @christianhelle in christianhelle/refitter#705 * docs: add @sb-chericks as a contributor for ideas, and bug by @allcontributors in christianhelle/refitter#707 * chore(deps): update dependency xunit.runner.visualstudio to 3.1.1 by @renovate in christianhelle/refitter#708 * Ensure that Refit interfaces have a XML docs by @christianhelle in christianhelle/refitter#709 **Full Changelog**: christianhelle/refitter@1.6.0...1.6.1 ## 1.6.0 **Implemented enhancements:** - fix missing schema for dictionary keys [\#697](christianhelle/refitter#697) @kirides - Fancy CLI output using Spectre Console [\#695](christianhelle/refitter#695) @christianhelle **Fixed bugs:** - \[Bug\] Refitter generates invalid \[Range\] attribute for decimal properties starting from v1.5.2 [\#668](christianhelle/refitter#668) @tommieemeli - Generates Content-Type: multipart/form-data Header which breaks Multipart uploads [\#654](christianhelle/refitter#654) @dbhjoh @jaroslaw-dutka **Closed issues:** - Improve documentation [\#700](christianhelle/refitter#700) **Merged pull requests:** - Update dependency Polly to 8.6.1 [\#703](christianhelle/refitter#703) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Swashbuckle.AspNetCore to v9 [\#702](christianhelle/refitter#702) ([renovate[bot]](https://github.com/apps/renovate)) - Fix typos and grammar issues in documentation [\#701](christianhelle/refitter#701) ([Copilot](https://github.com/apps/copilot-swe-agent)) - Update dotnet monorepo [\#699](christianhelle/refitter#699) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Polly to 8.6.0 [\#698](christianhelle/refitter#698) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Refitter.SourceGenerator to 1.5.6 [\#696](christianhelle/refitter#696) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Microsoft.NET.Test.Sdk to 17.14.1 [\#692](christianhelle/refitter#692) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Swashbuckle.AspNetCore to 8.1.4 [\#691](christianhelle/refitter#691) ([renovate[bot]](https://github.com/apps/renovate)) See [Full Changelog](christianhelle/refitter@1.5.6...1.6.0) ## 1.5.6 ## What's Changed * Use fully qualified type name in Class template by @velvolue in christianhelle/refitter#686 * Add .NET 9.0 to Target Frameworks by @christianhelle in christianhelle/refitter#690 * Do not add both [Multipart] and "Content-Type: multipart/form-data" by @jaroslaw-dutka in christianhelle/refitter#693 ## Merged pull requests * chore(deps): update dependency refitter.sourcegenerator to 1.5.5 by @renovate in christianhelle/refitter#671 * docs: add MrScottyTay as a contributor for bug by @allcontributors in christianhelle/refitter#673 * chore(deps): update dotnet monorepo by @renovate in christianhelle/refitter#674 * chore(deps): update dependency microsoft.build.utilities.core to 17.14.7 by @renovate in christianhelle/refitter#675 * chore(deps): update dependency microsoft.build.utilities.core to 17.14.8 by @renovate in christianhelle/refitter#676 * chore(deps): update dependency microsoft.net.test.sdk to 17.14.0 by @renovate in christianhelle/refitter#680 * Add Contribution Guidelines by @copilot-swe-agent in christianhelle/refitter#679 * chore(deps): update dependency swashbuckle.aspnetcore to 8.1.2 by @renovate in christianhelle/refitter#682 * docs: add velvolue as a contributor for bug by @allcontributors in christianhelle/refitter#687 * Use fully qualified type name in Class template by @velvolue in christianhelle/refitter#686 * Resolve build warnings and add TreatWarningsAsErrors by @copilot-swe-agent in christianhelle/refitter#689 * Add .NET 9.0 to Target Frameworks by @christianhelle in christianhelle/refitter#690 * Do not add both [Multipart] and "Content-Type: multipart/form-data" by @jaroslaw-dutka in christianhelle/refitter#693 **Full Changelog**: christianhelle/refitter@1.5.5...1.5.6 ## 1.5.5 ## What's Changed - Using CollectionFormats other than Multi [\#640](christianhelle/refitter#640) (@ebarnard) - Add collection format option to CLI tool documentation [\#664](christianhelle/refitter#664) (@christianhelle) - Made Security Header Parameters safe for C\# when unsafe characters are present [\#663](christianhelle/refitter#663) (@AragornHL) ## Merged pull requests: - chore\(deps\): update dependency xunit.runner.visualstudio to 3.1.0 [\#670](christianhelle/refitter#670) ([renovate[bot]](https://github.com/apps/renovate)) - docs: add tommieemeli as a contributor for bug [\#669](christianhelle/refitter#669) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - Update nswag monorepo to 14.4.0 [\#665](christianhelle/refitter#665) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency refitter.sourcegenerator to 1.5.4 [\#662](christianhelle/refitter#662) ([renovate[bot]](https://github.com/apps/renovate)) **Full Changelog**: christianhelle/refitter@1.5.4...1.5.5 ## 1.5.4 ## What's Changed - Adding security schemes to the api interface generator [\#106](christianhelle/refitter#106) - Response type handling to only use 2XX range [\#661](christianhelle/refitter#661) ([christianhelle](https://github.com/christianhelle)) - Add support for 2XX and Default Response Objects [\#660](christianhelle/refitter#660) ([christianhelle](https://github.com/christianhelle)) - Add Header Parameters for Security Schemes [\#653](christianhelle/refitter#653) ([AragornHL](https://github.com/AragornHL)) ## Merged Pull Requests: * chore(deps): update dependency refitter.sourcegenerator to 1.5.3 by @renovate in christianhelle/refitter#645 * chore(deps): update dependency swashbuckle.aspnetcore to 8.1.0 by @renovate in christianhelle/refitter#646 * chore(deps): update dependency exceptionless to 6.1.0 by @renovate in christianhelle/refitter#647 * chore(deps): update dependency spectre.console.cli to 0.50.0 by @renovate in christianhelle/refitter#649 * chore(deps): update dotnet monorepo to 9.0.4 by @renovate in christianhelle/refitter#648 * chore(deps): update dependency microsoft.extensions.http.resilience to 9.4.0 by @renovate in christianhelle/refitter#650 * chore(deps): update dependency swashbuckle.aspnetcore to 8.1.1 by @renovate in christianhelle/refitter#651 * Add Header Parameters for Security Schemes by @AragornHL in christianhelle/refitter#653 * docs: add @AragornHL as a contributor for code by @allcontributors in christianhelle/refitter#655 * docs: add @kmfd3s as a contributor for code by @allcontributors in christianhelle/refitter#656 * Update smoke tests to generate authentication headers by @christianhelle in christianhelle/refitter#657 * docs: add @pfeigl as a contributor for bug by @allcontributors in christianhelle/refitter#659 * Add support for 2XX and Default Response Objects by @christianhelle in christianhelle/refitter#660 * Response type handling to only use 2XX range by @christianhelle in christianhelle/refitter#661 ## New Contributors * @AragornHL made their first contribution in christianhelle/refitter#653 **Full Changelog**: christianhelle/refitter@1.5.3...1.5.4 ## 1.5.3 **Implemented enhancements:** - Naming properties problem [\#641](christianhelle/refitter#641) - Allow comments in .refitter Configuration [\#631](christianhelle/refitter#631) - NSwag v14.3.0 [\#644](christianhelle/refitter#644) ([renovate[bot]](https://github.com/apps/renovate)) - Convert properties with underscores to PascalCase [\#643](christianhelle/refitter#643) ([christianhelle](https://github.com/christianhelle)) - Add support for deserializing JSON with comments and update tests [\#637](christianhelle/refitter#637) ([sebastian-wachsmuth](https://github.com/sebastian-wachsmuth)) - Temporary fix for Source Generator when running in Visual Studio [\#634](christianhelle/refitter#634) ([christianhelle](https://github.com/christianhelle)) - JSON Schema generator for documentation [\#623](christianhelle/refitter#623) ([christianhelle](https://github.com/christianhelle)) - Fix missing Content-Type \[Headers\] [\#619](christianhelle/refitter#619) ([christianhelle](https://github.com/christianhelle)) - Fix invalid characters in generated XML docs [\#607](christianhelle/refitter#607) ([christianhelle](https://github.com/christianhelle)) - Add support for custom DateTimeFormat [\#604](christianhelle/refitter#604) ([christianhelle](https://github.com/christianhelle)) - Fix ISO date format handling when dateFormat is defined in settings file [\#603](christianhelle/refitter#603) ([christianhelle](https://github.com/christianhelle)) **Fixed bugs:** - Doesn't add Content-Type request header when body is plain JSON string [\#617](christianhelle/refitter#617) - Broken xml doc when swagger descriptions contains "\<" or "\>" characters [\#605](christianhelle/refitter#605) - date-time parameters are encoded as date when iso8601 is used [\#599](christianhelle/refitter#599) **Closed issues:** - OpenAPI Schema and Authorization Attributes [\#629](christianhelle/refitter#629) **Merged pull requests:** - docs: add @lowern1ght as a contributor for bug [\#642](christianhelle/refitter#642) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - docs: add @qrzychu as a contributor for bug [\#639](christianhelle/refitter#639) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - docs: add @sebastian-wachsmuth as a contributor for code [\#638](christianhelle/refitter#638) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - Update dependency Swashbuckle.AspNetCore to v8 [\#633](christianhelle/refitter#633) ([renovate[bot]](https://github.com/apps/renovate)) - Update dotnet monorepo [\#630](christianhelle/refitter#630) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Atc.Test to 1.1.18 [\#628](christianhelle/refitter#628) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Swashbuckle.AspNetCore to 7.3.1 [\#626](christianhelle/refitter#626) ([renovate[bot]](https://github.com/apps/renovate)) - Update dependency Swashbuckle.AspNetCore to 7.3.0 [\#624](christianhelle/refitter#624) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency fluentassertions to 7.2.0 [\#622](christianhelle/refitter#622) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency apizr.integrations.fusillade to 6.4.2 [\#621](christianhelle/refitter#621) ([renovate[bot]](https://github.com/apps/renovate)) - docs: add @Metziell as a contributor for bug [\#620](christianhelle/refitter#620) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - docs: add @Fargekritt as a contributor for bug [\#618](christianhelle/refitter#618) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - chore\(deps\): update dependency apizr.integrations.automapper to 6.4.2 [\#616](christianhelle/refitter#616) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency apizr.extensions.microsoft.caching to 6.4.2 [\#615](christianhelle/refitter#615) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency microsoft.applicationinsights.windowsserver to 2.23.0 [\#614](christianhelle/refitter#614) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency microsoft.build.utilities.core to 17.13.9 [\#612](christianhelle/refitter#612) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dotnet monorepo [\#611](christianhelle/refitter#611) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency microsoft.net.test.sdk to 17.13.0 [\#610](christianhelle/refitter#610) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency xunit.runner.visualstudio to 3.0.2 [\#609](christianhelle/refitter#609) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency polly to 8.5.2 [\#608](christianhelle/refitter#608) ([renovate[bot]](https://github.com/apps/renovate)) - docs: add @wocasella as a contributor for bug [\#606](christianhelle/refitter#606) ([allcontributors[bot]](https://github.com/apps/allcontributors)) - chore\(deps\): update dependency refitter.sourcegenerator to 1.5.2 [\#602](christianhelle/refitter#602) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency atc.test to 1.1.17 [\#592](christianhelle/refitter#592) ([renovate[bot]](https://github.com/apps/renovate)) - chore\(deps\): update dependency h.generators.extensions to 1.24.2 [\#581](christianhelle/refitter#581) ([renovate[bot]](https://github.com/apps/renovate)) ... (truncated) ## 1.5.2 ## Implemented enhancements: - Fix date formatting for date-time types christianhelle/refitter#600 - Proper support for multipart form christianhelle/refitter#595 ## Fixed bugs: - date-time parameters are encoded as date when iso8601 is used christianhelle/refitter#599 - \[FromForm\] parameter on minimal api doesn't get generated on Interface christianhelle/refitter#515 ## Merged pull requests: * chore(deps): update dependency coverlet.collector to 6.0.4 by @renovate in christianhelle/refitter#594 * Proper support for multipart form by @jaroslaw-dutka in christianhelle/refitter#595 * docs: add jaroslaw-dutka as a contributor for code by @allcontributors in christianhelle/refitter#596 * chore(deps): update dependency refitter.sourcegenerator to 1.5.0 by @renovate in christianhelle/refitter#593 * Remove dependency on System.Text.Json by @christianhelle in christianhelle/refitter#597 * chore(deps): update dependency refitter.sourcegenerator to 1.5.1 by @renovate in christianhelle/refitter#598 * docs: add maksionkin as a contributor for bug by @allcontributors in christianhelle/refitter#601 * Fix date formatting for date-time types by @christianhelle in christianhelle/refitter#600 ## New Contributors * @jaroslaw-dutka made their first contribution in christianhelle/refitter#595 * @maksionkin reported their first issue in christianhelle/refitter#599 **Full Changelog**: christianhelle/refitter@1.5.0...1.5.2 ## 1.5.0 ## Implemented enhancements: - Fix incorrect error message shown due to Spectre.Console parsing [\#585](christianhelle/refitter#585) ([christianhelle](https://github.com/christianhelle)) - Return null when object subtype is not found [\#577](christianhelle/refitter#577) ([velvolue](https://github.com/velvolue)) - Discard unused union types/inheritance types via config [\#575](christianhelle/refitter#575) ([kirides](https://github.com/kirides)) - Show Deserializaton Errors from Source Generator [\#572](christianhelle/refitter#572) ([christianhelle](https://github.com/christianhelle)) - Limit Exceptionless telemetry [\#564](christianhelle/refitter#564) ([christianhelle](https://github.com/christianhelle)) - Added simple logic to make most identifier strings valid [\#562](christianhelle/refitter#562) ([Fargekritt](https://github.com/Fargekritt)) - Fix -v|--version CLI tool argument [\#561](christianhelle/refitter#561) ([christianhelle](https://github.com/christianhelle)) - Less strict OpenAPI Validation rules [\#558](christianhelle/refitter#558) ([christianhelle](https://github.com/christianhelle)) - Added support for custom date format [\#554](christianhelle/refitter#554) ([Fargekritt](https://github.com/Fargekritt)) - Add support for disabling telemetry in MSBuild task [\#550](christianhelle/refitter#550) ([christianhelle](https://github.com/christianhelle)) - MSBuild Custom Task [\#548](christianhelle/refitter#548) ([christianhelle](https://github.com/christianhelle)) - Generate IDisposable Refit Interfaces [\#543](christianhelle/refitter#543) ([christianhelle](https://github.com/christianhelle)) - Clients implementing IDisposable interface [\#541](christianhelle/refitter#541) ([shubinp](https://github.com/shubinp)) - \[Apizr\] Deprecated Optional package removed from code & doc [\#539](christianhelle/refitter#539) ([JeremyBP](https://github.com/JeremyBP)) - Add PropertyNameGenerator as an optional Parameter [\#516](christianhelle/refitter#516) - NSwag v14.2.0 [\#532](christianhelle/refitter#532) ([renovate[bot]](https://github.com/apps/renovate)) - added options for a custom Name Generators [\#517](christianhelle/refitter#517) ([fsamiec](https://github.com/fsamiec)) ## Fixed bugs: - "Error: Could not find color or style 'System.String'." [\#583](christianhelle/refitter#583) - Source generator errors are hidden [\#568](christianhelle/refitter#568) - Refitter -v not showing version number [\#560](christianhelle/refitter#560) - Not so nice behavior when generating client with trim-unused-schema [\#557](christianhelle/refitter#557) - Two almost identical routes that fail at validation. [\#551](christianhelle/refitter#551) - Code Generator creates unsafe interface method names [\#360](christianhelle/refitter#360) ## Closed issues: - How to use in class library? [\#534](christianhelle/refitter#534) - \[ISSUE\]\[1.2.1-preview.54\] Some impediments using CLI version. Is not enough for my needs? [\#450](christianhelle/refitter#450) ## Merged Pull Requests * chore(deps): update dependency refitter.sourcegenerator to 1.4.0 by @renovate in christianhelle/refitter#513 * chore(deps): update dependency swashbuckle.aspnetcore to 6.9.0 by @renovate in christianhelle/refitter#514 * added options for a custom Name Generators by @fsamiec in christianhelle/refitter#517 * docs: add fsamiec as a contributor for code by @allcontributors in christianhelle/refitter#518 * chore(deps): update refit monorepo to v8 (major) by @renovate in christianhelle/refitter#519 * docs: add fabioloreggian as a contributor for bug by @allcontributors in christianhelle/refitter#521 * chore(deps): update dependency fluentassertions to 6.12.2 by @renovate in christianhelle/refitter#523 * chore(deps): update dependency polly to 8.5.0 by @renovate in christianhelle/refitter#525 * chore(deps): update dependency swashbuckle.aspnetcore to v7 by @renovate in christianhelle/refitter#526 * chore(deps): update dependency h.generators.extensions to 1.24.0 by @renovate in christianhelle/refitter#528 * chore(deps): update dotnet monorepo to v9 (major) by @renovate in christianhelle/refitter#527 * NSwag v14.2.0 by @renovate in christianhelle/refitter#532 * chore(deps): update dependency microsoft.net.test.sdk to 17.12.0 by @renovate in christianhelle/refitter#531 * chore(deps): update dependency refitter.sourcegenerator to 1.4.1 by @renovate in christianhelle/refitter#533 * docs: add geometrikal as a contributor for bug by @allcontributors in christianhelle/refitter#535 ... (truncated) Commits viewable in [compare view](christianhelle/refitter@1.4.0...1.7.0). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


Summary by CodeRabbit