McBasic™Get McBasic™ ↗
Build 881
Practical guide

Migrate a Visual Basic 6 project

Import locally, keep the originals, then use the migration report as a repair queue—not a compatibility certificate.

Bring the project, not just a screenshot#

Keep a backup of the original application. Prepare its .vbp (or .vbg), listed .frm/.bas/.cls files and adjacent .frx resources in an accessible source folder. The importer reads VB5/VB6 text forms; binary older forms need conversion to text in the original tooling. ActiveX DLL/control projects are not ordinary executable projects.

Files outside the importer’s allowed source boundary are reported missing. Make a separate staging copy with the required files inside that boundary and corrected references; do not assume that selecting a parent folder grants arbitrary access to sibling paths.

Import to a separate package#

  1. Finish or stop any active build, run, debugger or AI request. Choose File → Import Visual Basic 6 Project… and select the project folder.
  2. If several projects are found, choose the intended executable project. Review missing files and the detected code page.
  3. Choose a new .mcbproj destination outside the source folder. Existing projects are not replaced. Change the code page if the preview/text encoding is wrong.
  4. Import and wait for conversion and Check. Cancellation requests cleanup; if completion won the race, the app explicitly tells you a project was created.
  5. Open the resulting Migration Report. Start with Missing files and Manual, then review Approximated behavior. Keep the source available for comparison.

Read three different outcomes correctly#

ResultYour next decision
ConvertedInspect and test it in the application; a conversion classification is not an exhaustive behavioral test.
ApproximatedRead the stated difference and decide whether it is acceptable.
ManualReplace or implement the flagged code/control; some code is commented out or replaced by an error-raising stub.

The report is stored as Import/report.json and Import/Report.md. Project → Show Migration Report reopens it. Double-click a finding to visit its source or Form. Passing Check can coexist with manual stubs: it proves the generated project is structurally acceptable, not that the original application’s work is complete.

Review the compatibility changes that matter#

The importer preserves supported forms, menu trees, resources and stacking relationships, and chooses Classic appearance. System colors retain semantic names. Supported code rewrites cover explicit default properties, list indexing, optional defaults, conditional compilation, selected file operations and typed conversions. Type records and supported class lifecycle procedures can stay as BASIC.

Points are not VB6 twips. Inspect geometry, drag adapters, image sizing, TabControl rows and date/time format. List item positions can become one-based. File rewrites may use an added Vb6FileIO module and App.DataPath; copy required data separately and test encoding. Windows API, ActiveX/COM, ADO/DAO and unsupported controls still need deliberate replacements. Publishing the result for Windows does not revive quarantined COM or DLL calls.

Use the report to bound the next change#

Search source for IMPORT markers and VB6 comments. Fix one area, Check, then test that feature against the original. Do not delete a placeholder merely to make the report shorter. Keep an explicit list of behavior still unimplemented.

For optional assistance, tick findings and choose Finish with AI…: it opens Plan mode with a prepared request and scope chips. Nothing is sent until Send. One handoff is limited to 40 findings touching at most 32 files; oversized selections are refused. Inspect both findings and code before authorizing provider access. Try the small migration exercise first.

Source baseline 20f4bfed6b · Build manifest
Sources & maintenance

Original web explanation, reviewed against these repository sources. API tables and example files follow the implementation.

  • docs/manual/32-importing-a-visual-basic-6-project.md
  • src/McBasic.Import/Vb6MenuMapper.cs
  • src/McBasic.Import/Vb6MenuShortcuts.cs