Как правильно вносить изменения в проект ASP.NET?
Функция "Publish" в VS это всего лишь деталь поставки. Формируй пакет поставки и разворачивай его на FTP.
Подмена файлов, будь то бинарных или текстовых плохая практика, можно что-нибудь отломать и потом долго мучиться восстанавливая предыдущие состояние. Каждая поставка содержит в себе изменения, значит должна быть присвоена версия, которая содержит определенный ченджлог, иначе через цать таких поставок начнется каша. 
Опишу общий процесс поставки:вносятся финальные изменения в разработческой ветки, тестируютсясливаются изменения разработческой версии с master, исправляются конфликты, тестируютсясобирается пакет поставки, содержащий все необходимые конфигурационные, бинарные и прочие файлы и т.д.. Пакет не должен содержать мусорных файлов. Присваивается пакету версияпоставляется пакет на демонстрационный сервер. Если есть БД, то восстанавливается бэкап с продуктовой, либо максимально приближенный к последнему состоянию оригинальной. Применяются миграции.регистрируется приложение в IIS, тестируетсяпоставляете пакет на продуктовое окружение если есть БД, то создается бэкап, применяются миграцииразворачиваете пакет поставкипереключаете IIS на использование поставленной версии
Это процесс, к которому мы пришли не сразу. Были и подмена файлов на продакшене и живая правка кода. Иногда это приводило к плачевным последствиям. Потом итеративно выработалась ручная процедура поставки, после для экономии времени эта процедура автоматизировалась. Сейчас самый продолжительным участком поставки является ручное приемочное тестирование на демонстрационном окружении. Автоматизированные приемочные тесты тоже есть - они прогоняются после сборки билда, но как и весь код они могут содержать ошибки, поэтому ручной прогон приемочных тестов исключать не решаемся.
Ваш проект компилируется в DLL, если вы, что то в контроллерах меняли, достаточно заменить DLL, если в  Razor Views, то достаточно заменить их. Желательно конечно же остановить сайт/сервер, и сделать полное обновление, ибо может вы обновили некоторые используемые пакеты в проекте, и они не совместимы со старыми версиями.