61 lines
2.1 KiB
Markdown
61 lines
2.1 KiB
Markdown
# Solution Cleanup Tool
|
|
|
|
A C# console application that systematically identifies and removes missing project references from Visual Studio solution files.
|
|
|
|
## Project Structure
|
|
|
|
### Core Components
|
|
|
|
- **Models/**: Data models representing solution structure and analysis results
|
|
- `SolutionModel.cs` - Represents a parsed Visual Studio solution
|
|
- `ProjectReference.cs` - Represents a project reference within a solution
|
|
- `MissingProject.cs` - Represents a missing project reference
|
|
- `CleanupResult.cs` - Represents the result of cleanup operations
|
|
- `AnalysisResult.cs` - Represents analysis results for project references
|
|
- `ValidationResult.cs` - Represents validation results after cleanup
|
|
- `DependencyGraph.cs` - Represents project dependency relationships
|
|
|
|
- **Interfaces/**: Core service interfaces
|
|
- `ISolutionParser.cs` - Interface for parsing solution files
|
|
- `IProjectReferenceAnalyzer.cs` - Interface for analyzing project references
|
|
- `ICleanupEngine.cs` - Interface for performing cleanup operations
|
|
- `IValidationEngine.cs` - Interface for validating cleaned solutions
|
|
|
|
### Dependencies
|
|
|
|
- **FsCheck** - Property-based testing framework
|
|
- **Microsoft.Extensions.DependencyInjection** - Dependency injection
|
|
- **Microsoft.Extensions.Logging** - Logging framework
|
|
- **Xunit** - Unit testing framework
|
|
|
|
### Usage
|
|
|
|
```bash
|
|
SolutionCleanupTool <path-to-solution-file>
|
|
```
|
|
|
|
Example:
|
|
```bash
|
|
SolutionCleanupTool C:\MyProject\MySolution.sln
|
|
```
|
|
|
|
## Development
|
|
|
|
The project follows a pipeline architecture with three main stages:
|
|
|
|
1. **Analysis Stage**: Scans solution files to identify missing project references
|
|
2. **Cleanup Stage**: Safely removes invalid references while preserving valid ones
|
|
3. **Validation Stage**: Verifies solution integrity after cleanup
|
|
|
|
## Testing
|
|
|
|
The project uses both unit tests and property-based tests:
|
|
|
|
- **Unit Tests**: Verify specific examples and edge cases
|
|
- **Property Tests**: Verify universal properties across all inputs using FsCheck
|
|
- **Integration Tests**: Test end-to-end workflows with real file system operations
|
|
|
|
Run tests with:
|
|
```bash
|
|
dotnet test
|
|
``` |