ProjectBuilders is a .NET solution providing libraries and utilities for programmatically building, managing, and testing .NET project structures. It is designed for developers, tool authors, and CI/CD engineers who need to automate .NET project scaffolding, configuration, and test environment setup. The solution aims to simplify the creation and management of .NET projects and their test environments, supporting modern .NET development workflows.
This solution contains multiple projects organized into a cohesive architecture:
- Core Libraries: Foundation for project building and shared abstractions
- Test Utilities: Helpers and fixtures for integration with TUnit and xUnit
- Test Projects: Comprehensive unit and integration tests for all components
- NetEvolve.ProjectBuilders - Core library for programmatic .NET project building and management
- NetEvolve.ProjectBuilders.TUnit - Test utilities for TUnit-based projects
- NetEvolve.ProjectBuilders.XUnit - Test utilities for xUnit-based projects
- NetEvolve.ProjectBuilders.Tests.Unit - Unit tests for core components
- NetEvolve.ProjectBuilders.Tests.Integration - Integration tests for core components
- NetEvolve.ProjectBuilders.TUnit.Tests.Integration - Integration tests for TUnit utilities
- NetEvolve.ProjectBuilders.XUnit.Tests.Integration - Integration tests for xUnit utilities
- Programmatic creation and manipulation of .NET project files
- Utilities for managing solution and project references
- Helpers for test environment setup and teardown
- Extensible abstractions for custom project builders
- .NET SDK 10.0 or higher
- Git for version control
- Visual Studio 2022 or Visual Studio Code (recommended)
-
Clone the repository:
git clone https://github.com/dailydevops/projectbuilders.git cd projectbuilders
No additional configuration is required for basic usage.
dotnet build# Run all tests
dotnet test
# Run specific test project
dotnet test tests/NetEvolve.ProjectBuilders.Tests.Unit# Format code using CSharpier
csharpier format .src/ # Production code
├── NetEvolve.ProjectBuilders/ # Core library
├── NetEvolve.ProjectBuilders.TUnit/ # TUnit test utilities
└── NetEvolve.ProjectBuilders.XUnit/ # xUnit test utilities
tests/ # Test projects
├── NetEvolve.ProjectBuilders.Tests.Unit/ # Unit tests
├── NetEvolve.ProjectBuilders.Tests.Integration/ # Integration tests
├── NetEvolve.ProjectBuilders.TUnit.Tests.Integration/ # TUnit integration tests
└── NetEvolve.ProjectBuilders.XUnit.Tests.Integration/ # xUnit integration tests
decisions/ # Architecture Decision Records (ADRs)
templates/ # Documentation and file templatesThis solution follows modern .NET architectural patterns and best practices:
- Clean Architecture: Clear separation of concerns with dependencies pointing inward
- Dependency Injection: Built-in .NET dependency injection throughout
- Extensible Abstractions: Interfaces and extension points for custom builders
- SOLID Principles: Object-oriented design with SOLID principles
For detailed architectural decisions, see the Architecture Decision Records.
We welcome contributions from the community! Please read our Contributing Guidelines before submitting a pull request.
Key points:
- Follow the Conventional Commits format for commit messages
- Write tests for new functionality
- Follow existing code style and conventions
- Update documentation as needed
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to info@daily-devops.net.
- Architecture Decision Records - Detailed architectural decisions and rationale
- Contributing Guidelines - How to contribute to this project
- Code of Conduct - Community standards and expectations
- License - Project licensing information
This project uses GitVersion for automated semantic versioning based on Git history and Conventional Commits. Version numbers are automatically calculated during the build process.
- Issues: Report bugs or request features on GitHub Issues
- Documentation: Read the full documentation in this repository
This project is licensed under the MIT License - see the LICENSE file for details.
Note
Made with ❤️ by the NetEvolve Team Visit us at https://www.daily-devops.net for more information about our services and solutions.