Почему бы не ввести код всех необходимых модулей непосредственно в exe-файл? Нет, я не спорю, может оно из каких-то высших соображений невозможно, но тогда это не средство для разработки ПО, а среда, необходимая для работы этого самого ПО.
Что "это"?
Visual Studio -- это средство для разработки ПО, .Net Framework -- это runtime-среда.
С помощью Visual Studio можно разрабатывать ПО для работы под .Net Framework, а можно -- "классические" Windows-приложения.
ПО для работы под .Net Framework можно разрабатывать с помощью Visual Studio, а можно -- с помощью других средств (в том числе, можно все исходные коды набрать в Notepad, а потом откомпилировать средствами самого .Net Framework).
Ситуация с .Net Framework весьма напоминает программирование на Java: какими бы средствами Вы не пользовались, разработанная программа будет требовать наличия на машине Java Runtime Environment. Причём, если при разработке использовались нововведения Java 6, то установленной версией Java 5 обойтись не удастся.