Если я вас правильно понимаю, да, вы можете, но не в Visual Studio (из того, что я знаю).
Чтобы заставить компилятор генерировать настоящий, автономный исполняемый файл (что означает, что вы используете C #, как и любой другой язык), вы используете программу mkbundle (поставляется с Mono). Это скомпилирует ваше приложение на C # в настоящий исполняемый файл без зависимостей.
Существует множество заблуждений об этом в Интернете. Это не противоречит цели .net Framework, как утверждают некоторые люди, потому что, как вы можете потерять будущие возможности .net Framework, если вы не использовали эти функции с самого начала? И когда вы отправляете обновления для своего приложения, не сложно выполнить его через процессор mkbundle перед сборкой вашего установщика. Есть также преимущество в скорости, которое заставляет ваше приложение работать на собственной скорости (потому что теперь оно является нативным).
В C ++ или Delphi у вас та же система, но без среднего уровня MSIL. Так что, если вы используете пространство имен или исходный файл (называемый модулем в Delphi), то он компилируется и включается в ваш окончательный двоичный файл. Таким образом, ваш конечный двоичный файл будет больше (читай: «нормальный» размер для реального приложения). То же самое относится и к частям фреймворка, который вы используете в .net, они также включены в ваше приложение. Тем не менее, умные ссылки бреют значительную сумму.
Надеюсь, это поможет!