Interface and base classes for building ETLs
dotnet add package Wolfgang.Etl.AbstractionsNuGet Package: Available on NuGet.org
This project is licensed under the MIT License. See the LICENSE file for details.
- GitHub Repository: https://github.com/Chris-Wolfgang/ETL-Abstractions
- API Documentation: https://Chris-Wolfgang.github.io/ETL-Abstractions/
- Formatting Guide: README-FORMATTING.md
- Contributing Guide: CONTRIBUTING.md
{{QUICK_START_EXAMPLE}}
{{FEATURES_TABLE}}
Examples: {{FEATURE_EXAMPLES}}
| Framework | Versions |
|---|---|
| .Net Framework | .net 4.6.2, .net 4.7.0, .net 4.7.1, .net 4.7.2, .net 4.8, .net 4.8.1 |
| .Net Core | |
| .Net | .net 5.0, .net 6.0, .net 7.0, .net 8.0, .net 9.0, .net 10.0 |
This project enforces strict code quality standards through 7 specialized analyzers and custom async-first rules:
- Microsoft.CodeAnalysis.NetAnalyzers - Built-in .NET analyzers for correctness and performance
- Roslynator.Analyzers - Advanced refactoring and code quality rules
- AsyncFixer - Async/await best practices and anti-pattern detection
- Microsoft.VisualStudio.Threading.Analyzers - Thread safety and async patterns
- Microsoft.CodeAnalysis.BannedApiAnalyzers - Prevents usage of banned synchronous APIs
- Meziantou.Analyzer - Comprehensive code quality rules
- SonarAnalyzer.CSharp - Industry-standard code analysis
This library uses BannedSymbols.txt to prohibit synchronous APIs and enforce async-first patterns:
Blocked APIs Include:
- β
Task.Wait(),Task.Result- Useawaitinstead - β
Thread.Sleep()- Useawait Task.Delay()instead - β Synchronous file I/O (
File.ReadAllText) - Use async versions - β Synchronous stream operations - Use
ReadAsync(),WriteAsync() - β
Parallel.For/ForEach- UseTask.WhenAll()orParallel.ForEachAsync() - β Obsolete APIs (
WebClient,BinaryFormatter)
Why? To ensure all code is truly async and non-blocking for optimal performance in async contexts.
- .NET 8.0 SDK or later
- Optional: PowerShell Core for formatting scripts
# Clone the repository
git clone https://github.com/Chris-Wolfgang/ETL-Abstractions.git
cd ETL-Abstractions
# Restore dependencies
dotnet restore
# Build the solution
dotnet build --configuration Release
# Run tests
dotnet test --configuration Release
# Run code formatting (PowerShell Core)
pwsh ./scripts/format.ps1This project uses .editorconfig and dotnet format:
# Format code
dotnet format
# Verify formatting (as CI does)
dotnet format --verify-no-changesSee README-FORMATTING.md for detailed formatting guidelines.
This project uses DocFX to generate API documentation:
# Install DocFX (one-time setup)
dotnet tool install -g docfx
# Generate API metadata and build documentation
cd docfx_project
docfx metadata # Extract API metadata from source code
docfx build # Build HTML documentation
# Documentation is generated in the docs/ folder at the repository rootThe documentation is automatically built and deployed to GitHub Pages when changes are pushed to the main branch.
Local Preview:
# Serve documentation locally (with live reload)
cd docfx_project
docfx build --serve
# Open http://localhost:8080 in your browserDocumentation Structure:
docfx_project/- DocFX configuration and source filesdocs/- Generated HTML documentation (published to GitHub Pages)docfx_project/index.md- Main landing page contentdocfx_project/docs/- Additional documentation articlesdocfx_project/api/- Auto-generated API reference YAML files
Contributions are welcome! Please see CONTRIBUTING.md for:
- Code quality standards
- Build and test instructions
- Pull request guidelines
- Analyzer configuration details
{{ACKNOWLEDGMENTS}}