Можно ли отлаживать как Silverlight, так и WCF-проект одновременно? - PullRequest
3 голосов
/ 12 сентября 2009

У меня есть 3 проекта в моем решении: 1) Проект приложения Silverlight 2) Проект веб-приложения ASP.Net 3) Приложение службы WCF. Проекты 1 и 2 имеют сервисную ссылку на проект 3. Тип привязки - basicHTTPbinding.

Если я установлю проект 2 в качестве начального проекта, я получаю контрольные точки, установленные в обоих проектах 1 и 2, но не в контрольных точках в проекте 3.

Если я выберу проект 3 в качестве начального проекта, я все еще могу использовать свое клиентское приложение, и точки останова в проекте 3 будут достигнуты, но не точки останова в проектах 1 и 2.

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

Ответы [ 5 ]

1 голос
/ 12 сентября 2009

Вы проверили в диалоговом окне «Отладка | Присоединение процессов», чтобы увидеть, к каким процессам VS подключен?

Я подозреваю, что он не подключается к веб-серверу разработки, на котором работает служба WCF. Если это так, запустив приложение ASP.NET, попробуйте добавить вложение в другой веб-сервис разработки.

0 голосов
/ 14 сентября 2009

Есть несколько способов сделать это.

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

2) Если у вас есть веские причины использовать все это в одном решении, вы можете запустить отдельные сеансы отладки, щелкнув правой кнопкой мыши веб-службу и выбрав «Отладка -> Начать новый экземпляр». Затем вы можете сделать то же самое с проектом веб-приложения. Теперь оба будут работать и отлаживаться в одном решении Visual Studio.

Однако, если оба работают внутри IIS, у вас возникнет конфликт при попытке присоединить два сеанса отладки к IIS. Попробуйте запустить один (или оба) из них на локальном сервере разработки. Вы можете исправить IP-адрес сервера разработки, если вам нужно сохранить ссылку на службу.

0 голосов
/ 12 сентября 2009

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

Используйте текущую настройку, а затем выберите «Отладка» -> «Присоединить к процессу», чтобы добавить свой проект WCF. На этом этапе вы можете попробовать войти в хост службы WCF со стороны ASP или Silverlight и посмотреть, будет ли он плавно переходить. Я думаю, что для этого может быть ограничение в 2 процесса, поэтому в случае его сбоя вы можете установить точку останова на интерфейсе вашего проекта WCF, и когда вы переходите в проекты ASP или SL, ваша точка останова будет достигнута. 1003 *

Всякий раз, когда в любом из процессов достигается точка останова, отладчик останавливает все ваши процессы одновременно. Вы можете выполнить миграцию через местоположения каждого процесса, используя Debug-> Windows -> Processes, а Debug -> Windows -> Threads позволит вам переключать потоки в каждом процессе.

0 голосов
/ 12 сентября 2009

Исходя из вашего описания (и я могу ошибаться), похоже, что у вас есть как минимум два разных приложения, то есть процессы. Хотя, по-видимому, можно отлаживать несколько процессов в одном экземпляре Visual Studio (см. здесь ), это не то, что я когда-либо делал (или даже пытался вспомнить)

Обычно я запускаю экземпляр отладчика для каждого процесса, который хочу отладить. Простой способ сделать это - поместить следующую строку кода в основную функцию запуска для каждого приложения:

System.Diagnostics.Debugger.Break();

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

Спасибо Peter Oehlert за исправление моего исходного комментария.

0 голосов
/ 12 сентября 2009

Вы не упомянули модульное тестирование, но если каждый отдельный проект содержит набор модульных тестов, вы можете быть более уверены в индивидуальном поведении каждого проекта, и, как следствие, ваше интеграционное тестирование будет намного проще .

Описываемое вами тестирование точки останова очень сложно в приложении с таким количеством движущихся частей, и оно не повторяется.

...