#c# #.net #azure-service-fabric
#c# #.net #azure-service-fabric
Вопрос:
Когда я пытаюсь запустить службу SF из VS в режиме отладки, я получаю следующее:
Была предпринята попытка обновить приложение, но версия приложения не была изменена. Обязательно обновите версию в манифесте приложения перед обновлением.
Где я должен вручную удалить эту службу в SF explorer. Есть ли способ как-то пропустить этот шаг удаления, чтобы отлаживаемая служба просто «перезаписывала» старую?
Ответ №1:
Это происходит потому, что конфигурация для режима отладки приложения установлена неправильно. Вероятно, параметр настроен на сохранение приложения в Service Fabric при прекращении отладки, таким образом, после первого развертывания приложение продолжит выполнять старый код, развернутый в SF.
Другой ваш вариант — установить его либо на удаление приложения, либо на обновление приложения
Для справки, ваши варианты:
Режимы отладки приложений
- Обновить приложение Этот режим позволяет быстро изменять и отлаживать код и поддерживает редактирование статических веб-файлов во время отладки. Этот режим работает, только если ваш локальный кластер разработки находится в режиме 1 узла. Это режим отладки приложения по умолчанию.
- Удаление приложения приводит к удалению приложения при завершении сеанса отладки.
- Автоматическое обновление Приложение продолжает выполняться после завершения сеанса отладки. Следующий сеанс отладки будет рассматривать развертывание как обновление. В процессе обновления сохраняются все данные, которые вы ввели в предыдущем сеансе отладки.
- Сохранить приложение Приложение продолжает работать в кластере после завершения сеанса отладки. В начале следующего сеанса отладки приложение будет удалено.
В этом документе объясняется более подробно.
Комментарии:
1. Можно ли сохранить этот параметр в файле sfproj?
Ответ №2:
Вы можете подключить отладчик к развернутым прикладным процессам. Перейдите в раздел Debug -> Присоединить к процессу. Вы можете выбрать несколько служб. Обратите внимание, что Visual Studio должна быть запущена в режиме администратора.
Если вы хотите отладить код запуска службы, используйте Debugger.Launch()
. Этот метод заблокирует вызывающий код и предложит вам выбрать отладчик, вы можете выбрать запущенный экземпляр VS. К сожалению, есть ошибка, и VS2017 не отображается в качестве опции. Кроме того, вы можете вызвать Thread.Sleep(<duration>)
при запуске и быстро подключить отладчик, этот последний вариант всегда работает.