Installation
Get started with UnionGenerator in minutes. Choose the packages you need based on your use case.
Core Package
The core package provides all basic union functionality.
NuGet Package Manager
dotnet add package UnionGenerator
Package Manager Console
Install-Package UnionGenerator
PackageReference
<PackageReference Include="UnionGenerator" Version="1.0.0" />
Integration Packages
Add these packages for framework-specific features.
ASP.NET Core
For automatic ProblemDetails mapping and HTTP status code integration:
dotnet add package UnionGenerator.AspNetCore
Features:
- Automatic
IActionResultconversion - HTTP status code attributes
ProblemDetailsgeneration- Middleware integration
Entity Framework Core
For database storage and querying:
dotnet add package UnionGenerator.EntityFrameworkCore
Features:
- Automatic value converters
- JSON column storage
- Query translation
- Migration support
FluentValidation
For validation error mapping:
dotnet add package UnionGenerator.FluentValidation
Features:
- Validation result to union conversion
- Error aggregation
- Property path mapping
OneOf Compatibility
For migrating from the OneOf library:
dotnet add package UnionGenerator.OneOfCompat
Features:
- OneOf-compatible API
- Migration helpers
- Drop-in replacement
Analyzer Packages (Optional)
Add Roslyn analyzers for compile-time warnings and code fixes.
Analyzers
dotnet add package UnionGenerator.Analyzers
Features:
- Exhaustive pattern matching warnings
- Unused case detection
- Invalid access warnings
- Performance suggestions
Code Fixes
dotnet add package UnionGenerator.Analyzers.CodeFixes
Features:
- Automatic pattern completion
- Missing case generation
- Quick fixes for common issues
Version Compatibility
| Package | .NET Version | C# Version |
|---|---|---|
| UnionGenerator | .NET 6.0+ | C# 10.0+ |
| UnionGenerator.AspNetCore | .NET 6.0+ | C# 10.0+ |
| UnionGenerator.EntityFrameworkCore | .NET 6.0+ | C# 10.0+ |
| UnionGenerator.FluentValidation | .NET 6.0+ | C# 10.0+ |
| UnionGenerator.OneOfCompat | .NET 6.0+ | C# 10.0+ |
| UnionGenerator.Analyzers | .NET 6.0+ | C# 10.0+ |
Recommended: .NET 8.0+ and C# 12.0+ for the best experience.
Project Setup
Enable Source Generators
Source generators are enabled by default in modern .NET projects. If you're using an older SDK, ensure your project file has:
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable> <!-- Recommended -->
</PropertyGroup>
Verify Installation
Create a simple union to verify everything works:
using UnionGenerator.Attributes;
[GenerateUnion]
public partial class TestUnion
{
public static TestUnion CaseA(string value) => new CaseACase(value);
public static TestUnion CaseB(int value) => new CaseBCase(value);
}
Build your project. If IntelliSense shows CaseACase and CaseBCase, you're all set! ✅
Troubleshooting
Generator Not Running
If generated code doesn't appear:
-
Clean and rebuild:
dotnet clean
dotnet build -
Check build output for generator errors
-
Restart your IDE (Visual Studio/Rider)
-
Verify package is restored:
dotnet restore
IntelliSense Not Working
- Reload project in your IDE
- Close and reopen the solution
- Delete
obj/andbin/folders, then rebuild
Version Conflicts
If you see version conflicts:
# Update all UnionGenerator packages to the same version
dotnet add package UnionGenerator --version 1.0.0
dotnet add package UnionGenerator.AspNetCore --version 1.0.0
IDE Support
Visual Studio
- ✅ Full support in VS 2022 17.0+
- ✅ IntelliSense for generated code
- ✅ Go to definition works
- ✅ Debugger support
JetBrains Rider
- ✅ Full support in Rider 2021.3+
- ✅ IntelliSense for generated code
- ✅ Refactoring support
- ✅ Debugger support
Visual Studio Code
- ✅ Works with C# extension
- ✅ Basic IntelliSense support
- ⚠️ Some features may require reload
Next Steps
Installation complete! Now:
Package Links
All packages are available on NuGet.org:
- UnionGenerator
- UnionGenerator.AspNetCore
- UnionGenerator.EntityFrameworkCore
- UnionGenerator.FluentValidation
- UnionGenerator.OneOfCompat
- UnionGenerator.Analyzers
- UnionGenerator.Analyzers.CodeFixes