Могут ли возникнуть какие-либо проблемы при отладке при запуске проекта из другого проекта?

#c# #wpf #debugging #client-server #launcher

#c# #wpf #отладка #клиент-сервер #launcher

Вопрос:

В C # wpf у меня есть три разных проекта:

  1. Дизайнер
  2. Клиент-исполнитель
  3. Сервер-исполнитель

Если я запускаю конструктор (1), проблем не возникает, поскольку он запускается самостоятельно.

Вместо этого, если я запускаю клиент-исполнитель (2), мне всегда приходится запускать сервер-исполнитель (3). Я знаю, что мог бы использовать запуск нескольких проектов, но я нахожу гораздо более удобным как для отладки, так и для выпуска следовать этой процедуре:

  1. запустите клиент-исполнитель
  2. внутри клиента-исполнителя проверьте наличие сервера-исполнителя и, если не найдено, запустите его изнутри клиента-исполнителя с помощью Process.start (…).

Теперь мой вопрос: поскольку я запускаю его не обычным щелчком правой кнопки мыши-debug launch с несколькими проектами, а с одним проектом (в первом проекте), и изнутри него я запускаю второй проект, будут ли какие-либо проблемы при отладке? Я имею в виду точки останова, JIT и все остальное? Это безопасная и эффективная практика?

Спасибо за помощь

Патрик

Комментарии:

1. Если вы хотите иметь возможность отлаживать проект в Visual Studio, вам следует запустить его с подключенным отладчиком. В качестве альтернативы, вы могли бы подключить отладчик к уже запущенному процессу после того, как вы запустили его не из Visual Studio, а откуда-либо еще. Отвечает ли это на ваш вопрос?

2. Если вы настроите запуск всех ваших соответствующих проектов, то сможете просто все отладить. Если вы запускаете их все по отдельности, вам потребуется сразу несколько экземпляров visual Studio, и каждый экземпляр будет иметь значительные накладные расходы. Оба варианта могут работать, но запуск всех ваших проектов в одном экземпляре обычно намного удобнее и целесообразнее. Исключением из этого было бы, если бы запуск сервера или чего-то еще был чрезвычайно ресурсоемким, поскольку это создает очень дорогие ресурсы или что-то в этом роде. Обычно я использую mocks, чтобы избежать этого.

3. Спасибо за оба комментария. Они оба могут работать. Я ищу наиболее удобный вариант. В любом случае мне приходится выполнять некоторые операции при каждом запуске сервера.

4. @mm8 есть ли какой-либо способ автоматически подключить отладчик из исходного кода, чтобы я мог автоматизировать процедуру?

5. @Andy также решение, которое вы предлагаете, может быть хорошим. Но проблема в том, что оба проекта являются частью одного и того же решения. Поэтому мне пришлось бы загружать одно и то же решение дважды… есть ли обходной путь?

Ответ №1:

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

Когда вы нажимаете клавишу f5, запускается не только ваш один интерфейсный проект, но и любые другие, которые вы также выберете. Все из одного экземпляра visual studio.

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

Способ, которым вы это делаете, заключается в:

https://learn.microsoft.com/en-us/visualstudio/ide/how-to-set-multiple-startup-projects?view=vs-2019

Чтобы задать несколько запускаемых проектов в обозревателе решений, выберите решение (верхний узел).

Выберите контекстное меню узла решения (щелкните правой кнопкой мыши), а затем выберите Свойства. Появится диалоговое окно Страницы свойств решения.

Разверните узел Общие свойства и выберите Startup Project.

Выберите опцию Несколько запускаемых проектов и задайте соответствующие действия.

Когда вы это сделаете, вы увидите список ваших проектов с сопутствующими пакетами. Вы используете поля со списком, чтобы задать те, которые хотите запустить.

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

Комментарии:

1. Да, большое спасибо, это работает. Короче говоря, после настройки, как указано выше, когда я запускаю ExecutorClient ExecutorServer, я запускаю несколько проектов. Когда вместо этого, когда я запускаю Конструктор в его проекте и запускаю для отладки. Все еще интересно, можно ли это автоматизировать с помощью кнопок, которые запускают проект или проекты, которые я хочу, одним щелчком мыши….

2. У вас могут быть разные настройки для выпуска и отладки. Я почти всегда хочу запустить несколько проектов при отладке. Пока я не дойду до тестирования развертывания. Когда у меня все равно обычно есть релизная версия на сервере. Я полагаю, вы могли бы добавить другую конфигурацию, но я не уверен, что это действительно удовлетворяет вашему «одному щелчку».