На мой взгляд, использование Mercurial не является правильным решением этой проблемы.
Основная причина того, что решение не является правильным, заключается в том, что файлы в Mercurial не являются файлами, которые вы хотите использовать на производственном сервере, и поэтому не являются файлами, которые вы хотите использовать на своем сервере разработки (потому что вы хотите, чтобы среда QA была как можно ближе к производственной среде). В Mercurial не хранятся файлы сборок (или их не должно быть), и это файлы, которые сервер должен использовать для запуска приложения.
В Visual Studio встроены средства развертывания, которые можно использовать для этой задачи. Они могут быть настроены для загрузки всех необходимых файлов одним нажатием кнопки.
Скотт Хансельман имеет пост в своем блоге об этом.
Трой Хант делает еще один шаг вперед, представляя сервер сборки с этим превосходным набором сообщений . Он использует Subversion в качестве хранилища, но это также можно сделать с помощью Mercurial.
Я предпочитаю метод построения сервера, поскольку, если он настроен правильно, он делает его на 100% надежным. Он будет делать то же самое каждый раз, когда вы просите его выполнить развертывание. Если вы используете Visual Studio для этого, разработчик, выполняющий публикацию, может выбрать другие параметры и ошибиться.