Когда вы добавляете ссылку на другую сборку (например, стороннюю DLL) в ваш проект C #, компилятор не добавляет содержимое этой сборки в ваш EXE; он просто создает ссылку, которая говорит, что вашей программе нужно будет загрузить эту DLL при запуске. Распространение программы .NET в виде EXE-файла и файлов DLL, которые ему нужны, вполне нормально.
Но если вы предпочитаете, вы можете объединить их в один EXE-файл. Существует несколько различных инструментов, которые могут объединить несколько сборок .NET в одну. Посмотрите ILMerge или .NETZ .