Skip to content

Harden .refitter settings deserialization and output path handling#1000

Merged
christianhelle merged 9 commits into
mainfrom
fix-issue-998
Apr 16, 2026
Merged

Harden .refitter settings deserialization and output path handling#1000
christianhelle merged 9 commits into
mainfrom
fix-issue-998

Conversation

@christianhelle

@christianhelle christianhelle commented Apr 16, 2026

Copy link
Copy Markdown
Owner

This fixes #998

Summary by CodeRabbit

  • New Features

    • Settings files now default to generating code in a ./Generated folder when no output folder is specified; output paths are correctly rooted relative to the settings file and CLI/default behaviors were clarified.
  • Tests

    • Added comprehensive tests covering settings-file defaults, output path resolution, naming preservation, and generation/compilation of produced code.
  • Chores

    • Extended ignore rules for generated artifacts and enhanced build script cleanup and regression checks; added a test configuration for output-folder scenarios.

- Add support for deserializing settings file as the primary source of truth, with CLI arguments overriding specific values.
- Ensure output paths are rooted relative to the settings file when applicable.
- Apply defaults for `OutputFolder` and `OutputFilename` when absent in the settings file.
@christianhelle christianhelle self-assigned this Apr 16, 2026
@christianhelle christianhelle added enhancement New feature, bug fix, or request .NET Pull requests that contain changes to .NET code bugfix Pull requests that contain bug fixes labels Apr 16, 2026
@coderabbitai

coderabbitai Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Refactors output-path resolution and settings-default application so .refitter outputFolder/outputFilename are rooted under the settings file directory (defaulting outputFolder to ./Generated when absent) and adds tests and MSBuild test infra to validate the behavior.

Changes

Cohort / File(s) Summary
Core CLI behavior
src/Refitter/GenerateCommand.cs
Initialize settings once, apply settings-file defaults (ApplySettingsFileDefaults), default OutputFolder to "./Generated" when missing, and compute single-file output paths rooted under the settings file directory.
MSBuild task output discovery
src/Refitter.MSBuild/RefitterGenerateTask.cs
Refactored single-file mode to compute an effectiveOutputFolder (defaults to "./Generated" when blank) and build a full outputPath rooted relative to the .refitter file directory.
Unit tests (GenerateCommand)
src/Refitter.Tests/GenerateCommandTests.cs
Added tests invoking non-public GetOutputPath and ApplySettingsFileDefaults to assert filename fallback, default folder application, and rooted output-path behavior for single- and multi-file scenarios.
Integration/regression tests
src/Refitter.Tests/Examples/SettingsFileOutputPathTests.cs
New test class (3 tests) validating settings deserialization, default application, output-path rooting, preservation of custom naming, and that generated output compiles; includes reflection helpers and temp-dir helpers.
MSBuild test harness & config
test/MSBuild/build.ps1, test/MSBuild/petstore-with-outputfolder.refitter
Added .refitter test config with outputFolder/outputFilename; enhanced PowerShell script cleanup, added hard-failure checks for missing/stray generated files and content-based smoke checks for interface names.
Repo config & minor formatting
.gitignore, src/Refitter.Tests/Examples/PropertyNamingPolicyTests.cs, src/Refitter.Tests/Examples/TrimUnusedSchemaAliasWithLeadingDigitPropertyTests.cs
Added ignore patterns for generated test C# artifacts; restored file-termination newlines in two test files.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant CLI as CLI / User
    participant GenerateCMD as GenerateCommand
    participant SettingsFile as .refitter File
    participant Generator as RefitGenerator
    participant FS as FileSystem

    CLI->>GenerateCMD: invoke (with/without settings file)
    alt settings file present
        GenerateCMD->>SettingsFile: read & deserialize
        GenerateCMD->>GenerateCMD: ApplySettingsFileDefaults() (default OutputFolder="./Generated", OutputFilename fallback)
        GenerateCMD->>Generator: create generator with settings
    else no settings file
        GenerateCMD->>GenerateCMD: build settings from CLI args (use CLI output path directly)
        GenerateCMD->>Generator: create generator with CLI settings
    end
    GenerateCMD->>Generator: Generate() -> generated code
    Generator->>FS: write output to computed path (rooted under settings file dir when used)
    FS-->>CLI: files created
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 I hopped through folders, sniffed each file,
Found settings lost and fixed their aisle,
Defaulted Generated when none was shown,
Rooted outputs back to their home,
Now interfaces spring from tidy soil 🌱

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: hardening deserialization and output path handling for .refitter settings, which directly addresses issue #998.
Linked Issues check ✅ Passed The PR successfully addresses issue #998 requirements: it fixes output path resolution to respect outputFolder and filename from .refitter files, handles default output folder fallback to './Generated', and restores proper multi-file generation behavior.
Out of Scope Changes check ✅ Passed All changes are directly related to fixing issue #998: fixing .refitter deserialization, correcting output path handling, adding comprehensive regression tests, and updating MSBuild build verification script.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-issue-998

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/Refitter/GenerateCommand.cs (1)

