If your .NET application is compiled against a certain version of the FrameWork, and that version is not present/available in the machine your application is run on, you will, obviously, not be able to run your application.
This is why many install processes provide some way to alert the user to the requirement for a certain version of the FrameWork (or the FrameWork itself, if not present). For example, see: [
^].
The other alternatives are:
1. if no version of the FrameWork is present, then you'd have to write a non-.NET program that would advise the user to download and install the FrameWork, and then launch your Application.
Since WinXP, Windows has shipped with a version of the FrameWork installed, although the user might have removed (from the Control Panel).
2. if some version of the FrameWork is present, then you could provide the user a "launcher" application compiled against the version you know is present, that would start-up, test to see if the required version of the FrameWork is present, and, if not present, advise the user to install, etc.
You can find an example of a program that does not require the FrameWork is installed and that tests is .NET is present in an article here on CodeProject: [
^].
And, check out using MS' ClickOnce install process; it will do the right thing to get the version of the FrameWork needed installed.