A comprehensive toolkit for converting Visual Basic 6 applications to modern C# and migrating Classic ASP to Angular/.NET Core.
This is an in-progress conversion framework. See ProjectPlan.md for detailed roadmap and priorities.
Current validated status:
- the solution builds successfully on
.NET 8 tests/BLML.Testscurrently passes48/49tests1test is intentionally skipped for the isolatedvb6binary.cscompatibility path- active partial implementation currently spans
Phase1,Phase3,Phase4,Phase6, andPhase7 Phase5and most ofPhase8remain prototype or planning surfaces rather than finished projects
- .NET 8 SDK
- Visual Studio 2022 or VS Code
- Git
- PowerShell 7+ (for automation scripts)
# Run a dry run first to see what will happen
.\reorganize-repo.ps1 -DryRun
# Perform actual reorganization
.\reorganize-repo.ps1
# Or reorganize without using git mv (if you haven't committed yet)
.\reorganize-repo.ps1 -UseGitMv:$falseAfter reorganization, the repository follows this structure:
blml-a8/
βββ docs/ # All documentation
β βββ Reference/ # VB6 language reference
β βββ Migration/ # Migration guides
β βββ Training/ # LLM training data
β βββ Lists/ # Keyword/control lists
βββ src/
β βββ Phase1-Foundation/ # Parser, lexer, AST
β βββ Phase2-CoreLanguage/# Code generation, converters
β βββ Phase3-FormsUI/ # Form parsing and conversion
β βββ Phase4-DataAccess/ # Database migration
β βββ Phase5-ASPtoAngular/# ASP to modern web stack
β βββ Phase6-Advanced/ # COM, collections, etc.
β βββ Phase7-Optimization/# Code cleanup and polish
β βββ Phase8-Tooling/ # IDE support, CLI
βββ tests/ # Unit and integration tests
βββ tools/ # Utility scripts
βββ samples/ # Example VB6 code
βββ AngularTutor/ # Separate Angular tutorial project
See REORGANIZATION.md for complete details.
| Document | Purpose |
|---|---|
| ProjectPlan.md | Complete task list organized by priority |
| REORGANIZATION.md | File organization guide |
| reorganize-repo.ps1 | Automation script for restructuring |
Convert Visual Basic 6 desktop applications to modern C# with Windows Forms or WPF.
Key Features:
- Full VB6 syntax parsing
- Form and control conversion
- Database access modernization
- COM interop handling
Migrate classic ASP applications to modern web stack.
Target Architecture:
- Frontend: Angular 20 + Angular Material
- Backend: .NET Core 8 Web API
- Database: SQL Server with Entity Framework Core
Convert Microsoft Access applications to web-based solutions.
Components:
- Schema migration to SQL Server
- Forms to Razor Pages or Blazor
- Reports to web reports
- Queries to stored procedures
- Basic VB6 lexical analysis
- Partial VB6 parser
- Form (.frm) file parsing
- Roslyn-based C# code generation for the active transpiler path
- Access database extraction
- Some control mapping
- Phase6 property procedure conversion and optional/default parameter emission
- Phase7 XML documentation, dead-code cleanup, and LINQ suggestion helpers
- Complete VB6 grammar and semantic coverage
- Symbol table and type inference
- AST builder
- richer form, data, and advanced-feature conversion coverage
- ASP parser
- Angular component generator
- .NET Core API generator
- EF Core scaffolding
- Complete test suite
See ProjectPlan.md for detailed breakdown.
| Phase | Status | Priority | Timeline |
|---|---|---|---|
| Phase 1: Foundation | π‘ Active foundation slice with remaining integration work documented | CRITICAL | Weeks 1-4 |
| Phase 2: Core Language | π‘ Focused error-handling slice active; remaining work documented | HIGH | Weeks 5-8 |
| Phase 3: Forms & UI | π‘ Partially implemented and tested | HIGH | Weeks 9-12 |
| Phase 4: Data Access | π‘ Partially implemented | HIGH | Weeks 9-12 |
| Phase 5: ASP to Angular | π Prototype-only assets | HIGH | Weeks 13-20 |
| Phase 6: Advanced Features | π‘ First implementation slice active | MEDIUM | Weeks 21-24 |
| Phase 7: Optimization | π‘ Multiple helper slices active | MEDIUM | Weeks 25-26 |
| Phase 8: Tooling | π Documentation, stubs, and prototypes | LOW | Ongoing |
For phase-specific remaining work, see:
- Phase 1 README
- Phase 2 README
- Phase 3 README
- Phase 4 README
- Phase 5 README
- Phase 6 README
- Phase 7 README
# Using CLI (not yet implemented)
vb6convert --input MyProject.vbp --output ./CSharp/MyProject
# Using library
var converter = new VB6Converter();
var result = converter.ConvertProject("MyProject.vbp");# Analyze ASP application
asp2angular analyze --input ./AspApp --output ./analysis.json
# Generate Angular + API
asp2angular generate --input ./AspApp --output ./ModernApp# Run unit tests
dotnet test tests/Unit/
# Run integration tests
dotnet test tests/Integration/
# Run all tests
dotnet testThe current tests/BLML.Tests project is in a healthy state.
48/49tests pass1test is intentionally skipped- the solution builds successfully
- the parser and transpiler tests called out earlier are now passing
Phase3FormsUiTodoTests.Vb6BinaryCompatibilityLayer_ShouldSupportBinaryRecordAccessInDedicatedCompatibilityProjectis still skipped- that skip is intentional because
src/Phase3-FormsUI/FormParsing/vb6binary.csremains isolated until a dedicated compatibility project restores its VB runtime dependencies
- create the dedicated compatibility project for
vb6binary.csif binary VB6 record access is still required - add broader fixture-based coverage for end-to-end conversion scenarios across phases
- keep README status synchronized with the actual build and test state
This project is under active development. Contributions are welcome!
- Check ProjectPlan.md for tasks
- Pick a task from an active phase
- Create a feature branch
- Implement with tests
- Submit a pull request
# Clone repository
git clone https://github.com/TronsGuitar/blml-a8.git
cd blml-a8
# Reorganize (first time only)
.\reorganize-repo.ps1
# Create feature branch
git checkout -b feature/my-feature
# Make changes
# ...
# Run tests
dotnet test
# Commit and push
git add .
git commit -m "Add feature X"
git push origin feature/my-feature- reorganize-repo.ps1 - Reorganize repository structure
- accdb2sql.ps1 - Convert Access to SQL Server
- acesss2razor.ps1 - Generate Razor pages from Access
- zippr.ps1 - Archive utilities
- vb6frm2csharpfrmx.py - Form converter
- generatetests.py - Test generator
- searchText.py - Code search utility
- SqlServerRunPSJob.sql - SQL Server job integration
- Total Files: ~100
- C# Files: ~85
- Documentation: ~25 MD files
- Scripts: ~10 PS1/PY/SQL files
- Foundation: active and partially implemented
- Core Features: still incomplete
- Forms: partially implemented with test coverage
- Data Access: partially implemented
- ASP Migration: prototype stage
- Advanced: first slice implemented
- Optimization: active helper slice implemented
- Tooling: planning and stub stage
- .NET 8 - Target framework
- Roslyn - Code generation
- CodeDom - Legacy code generation (being replaced)
- Windows Forms - UI framework
- ADO.NET / EF Core - Data access
- Angular 20 - Frontend framework
- Angular Material - UI components
- TypeScript - Frontend language
- .NET Core 8 - Backend API
- Entity Framework Core - ORM
- SQL Server - Database
- finish
Phase2-CoreLanguagecode-generation and conversion coverage beyond the current partial pipeline - expand
Phase3-FormsUIform conversion, layout reconstruction, property mapping, resource conversion, and compatibility-project handling forvb6binary.cs - implement the remaining
Phase4-DataAccessmigration pipeline for schema extraction, entity generation, data migration, and ADO modernization - decide and execute the real
Phase5-ASPtoAngulartarget architecture, then replace the current prototypes with an actual migration pipeline - extend
Phase6-AdvancedFeaturesintoParamArray, named arguments, enums, collections, COM interop, and broader advanced control support - broaden
Phase7-Optimizationinto whole-project analysis, migration reporting, code metrics, and safer rewrite support - turn the
Phase8-Toolingfolders into actual projects for CLI, IDE/LSP, VS Code, and web-hosted tooling - add broader fixture-based tests, sample projects, and end-to-end validation across all phases
- finish repository polish items such as project packaging, CI coverage, and the top-level license declaration
[Specify your license here]
For questions or support, please open an issue on GitHub.
This project builds upon various open-source VB6 parsers and conversion tools. Special thanks to all contributors to the VB6 migration community.
Note: This is an active development project. Features and structure may change as development progresses. Always refer to ProjectPlan.md for the most current roadmap.