649-711: ⚠️ Potential issue | 🟠 Major

Let an explicit CLI --output win over OutputFolder.

Once ApplySettingsFileDefaults() backfills OutputFolder, both GetOutputPath overloads keep prefixing that folder even when settings.OutputPath was explicitly provided. That turns --output Client.cs into <settingsDir>/Generated/Client.cs, and in multi-file mode the explicit override is ignored entirely. Based on learnings: Map new CLI settings in CreateRefitGeneratorSettings() method in GenerateCommand.cs.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Refitter/GenerateCommand.cs` around lines 649 - 711, The bug is that
ApplySettingsFileDefaults backfills OutputFolder which then overrides an
explicit CLI --output; to fix, update CreateRefitGeneratorSettings() so
CLI-provided settings.OutputPath (when not null/empty and not
Settings.DefaultOutputPath) takes precedence and does NOT get shadowed by
refitGeneratorSettings.OutputFolder—i.e. when mapping CLI into
RefitGeneratorSettings, avoid setting or overwriting
refitGeneratorSettings.OutputFolder if settings.OutputPath was explicitly
provided (instead let GetOutputPath overloads use settings.OutputPath), and only
map or default OutputFolder when CLI did not specify an output path; touch
CreateRefitGeneratorSettings, ApplySettingsFileDefaults, and the two
GetOutputPath overloads to ensure this precedence is preserved.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.gitignore:
- Line 288: The .gitignore currently only ignores
test/Generated/GeneratedCode/*.generated.cs but not the MSBuild regression
outputs; update the .gitignore to also ignore the MSBuild-generated directories
by adding patterns that match files under test/MSBuild/Generated/ and
test/MSBuild/GeneratedOutput/ (e.g., the generated C# files like *.generated.cs
and any temporary output files) so running test/MSBuild/build.ps1 no longer
leaves generated C# files in git status.

In `@src/Refitter.Tests/GenerateCommandTests.cs`:
- Around line 151-291: The tests (e.g.,
GetOutputPath_Should_Root_Relative_To_SettingsFile_When_OutputFolder_Is_Default,
GetOutputPath_Should_Use_SettingsFileName_When_OutputFilename_Is_Missing, and
ApplySettingsFileDefaults_* cases) hardcode Windows paths and backslashes which
break on Unix; update them to build platform-independent paths by creating a
settingsFilePath using Path.Combine/Path.GetFullPath (or Path.GetTempPath +
Path.DirectorySeparatorChar) and assert expected results using
Path.Combine/Path.GetFullPath/Path.GetFileNameWithoutExtension on the values
returned by GenerateCommand.GetOutputPath and after calling
GenerateCommand.ApplySettingsFileDefaults, and compare normalized paths rather
than raw @"C:\..." strings while still referencing Settings.DefaultOutputPath,
RefitGeneratorSettings.OutputFolder/OutputFilename to preserve intent.

In `@src/Refitter/GenerateCommand.cs`:
- Around line 42-58: The code that reads and deserializes the settings file
(File.ReadAllTextAsync(settings.SettingsFilePath),
Serializer.Deserialize<RefitGeneratorSettings>(...), and
ApplySettingsFileDefaults(...)) must be moved inside the main try block so any
IO or deserialization exceptions are caught and handled by the existing
catch/Analytics.LogError flow; update the GenerateCommand method to only build
refitGeneratorSettings from CreateRefitGeneratorSettings(settings) when no
settings file is provided, but if settings.SettingsFilePath is set perform
ReadAllTextAsync, Serializer.Deserialize<RefitGeneratorSettings>, optional
override of OpenApiPath, and ApplySettingsFileDefaults inside the try that
surrounds the overall generation logic (keeping reference to
refitGeneratorSettings variable unchanged) so failures surface in the normal
error panel and logging.

In `@test/MSBuild/build.ps1`:
- Around line 57-77: The script currently only warns when the expected interface
names are missing, so change the two checks that look for "interface
ISwaggerPetstore" and "interface ISwaggerPetstoreWithFolder" to fail the build
instead: replace the Write-Host warning branches for those two tests with error
output and an exit 1 (same style as the existing missing-file check) so the
pipeline fails if naming.interfaceName is ignored.

---

Outside diff comments:
In `@src/Refitter/GenerateCommand.cs`:
- Around line 649-711: The bug is that ApplySettingsFileDefaults backfills
OutputFolder which then overrides an explicit CLI --output; to fix, update
CreateRefitGeneratorSettings() so CLI-provided settings.OutputPath (when not
null/empty and not Settings.DefaultOutputPath) takes precedence and does NOT get
shadowed by refitGeneratorSettings.OutputFolder—i.e. when mapping CLI into
RefitGeneratorSettings, avoid setting or overwriting
refitGeneratorSettings.OutputFolder if settings.OutputPath was explicitly
provided (instead let GetOutputPath overloads use settings.OutputPath), and only
map or default OutputFolder when CLI did not specify an output path; touch
CreateRefitGeneratorSettings, ApplySettingsFileDefaults, and the two
GetOutputPath overloads to ensure this precedence is preserved.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a7bb2397-88fa-456c-b63d-d80f3d6d8a4f

📥 Commits

Reviewing files that changed from the base of the PR and between a6eecf9 and 7840b90.

📒 Files selected for processing (9)
  • .gitignore
  • src/Refitter.MSBuild/RefitterGenerateTask.cs
  • src/Refitter.Tests/Examples/PropertyNamingPolicyTests.cs
  • src/Refitter.Tests/Examples/SettingsFileOutputPathTests.cs
  • src/Refitter.Tests/Examples/TrimUnusedSchemaAliasWithLeadingDigitPropertyTests.cs
  • src/Refitter.Tests/GenerateCommandTests.cs
  • src/Refitter/GenerateCommand.cs
  • test/MSBuild/build.ps1
  • test/MSBuild/petstore-with-outputfolder.refitter

Comment thread .gitignore
Comment thread src/Refitter.Tests/GenerateCommandTests.cs
Comment thread src/Refitter/GenerateCommand.cs Outdated
Comment thread test/MSBuild/build.ps1
@coderabbitai

coderabbitai Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 4 file(s) based on 4 unresolved review comments.

A stacked PR containing fixes has been created.

  • Stacked PR: #1001
  • Files modified:
  • .gitignore
  • src/Refitter.Tests/GenerateCommandTests.cs
  • src/Refitter/GenerateCommand.cs
  • test/MSBuild/build.ps1

Time taken: 3m 26s

Fixed 4 file(s) based on 4 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
@codecov

codecov Bot commented Apr 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.18%. Comparing base (f1b2aed) to head (a8252d8).
⚠️ Report is 17 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1000   +/-   ##
=======================================
  Coverage   93.18%   93.18%           
=======================================
  Files          27       27           
  Lines        1804     1804           
=======================================
  Hits         1681     1681           
  Misses         49       49           
  Partials       74       74           
Flag Coverage Δ
unittests 93.18% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sonarqubecloud

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Refitter/GenerateCommand.cs`:
- Around line 696-700: When deriving the default OutputFilename in
GenerateCommand.cs, handle the special-case where
Path.GetFileNameWithoutExtension(settingsFilePath) returns an empty string for
dotfiles (e.g., ".refitter"); if refitterFileName is null/empty (or the original
filename equals ".refitter"), set refitterFileName = "Output" before assigning
refitGeneratorSettings.OutputFilename = $"{refitterFileName}.cs" so the fallback
becomes "Output.cs" instead of ".cs". Use the existing symbols settingsFilePath,
refitterFileName and refitGeneratorSettings.OutputFilename to locate and update
the logic.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 438c10e2-2a05-4665-b3db-c109d53567e3

