1. A method of editing a software program in a common language runtime environment, the software program having a source code component, an intermediate language component, and a native code component, the method comprising: executing a first portion of the native code component; suspending execution of the native code component at a first point; allowing a user to edit the source code component to create an edited source code component; compiling the edited source code component using a source compiler to create an edited intermediate language component; compiling the edited intermediate language component using an intermediate language compiler to create an edited native code component; and executing the edited native code component beginning at the first point.