All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- The diagnostic for a missing source file has been changed from a build-halting error to a non-blocking warning. The generator now continues without generating code instead of failing the compilation.
- The warning for a missing source file now includes the name of the calling assembly to provide better context in multi-project solutions.
- Generator configuration has been moved from
appsettings.jsonto MSBuild properties in the.csprojfile. TheSetSharpsection withinappsettings.jsonis no longer read. Users upgrading to this version must migrate their settings to their project file to continue configuring the generator.
- A new MSBuild property,
SetSharp_SourceFile, allows you to specify a custom JSON file for generation, replacing the defaultappsettings.json. - The
SetSharp_OptionPatternGenerationEnabledMSBuild property now controls the generation ofIOptionsextension methods. - A new diagnostic (
SSG004) will now report an error if the specified source file cannot be found in the project'sAdditionalFiles.
- Refactored settings logic into a dedicated
GeneratorSettingsProviderclass to separate concerns.
- Enhanced the type inference logic for JSON arrays. The source generator now analyzes all objects within an array to create a single, comprehensive class for the list items. This replaces the previous behavior of only inspecting the first item, ensuring that properties from all objects are correctly captured.
- Added
Shipped.mdandUnshipped.mdfiles to track analyzer diagnostics and releases. These files follow the official Roslyn analyzer release tracking format.
- This is a documentation-only update with no functional code changes.
- Breaking Change: All generated classes are now
recordtypes instead of regularclasstypes. - All properties use
initaccessors instead ofsetto support immutability. - Collections are now generated as
ImmutableList<T>instead of mutableList<T>.
- These changes improve immutability and align with modern C# practices.
- This is a major version bump due to potential breaking changes in downstream usage, especially if consumers relied on mutable types or reflection-based assumptions.
- Descriptive error messages if required dependencies are missing.
- New diagnostic IDs:
SSG001,SSG002,SSG003.