📥 Commits

Reviewing files that changed from the base of the PR and between 7840b90 and a8252d8.

📒 Files selected for processing (4)
  • .gitignore
  • src/Refitter.Tests/GenerateCommandTests.cs
  • src/Refitter/GenerateCommand.cs
  • test/MSBuild/build.ps1
✅ Files skipped from review due to trivial changes (1)
  • src/Refitter.Tests/GenerateCommandTests.cs
🚧 Files skipped from review as they are similar to previous changes (1)
  • .gitignore

Comment thread src/Refitter/GenerateCommand.cs
@coderabbitai

coderabbitai Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 1 file(s) based on 1 unresolved review comment.

A stacked PR containing fixes has been created.

  • Stacked PR: #1002
  • Files modified:
  • src/Refitter/GenerateCommand.cs

Time taken: 3m 12s

@christianhelle
christianhelle disabled auto-merge April 16, 2026 17:26
@christianhelle
christianhelle merged commit 8c6657c into main Apr 16, 2026
16 checks passed
@christianhelle
christianhelle deleted the fix-issue-998 branch April 16, 2026 17:27
hwinther pushed a commit to hwinther/test that referenced this pull request May 6, 2026
Updated [refitter](https://github.com/christianhelle/refitter) from
1.7.1 to 2.0.0.

<details>
<summary>Release notes</summary>

_Sourced from [refitter's
releases](https://github.com/christianhelle/refitter/releases)._

## 2.0.0

## What's Changed

* Fix numeric format with pattern quirk - infer type from format for all
numeric types by @​Copilot in
christianhelle/refitter#869
* Read group documentation from document tags. by @​DJ4ddi in
christianhelle/refitter#887
* Fix null reference and XML escaping in XmlDocumentationGenerator by
@​Copilot in christianhelle/refitter#890
* Fix build workflow: add dotnet restore before dotnet msbuild in
Prepare step by @​Copilot in
christianhelle/refitter#892
christianhelle/refitter#895
* Fix MSBuild workflow by @​christianhelle in
christianhelle/refitter#898
* Add support for generating a single client from multiple OpenAPI
specifications by @​Copilot in
christianhelle/refitter#904
* Migrate from Microsoft.OpenApi.Readers 1.x to Microsoft.OpenApi 3.x by
@​vgmello in christianhelle/refitter#907
* Improve Smoke Tests execution time by @​christianhelle in
christianhelle/refitter#915
* Fix #​580: Nullable strings marked correctly by @​christianhelle in
christianhelle/refitter#921
* Fix #​672: MultipleInterfaces ByTag method naming scoped per-interface
by @​christianhelle in
christianhelle/refitter#922
* Fix #​635: Refactor source generator to use context.AddSource() by
@​christianhelle in christianhelle/refitter#923
* Add custom format mappings configuration by @​christianhelle in
christianhelle/refitter#927
* Fix multipart form-data parameter extraction by @​christianhelle in
christianhelle/refitter#928
christianhelle/refitter#911
christianhelle/refitter#902
* Fix smoke tests: --interface-only variant missing using directive for
contract types by @​Copilot in
christianhelle/refitter#933
* Fix SonarCloud Code Quality Issues by @​Copilot in
christianhelle/refitter#932
* Add debug logging for source generator when searching for .refitter
files by @​codymullins in
christianhelle/refitter#743
* Fix: Base type not generated for types using oneOf with discriminator
by @​Copilot in christianhelle/refitter#906
* Add option for Method Level Authorization header attribute by
@​Roflincopter in christianhelle/refitter#897
* Fix PR #​897 review feedback and add comprehensive bearer auth tests
by @​christianhelle in
christianhelle/refitter#936
* Fix numeric suffix added to interface method names in ByTag mode by
@​Copilot in christianhelle/refitter#914
* Improve OpenAPI parse + codegen throughput by removing avoidable
allocations and repeated regex work by @​Copilot in
christianhelle/refitter#937
* Move [JsonConverter] from enum properties to enum types by
@​christianhelle in christianhelle/refitter#938
* Fix broken CLI tool help text by @​christianhelle in
christianhelle/refitter#940
* Improve code coverage to >90% by @​christianhelle in
christianhelle/refitter#941
* Microsoft.OpenApi v3.4 by @​christianhelle in
christianhelle/refitter#945
* Add Unicode support for XML doc comment generation by @​christianhelle
in christianhelle/refitter#948
* Add PropertyNamingPolicy support for JSON property naming by
@​christianhelle in christianhelle/refitter#969
christianhelle/refitter#966
* Fix recursive schema stack overflows by @​christianhelle in
christianhelle/refitter#971
* Made Header Parameters for Security Schemes safe to use as C# variable
name by @​smoerijf in
christianhelle/refitter#977
* Enhance schema alias handling and property name generation by
@​christianhelle in christianhelle/refitter#996
* Verify alias handling and sanitize PascalCase properties by
@​christianhelle in christianhelle/refitter#997
* Harden .refitter settings deserialization and output path handling by
@​christianhelle in christianhelle/refitter#1000
* Special-case the default .refitter filename before deriving
OutputFilename by @​coderabbitai[bot] in
christianhelle/refitter#1002
* [v2.0 audit] Fix pre-release regressions from #​1057 by
@​christianhelle in christianhelle/refitter#1064
* Resolve high-severity audit findings from #​1057 by @​christianhelle
in christianhelle/refitter#1067
* [v2.0 audit] Close remaining verified #​1057 regressions by
@​christianhelle in christianhelle/refitter#1070
* Harden generation flows by @​christianhelle in
christianhelle/refitter#1071
* Breaking changes and Migration Guide for v2.0.0 by @​christianhelle in
christianhelle/refitter#1009
* Handle equivalent duplicate schemas in multi-spec merge by
@​christianhelle in christianhelle/refitter#1076
* Tighten warning handling across Refitter builds by @​christianhelle in
christianhelle/refitter#1079
* Fix default solution path and update .NET version in VS Code config by
@​christianhelle in christianhelle/refitter#1082
* Fix docker smoke tests by @​christianhelle in
christianhelle/refitter#1081
* Sanitize malformed schema type names without renaming clean schemas by
@​christianhelle in christianhelle/refitter#1085

 ... (truncated)

## 1.7.3

## What's Changed
* Add support for systems running only .NET 10.0 (without .NET 8.0 or
9.0) in Refitter.MSBuild by @​christianhelle in
christianhelle/refitter#882
* Update to return HttpResponseMessage for file downloads by @​frogcrush
in christianhelle/refitter#877

## New Contributors
* @​frogcrush made their first contribution in
christianhelle/refitter#877

**Full Changelog**:
christianhelle/refitter@1.7.2...1.7.3

## 1.7.2

**Implemented enhancements:**

- Improve Immutable Records ergonomics
[\#​844](christianhelle/refitter#844)
- Omit certain operation headers and include all others
[\#​840](christianhelle/refitter#840)
- Create .refitter settings file as part of output
[\#​859](christianhelle/refitter#859) by
@[christianhelle
- Fix integerType enum deserialization issue
[\#​855](christianhelle/refitter#855)
([christianhelle](https://github.com/christianhelle))
- support custom nswag template directory \#​844
[\#​854](christianhelle/refitter#854) by
@​kmc059000
- Fix missing method parameter XML code-documentation
[\#​850](christianhelle/refitter#850)
([christianhelle](https://github.com/christianhelle))

**Fixed bugs:**

- integerType parsing in settings file fails
[\#​851](christianhelle/refitter#851)
- CS1573 : Method parameter has no matching XML comment
[\#​846](christianhelle/refitter#846)

**Merged pull requests:**

- docs: add frogcrush as a contributor for code
[\#​878](christianhelle/refitter#878)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- Migrate solution files from .sln to .slnx format
[\#​876](christianhelle/refitter#876)
([Copilot](https://github.com/apps/copilot-swe-agent))
- Fix issue with randomly failing tests to due parallel execution
[\#​872](christianhelle/refitter#872)
([christianhelle](https://github.com/christianhelle))
- chore\(deps\): update dependency tunit to 1.9.2
[\#​863](christianhelle/refitter#863)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.7.7
[\#​862](christianhelle/refitter#862)
([renovate[bot]](https://github.com/apps/renovate))
- Add unit tests for WriteRefitterSettingsFile functionality
[\#​860](christianhelle/refitter#860)
([Copilot](https://github.com/apps/copilot-swe-agent))
- chore\(deps\): update dependency ruby to v4
[\#​858](christianhelle/refitter#858)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.6.28
[\#​857](christianhelle/refitter#857)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add 0x2badc0de as a contributor for bug
[\#​856](christianhelle/refitter#856)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency swashbuckle.aspnetcore to 10.1.0
[\#​853](christianhelle/refitter#853)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.6.0
[\#​852](christianhelle/refitter#852)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add lilinus as a contributor for code
[\#​849](christianhelle/refitter#849)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency ruby to v3.4.8
[\#​845](christianhelle/refitter#845)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.5.70
[\#​837](christianhelle/refitter#837)
([renovate[bot]](https://github.com/apps/renovate))


**Full Changelog**:
christianhelle/refitter@1.7.1...1.7.2

Commits viewable in [compare
view](christianhelle/refitter@1.7.1...2.0.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=refitter&package-manager=nuget&previous-version=1.7.1&new-version=2.0.0)](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 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>
vgmello pushed a commit to vgmello/momentum that referenced this pull request May 10, 2026
Updated [Refitter.MSBuild](https://github.com/christianhelle/refitter)
from 1.7.3 to 2.0.0.

<details>
<summary>Release notes</summary>

_Sourced from [Refitter.MSBuild's
releases](https://github.com/christianhelle/refitter/releases)._

## 2.0.0

## What's Changed

* Fix numeric format with pattern quirk - infer type from format for all
numeric types by @​Copilot in
christianhelle/refitter#869
* Read group documentation from document tags. by @​DJ4ddi in
christianhelle/refitter#887
* Fix null reference and XML escaping in XmlDocumentationGenerator by
@​Copilot in christianhelle/refitter#890
* Fix build workflow: add dotnet restore before dotnet msbuild in
Prepare step by @​Copilot in
christianhelle/refitter#892
christianhelle/refitter#895
* Fix MSBuild workflow by @​christianhelle in
christianhelle/refitter#898
* Add support for generating a single client from multiple OpenAPI
specifications by @​Copilot in
christianhelle/refitter#904
* Migrate from Microsoft.OpenApi.Readers 1.x to Microsoft.OpenApi 3.x by
@​vgmello in christianhelle/refitter#907
* Improve Smoke Tests execution time by @​christianhelle in
christianhelle/refitter#915
* Fix #​580: Nullable strings marked correctly by @​christianhelle in
christianhelle/refitter#921
* Fix #​672: MultipleInterfaces ByTag method naming scoped per-interface
by @​christianhelle in
christianhelle/refitter#922
* Fix #​635: Refactor source generator to use context.AddSource() by
@​christianhelle in christianhelle/refitter#923
* Add custom format mappings configuration by @​christianhelle in
christianhelle/refitter#927
* Fix multipart form-data parameter extraction by @​christianhelle in
christianhelle/refitter#928
christianhelle/refitter#911
christianhelle/refitter#902
* Fix smoke tests: --interface-only variant missing using directive for
contract types by @​Copilot in
christianhelle/refitter#933
* Fix SonarCloud Code Quality Issues by @​Copilot in
christianhelle/refitter#932
* Add debug logging for source generator when searching for .refitter
files by @​codymullins in
christianhelle/refitter#743
* Fix: Base type not generated for types using oneOf with discriminator
by @​Copilot in christianhelle/refitter#906
* Add option for Method Level Authorization header attribute by
@​Roflincopter in christianhelle/refitter#897
* Fix PR #​897 review feedback and add comprehensive bearer auth tests
by @​christianhelle in
christianhelle/refitter#936
* Fix numeric suffix added to interface method names in ByTag mode by
@​Copilot in christianhelle/refitter#914
* Improve OpenAPI parse + codegen throughput by removing avoidable
allocations and repeated regex work by @​Copilot in
christianhelle/refitter#937
* Move [JsonConverter] from enum properties to enum types by
@​christianhelle in christianhelle/refitter#938
* Fix broken CLI tool help text by @​christianhelle in
christianhelle/refitter#940
* Improve code coverage to >90% by @​christianhelle in
christianhelle/refitter#941
* Microsoft.OpenApi v3.4 by @​christianhelle in
christianhelle/refitter#945
* Add Unicode support for XML doc comment generation by @​christianhelle
in christianhelle/refitter#948
* Add PropertyNamingPolicy support for JSON property naming by
@​christianhelle in christianhelle/refitter#969
christianhelle/refitter#966
* Fix recursive schema stack overflows by @​christianhelle in
christianhelle/refitter#971
* Made Header Parameters for Security Schemes safe to use as C# variable
name by @​smoerijf in
christianhelle/refitter#977
* Enhance schema alias handling and property name generation by
@​christianhelle in christianhelle/refitter#996
* Verify alias handling and sanitize PascalCase properties by
@​christianhelle in christianhelle/refitter#997
* Harden .refitter settings deserialization and output path handling by
@​christianhelle in christianhelle/refitter#1000
* Special-case the default .refitter filename before deriving
OutputFilename by @​coderabbitai[bot] in
christianhelle/refitter#1002
* [v2.0 audit] Fix pre-release regressions from #​1057 by
@​christianhelle in christianhelle/refitter#1064
* Resolve high-severity audit findings from #​1057 by @​christianhelle
in christianhelle/refitter#1067
* [v2.0 audit] Close remaining verified #​1057 regressions by
@​christianhelle in christianhelle/refitter#1070
* Harden generation flows by @​christianhelle in
christianhelle/refitter#1071
* Breaking changes and Migration Guide for v2.0.0 by @​christianhelle in
christianhelle/refitter#1009
* Handle equivalent duplicate schemas in multi-spec merge by
@​christianhelle in christianhelle/refitter#1076
* Tighten warning handling across Refitter builds by @​christianhelle in
christianhelle/refitter#1079
* Fix default solution path and update .NET version in VS Code config by
@​christianhelle in christianhelle/refitter#1082
* Fix docker smoke tests by @​christianhelle in
christianhelle/refitter#1081
* Sanitize malformed schema type names without renaming clean schemas by
@​christianhelle in christianhelle/refitter#1085

 ... (truncated)

Commits viewable in [compare
view](christianhelle/refitter@1.7.3...2.0.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Refitter.MSBuild&package-manager=nuget&previous-version=1.7.3&new-version=2.0.0)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Pull requests that contain bug fixes enhancement New feature, bug fix, or request .NET Pull requests that contain changes to .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refitter.MSBuild 1.7.3 on .NET 10 ignores output file path

1 participant