Ошибка при попытке запуска проекта в VS 2017 Remote Debugger

454
05 июня 2017, 21:28

Решил поэкспериментировать с удаленным дебаггом, после его настройки на удаленном компьютере (он находится в локальной сети), и указав в настройках проекта его IP адрес (ну перед этим, естественно поставив галочку "Использовать удаленный компьютер"), выскакивает ошибка после запуска проекта:

Ошибка при запуске проекта: Не удалось запустить программу "D:......\bin\debug\Program.exe" Не удается найти указанный файл

Естественно, я проверял полностью путь до файла, и он верный, и соответственно, файл там находится.

PS В качестве удаленного компьютера, используется Windows 10

Answer 1

Для начала удаленной отладки клиентского приложения необходимо выполнить следующее:

На удаленной машине (виртуальной или реальной не важно):

  • у тестовой машины должен быть либо фиксированный адрес, либо сетевое имя, прописанное и автоматически обновляемое в DNS сервисе, чтобы не менять настройки проекта в дальнейшем.

  • настраиваем сетевую папку, доступную на чтение и запись с машины разработчика, для того чтобы не заниматься копированием каждого билда в ручную.

  • необходимо установить Remote Debuger. Для этого нужно скопировать из папки C:\Program Files (x86)\Microsoft Visual Studio 15.0\Common7\IDE\Remote Debugger версию отладчика нужной разрядности либо скачать инсталлятор по ссылкам из статьи Remote Debugging в документации Microsoft. Не знаю что именно требуется скачивания официального инсталлятора, но моему LiveId явно чего-то не хватило.

  • прописываем запуск msvsmon.exe в автозагрузку при логине пользователя любым удобным способом (групповые политики, ярлык в папке SturtUp, планировщик заданий, logon-скрипт). Можно пропустить этот пункт и запускать каждый раз ручками.

  • настраиваем эталонного пользователя для входа в систему и тестирования приложения, выдаем ему необходимые права и, самое главное, отбираем все заведомо лишние права.

В настройках проекта:

  • создать отдельную конфигурацию для удаленной отладки

  • в разделе Build созданной конфигурации в параметре Output folder указать сетевую папку удаленной машины

  • в разделе Debug выбрать Remote debug

Процесс отладки клиентского приложения

  • перед отладкой нужно явно запустить билд решения, при этом файлы приложения будут скопированы в сетевую папку удаленной машины (если сделано все, перечисленное выше). В принципе это требуется сделать только один раз, при последующих изменения кода в студии, билд будет запускаться автоматически, как при локальной отладке.

  • подключиться к удаленной машине любым клиентом, позволяющим взаимодействие с рабочим столом.

  • запускаем msvsmon.exe, если это не было сделано автоматически при логине.

  • в студии запускаем отладку обычным образом, при этом на удаленной машине запуститься отлаживаемое приложение. Все точки останова и исключения будут обрабатываться на машине разработчика.

Для отладки web- и других серверных приложений лучше установить Remote Debuger в качестве службы.

Answer 2

Этот файл должен находиться на удаленном компьютере, причем в той же папке, что и на хосте. А еще на удаленном компьютере должен работать Remote Tools.

Для автоматического копирования собранного файла на отладочную машину можно использовать вот эти заклинания в Post-Build Step:

robocopy $(TargetDir) \\RemoteMachine\ConsoleApp1\ConsoleApp1\bin\Debug\
if errorlevel 1 exit 0 else exit %errorlevel%
READ ALSO
Записать и прочитать dll как массив байт

Записать и прочитать dll как массив байт

Есть dll которая нормально работаетПеревожу её в массив байт вот так :

207
Как добавить пользовательский класс в Windows Forms?

Как добавить пользовательский класс в Windows Forms?

Код писался под консоль, что-то вроде калькулятора для комплексных чисел, с перегрузкой каждого оператораКак перенести этот класс? В форме...

259
cefsharp изменить передаваемое время c#

cefsharp изменить передаваемое время c#

Доброго времени суток, не подскажите, как изменить системное время, которое передается браузером (cefsharp) сайту ? Я ставлю прокси

256
Как быстро обновить данные через Entity Framework?

Как быстро обновить данные через Entity Framework?

Пишу запрос вот такого вида:

304