Changelog

May 26, 2026 ยท View on GitHub

All notable changes to Facet are documented in this file.

[Unreleased]

Added

  • Added SetAccessor parameter to [Facet] with PropertySetAccessor enum (Preserve / Set / Init) to override the set accessor emitted on all generated properties (#381). Supports the immutable builder pattern: one mutable facet for building, one init-only facet as the frozen read model.
  • Each facet type now emits two generated files by default: {Type}.Properties.g.cs (property declarations) and {Type}.Mappings.g.cs (constructors, projections, and conversion methods). Opt out globally by setting <Facet_SplitGeneratedFiles>false</Facet_SplitGeneratedFiles> in your .csproj or Directory.Build.props to restore the previous single-file output.

[6.6.3] - 2026-05-22

Fixed

  • Fixed warnings in generator and analyzer output (#380).

Changed

  • Refreshed README content and benchmark snapshots around the release.

[6.6.2] - 2026-05-21

Fixed

  • Improved preserve-references behavior.
  • Fixed multi-source facet behavior (#365).

Dependencies

  • Bumped Microsoft.NET.Test.Sdk to 18.5.1 (#364).
  • Bumped FluentAssertions to 8.10.0 (#374).
  • Bumped Microsoft.EntityFrameworkCore.InMemory to 10.0.8 (#375).
  • Bumped Microsoft.EntityFrameworkCore.Sqlite to 10.0.8 (#376).
  • Bumped Microsoft.SourceLink.GitHub to 10.0.300 (#377).

Notes

  • Includes the v6.6.2-alpha pre-release in the historical tag archive below.

[6.6.1] - 2026-05-21

Added

  • Added OutputType.PartialClass support to GenerateDtos (#379).

[6.6.0] - 2026-05-20

Added

  • Added OutputType.Interface support to GenerateDtos (#378).
  • Added ConvertEnumsTo parity for GenerateDtos so generated DTO sets support the same enum conversion model as Facet (#373).

[6.5.x] - 2026-05-02 to 2026-05-07

Added

  • Added ApplyToSource support (#363).
  • Added CopyDocs for documentation propagation (#357).
  • Added CopyDocs support from external assemblies (#370).
  • Added an InheritDocs parameter (#360).
  • Added MaxDepth support for ToSource() (#361).

Fixed

  • Fixed expression mapping when navigation properties are involved (#362).
  • Fixed @inheritdocs resolution so inherited documentation continues climbing until content is found (#366).
  • Fixed incorrect default values for custom struct types when GenerateToSource = true (#368).
  • Tightened MaxDepth consistency and related regression coverage.

Dependencies

  • Bumped Microsoft.EntityFrameworkCore.InMemory to 10.0.7 (#351).
  • Bumped Microsoft.EntityFrameworkCore.Sqlite to 10.0.7 (#352).
  • Bumped Microsoft.SourceLink.GitHub to 10.0.203 (#353).

[6.4.x] - 2026-04-21 to 2026-05-01

Added

  • Improved inherited base projection configuration selection and added multi-source regression coverage (#345).

Fixed

  • Fixed multi-level mapping when different configurations are involved (#350).
  • Fixed ConvertEnumsTo behavior (#355).
  • Improved MaxDepth consistency.

Changed

  • Updated workflow dependencies, including actions/github-script (#346).
  • Bumped Microsoft.EntityFrameworkCore.InMemory to 10.0.6 (#347).
  • Bumped Microsoft.EntityFrameworkCore.Sqlite to 10.0.6 (#348).
  • Bumped Microsoft.SourceLink.GitHub to 10.0.202 (#349).

[6.0.0] - 2026-04-08

Added

  • CollectionTargetType and per-property AsCollection support for remapping source collection types.
  • IFacetToSourceConfiguration<TFacet, TSource> for custom reverse mapping.
  • Cross-assembly facets through InternalsVisibleTo.
  • Correct ToSource() support for inherited classes.
  • Global configuration defaults through MSBuild and Facet.props.
  • GenerateCopyConstructor and GenerateEquality.
  • ConvertEnumsTo support with round-trip mapping.
  • FAC023 diagnostics for incomplete ToSource generation.
  • Before/after mapping hooks with MapHooks.
  • Facet.Dashboard.
  • ApplyFacet.
  • Patch DTO generation.
  • Public constructor generation.
  • Read-only collection support.
  • Support for disabling automatic auditable-field inclusion.
  • Support for partial properties.

Fixed

  • Fixed inheritance warnings on generated code (#317).
  • Fixed ApplyFacetWithChanges (#308).
  • Fixed nested ToSource mapping (#306).
  • Fixed static members being incorrectly included (#301).
  • Fixed PreserveRequiredProperties for record-class facets (#298, #299).
  • Fixed TypeAnalyzer errors (#296).
  • Fixed nested facet, nullability, constructor, and naming-clash issues across the V6 line.
  • Removed the generator as a runtime dependency (#197).

Changed

  • Improved generator performance and constructor ordering.
  • Made generator output more AOT-friendly.
  • Expanded project-wide configuration support via Facet.props.

[5.0.0] - 2025-11-24

Added

  • [MapWhen] for conditional property mapping.
  • [MapFrom] for declarative property renaming.
  • [FlattenTo] for collection unpacking.
  • SmartLeaf flattening.
  • Source signature tracking with FAC022.
  • Automatic EF Core navigation loading.
  • Advanced async mapping with DI support.
  • Expression transformation utilities.
  • A broad Roslyn analyzer set with code fixes.

Changed

  • Replaced obsolete GenerateBackTo with GenerateToSource.
  • Made GenerateToSource opt-in by default.

Historical tag archive

6.x releases

VersionDateSummary
6.6.32026-05-22fix warnings (#380)
6.6.2-alpha2026-05-21Pre-release for 6.6.2 stabilization.
6.6.22026-05-21preserve references and maintenance updates
6.6.12026-05-21GenerateDtos: add OutputType.PartialClass (#379)
6.6.02026-05-20GenerateDtos: add OutputType.Interface (#378)
6.5.52026-05-07CopyDocs from external assembly (#370)
6.5.42026-05-05Fix GenerateToSource = true default value for custom struct types (#368)
6.5.32026-05-05Fix @inheritdocs resolution (#366)
6.5.22026-05-03Add ApplyToSource (#363)
6.5.12026-05-03Fix expression mapping with navigation properties (#362)
6.5.02026-05-02MaxDepth with ToSource() (#361)
6.4.52026-05-01Add InheritDocs parameter (#360)
6.4.42026-04-28Fix ConvertEnumsTo (#355)
6.4.32026-04-27MaxDepth consistency
6.4.22026-04-25Release housekeeping for 6.4.1 follow-up
6.4.12026-04-25Fix multi-level mapping with different configs (#350)
6.4.02026-04-21Fix inherited base projection config selection and add regression coverage (#345)
6.3.42026-04-17Add unit test coverage (#344)
6.3.32026-04-16Fix inherited facet projections not populating properties
6.3.22026-04-16Fix inherited facet projection mappings not being applied
6.3.12026-04-15Fix multi-source facet failures
6.2.02026-04-15Support multiple [Facet] attributes on the same target type (#334)
6.1.42026-04-14Fix CS8601 and CS8602 warnings (#333)
6.1.32026-04-14Fix unnecessary new keyword on FromSource (#331)
6.1.22026-04-13Fix generated static using directives
6.1.12026-04-13Support immutable collection types in nested facets
6.1.0-alpha2026-04-12Pre-release for projection map config (#327)
6.0.22026-04-11Fix wrong property naming on derived generated classes (#324)
6.0.12026-04-10Add compiler error on invalid MapFrom properties (#323)
6.0.02026-04-08V6 major release

5.x releases

VersionDateSummary
5.9.12026-04-03Support InternalsVisibleTo for cross-assembly facets (#310, #311)
5.9.02026-04-01ToSource() with inherited classes (#309)
5.8.82026-04-01ApplyFacetWithChanges fix (#308)
5.8.72026-04-01Fix ToSource() in nested facets (#306)
5.8.62026-03-31Fix static members being included (#301)
5.8.52026-03-31Fix PreserveRequiredProperties for record-class facets (#298, #299)
5.8.42026-03-29Include parameterless constructors as a primary constructor (#297)
5.8.32026-03-26Fix TypeAnalyzer (#296)
5.8.22026-03-05Add nameof resolver support to flatten excludes (#284)
5.8.12026-03-04Add Facet.props support
5.8.02026-03-04Workflow dependency maintenance (actions/upload-artifact v7) (#280)
5.7.02026-02-24Add GenerateCopyConstructor and GenerateEquality (#279)
5.6.52026-02-22Add full-path nameof support with @ (#276)
5.6.42026-02-20Support partial properties (#275)
5.6.32026-02-19Fix static usings for nested facets (#273)
5.6.22026-02-15Fix non-nullable reference type properties without initializers (#267)
5.6.12026-02-13AOT compatibility fixes (#265)
5.6.02026-02-12Add enum conversions (ConvertEnumsTo) (#263)
5.5.32026-02-12Fix nested facets with nullable references (#262)
5.5.22026-01-29Add null checks on nested facets (#259)
5.5.12026-01-28Fix nested facet nullable-enabled generated code (#257)
5.5.02026-01-27Add ChainToParameterlessConstructor
5.4.42026-01-27Fix nullable issues with object properties (#254)
5.4.32026-01-23Fix ambiguous constructor calls (#252)
5.4.22026-01-22Fix same facet name in different namespaces (#250)
5.4.12026-01-13Fix generic type parameters in attributes (#246)
5.4.02026-01-12Allow collection copying in flatten (#245)
5.3.32026-01-12Fix copied initializers (#244)
5.3.22026-01-08Fix copy attributes with enum parameters (#240)
5.3.12026-01-06Fix hooks integration (#236)
5.3.02026-01-02Add MapHooks (#234)
5.2.0-alpha2025-12-18Pre-release dashboard demo
5.2.02025-12-23Workflow dependency maintenance (actions/checkout v6) (#233)
5.1.122025-12-14Deterministic constructor ordering (#226)
5.1.112025-12-09Prevent non-compilable generated code (#222)
5.1.102025-12-05Fix MapFrom (#215)
5.1.92025-12-03Fix XML documentation syntax for constructor generator (#212)
5.1.82025-12-01Add ApplyFacet (#211)
5.1.72025-12-01Suppress CS1591 on generated code (#209)
5.1.62025-11-28Add patch DTOs (#206)
5.1.52025-11-28Fix nullable context warnings (#203)
5.1.42025-11-28Add public constructor generation (#202)
5.1.32025-11-28Workflow updates
5.1.22025-11-27Fix FlattenTo naming clash (#198)
5.1.12025-11-27Versioning fix
5.1.02025-11-27Remove generator as a runtime dependency (#197)
5.0.42025-11-26Fix flattening nested collections (#193)
5.0.32025-11-26Fix nested custom mappings (#192)
5.0.22025-11-26Documentation refresh
5.0.12025-11-25Fix nested facets with duplicate names (#189)
5.0.02025-11-24V5 GA release
5.0.0-alpha52025-11-24Add FlattenTo for unpacking facet collections into flattened rows (#187)
5.0.0-alpha42025-11-23Fix inherited members (#181)
5.0.0-alpha32025-11-22Add MapWhen (#179)
5.0.0-alpha22025-11-22Add source change detection (#177)
5.0.0-alpha2025-11-21Add .NET 10 support (#176)

4.x releases

VersionDateSummary
4.4.32025-11-21Support access modifiers (#171)
4.4.22025-11-21Add SmartLeaf flattening (#169)
4.4.12025-11-20Fix LeafOnly (#165)
4.4.1-alpha42025-11-16NuGet config update
4.4.1-alpha32025-11-16Integration merge during 4.4.1 stabilization
4.4.1-alpha22025-11-16NuGet config adjustments
4.4.1-alpha2025-11-16Add SourceLink (#162)
4.4.02025-11-15Add nested wrappers (#160)
4.4.0-alpha2025-11-14Documentation refresh during 4.4.0 incubation
4.3.3.12025-11-14Versioning correction
4.3.32025-11-14Fix package structure
4.3.2.12025-11-14Package structure work
4.3.22025-11-13Documentation refresh
4.3.12025-11-12Fix facets from static class sources (#146)
4.3.02025-11-08Establish 4.3.0 release line
4.3.0-alpha2025-11-07Add Facet.Extensions.EFCore.Mapping (#139)

3.x releases

VersionDateSummary
3.4.02025-11-08Fix global namespace support (#141)
3.3.02025-11-07Flatten foreign-key clash handling (#138)
3.3.0-alpha.12025-11-04Generator refactor
3.3.0-alpha2025-11-03Add Flatten attribute (#135)
3.2.22025-10-29Fix complex data structures and nesting (#133)
3.2.12025-10-273.2.1 stabilization release
3.2.1-alpha.12025-10-27Fix defaults and add tests (#129)
3.2.1-alpha2025-10-26Version rollback during stabilization (#125)
3.2.0-alpha2025-10-26Add PreserveReference and MaxDepth (#124)
3.1.142025-10-24Implement fix (#120)
3.1.132025-10-24Versioning correction
3.1.122025-10-21Fix nullable assignments (#109)
3.1.112025-10-21Fix FAC001 issue (#108)
3.1.42025-10-23Fix nullable facet collections (#118)
3.1.32025-10-23Add nullable nested facets (#117)
3.1.3-alpha2025-10-22Pre-release for 3.1.3 stabilization
3.1.2-alpha2025-10-22Fix EF projections without Include (#113)
3.1.22025-10-21Bump Microsoft.EntityFrameworkCore to 9.0.10 (#98)
3.1.12025-10-21Fix LINQ using statements for collections (#102)
3.1.02025-10-19Add nested collection support (#97)
3.0.02025-10-17Refactor FacetGenerator

2.x releases

VersionDateSummary
2.9.312025-10-13Add [SetsRequiredMembers] to GenerateDtos (#90)
2.9.3-alpha2025-10-07Add analyzers for usage errors and performance hints (#57)
2.9.32025-10-08Enable unit tests on fork PRs
2.9.22025-10-06Generate facets with nullable properties (#80)
2.9.12025-10-03GenerateDtos also generates facets (#70)
2.9.02025-10-01Add Facet include parameter (#68)
2.8.22025-10-01Fix nullable strings (#67)
2.8.12025-09-21Fix BackTo() with excluded required fields (#59)
2.8.02025-09-17Documentation refresh
2.7.02025-09-12Add expression mapping support (#55)
2.6.22025-09-12Implementation and test follow-up (#54)
2.6.12025-09-10Fix duplicate type names (#51)
2.6.02025-09-09Support nested partial types (#49)
2.5.02025-09-04Add GenerateDtos attribute (#39)
2.4.82025-09-03Namespace fix (#46)
2.4.72025-09-01Add XML docs support (#42)
2.4.62025-09-01Generate parameterless constructors by default (#40)
2.4.52025-08-30File-scoped namespaces and generated source header (#36)
2.4.42025-08-27Pipeline permissions update
2.4.32025-08-27CI/CD pipeline update
2.4.22025-08-27CI/CD maintenance
2.4.12025-08-26Record primary constructor support (#33)
2.3.02025-08-20Add bi-directional EF mapping support (#31)
2.2.02025-08-20Documentation update
2.1.02025-08-18Default FacetKind and record improvements (#23)
2.0.12025-08-05Documentation refresh
2.0.02025-08-04Add async mapping (#15)

1.x releases

VersionDateSummary
1.9.32025-07-04Version bump
1.9.22025-07-02Documentation refresh
1.9.12025-07-03Version update
1.9.02025-07-03Workflow update
1.8.02025-06-04Documentation refresh
1.7.02025-05-06Documentation refresh
1.6.02025-04-27Documentation refresh
1.5.02025-04-26Documentation refresh
1.4.02025-04-25Add incremental caching (#8)
1.3.02025-04-24Documentation refresh
1.2.02025-04-24Merge incremental source generator work (#6)
1.1.12025-04-23Post-release merge maintenance
1.1.02025-04-23Version bump
1.0.22025-04-23Cleanup
1.0.12025-04-23Version bump
1.0.02025-04-23Initial release