Природа .NET заключается в возможности устанавливать приложения, скомпилированные в MSIL, затем с помощью JIT или Ngen MSIL компилируется в собственный код и хранится локально в кеше. Он никогда не предназначался для генерации истинного собственного .exe-файла, который можно запустить независимо от .NET-фреймворка.
Может быть, есть какой-то хак, который делает это, но мне это не кажется безопасным. Слишком много динамических процессов, требующих среды, таких как: загрузка динамических сборок, генерация кода MSIL и т. Д.