Автоматическое подключение Visual Studio 2010 к процессу
Я использую visual studio 2010, мое приложение имеет многоуровневый архитектор,
MainUI, WCFService, BLL и DAL
My MainUI, связанный с WCF и WCF, далее связывается с BLL и DAL, когда мне нужно отлаживать BLL и DAL, сначала нужно подключить WCF как процесс в Visual Studio (каждый раз). Как я могу спасти себя от этой проблемы.
Как я мог настроить визуальную студию таким образом, чтобы автоматически подключался к службе, и я мог легко отлаживать мое приложение.
Спасибо
Ответы
Ответ 1
Настройте решение для запуска нескольких проектов. Я делаю это для аналогичного приложения. VS запускает WCF и клиент автоматически, и я могу установить точки останова в.
Порядок запуска - это порядок, в котором вы выбираете проекты.
Щелкните правой кнопкой мыши на своем решении и выберите "выбрать проекты запуска". Затем выберите несколько проектов запуска и выберите проекты.
Ответ 2
Пример того, как начать процесс и присоединить его к Visual Studio 2010 с EnvDTE (актуальна версия).
//c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\EnvDTE.dll
using Process = EnvDTE.Process;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = System.AppDomain.CurrentDomain.BaseDirectory + @"\YourProcess.exe";
//Start the process
p.Start();
//Wait for process init
System.Threading.Thread.Sleep(1000);
bool attached = false;
//did not find a better solution for this(since it not super reliable)
for (int i = 0; i < 5; i++)
{
if (attached)
{
break;
}
try
{
EnvDTE.DTE dte2 = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
EnvDTE.Debugger debugger = dte2.Debugger;
foreach (Process program in debugger.LocalProcesses)
{
if (program.Name.Contains("YouProcess.exe"))
{
program.Attach();
attached = true;
}
}
}
catch (Exception ex)
{
//handle execption...
}
}
Ответ 3
Попробуйте использовать System.Diagnostics.Debugger.Break() в коде. Если отладчик не подключен, тогда запуск этого кода потребует подключения отладчика, и вы можете выбрать существующий экземпляр.
Ответ 4
Вы пробовали System.Diagnostics.Debugger.Launch()
в своем сервисе, к которому вы хотели бы подключить отладчик?
http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx
Ответ 5
- На странице свойств проекта службы wcf выберите вкладку "Веб".
- Выберите "Запустить внешнюю программу" для запуска и выберите MainUI.exe.
- Задайте рабочий каталог как папку, в которой находится MainUI.exe(возможно, папка с bin).
- Задайте точку останова и нажмите f5, чтобы начать отладку.
Ответ 6
Если я правильно понял, Macro может ответить:
в Vs:
- Инструменты- > Макросы- > запись Временно Макро (Ctrl + shift + r)
- Приложить VS для обработки, как обычно (ctrl + alt + p)
- Остановить запись макроса (ctrl + shift + r)
- Перейти в View- > Other Windows- > Macro Explorer (CTRL + F8)
- найдите временный макрос (где-то в MyMacros- > RecordingModule) и переименуйте его
- Теперь перейдите в Инструменты- > Параметры- > Клавиатура и найдите свой макрос (в "Показать команду, содержащую имя записи макроса" )
- в "Нажмите клавиши быстрого доступа" привяжите его к некоторому ключевому ярлыку (у меня есть макрос в CTRL + SHIFT + K;))
- Нажмите OK
- Будьте счастливы.
Ответ 7
Вы пытались использовать WCFSvcHost.EXE, который поставляется с Visual Studio для запуска службы BLL и DAL? С ним есть файл справки. Файл справки утверждает, что "Windows Host Foundation (WCF) Service Host (wcfSvcHost.exe)) позволяет запускать отладчик Visual Studio (F5) для автоматического запуска и тестирования службы, которую вы внедрили. Затем вы можете протестировать службу, используя WCF Test Client (wcfTestClient.exe) или ваш собственный клиент, чтобы найти и исправить любые возможные ошибки". По умолчанию используется C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE. Вы можете настроить его для использования вашего приложения MainUI в качестве клиента. Файл справки WcfSvcHost.chm в том же каталоге имеет раздел для использования пользовательского клиента в сценариях для использования ECF Service Host. Если вы предпочитаете здесь ссылку, чтобы помочь на веб-сайте MS: С помощью WCF Service Host (wcfSvcHost.exe).
Ответ 8
Если это для самообслуживающей службы Windows WC, вам необходимо настроить свой хост-узел WCF для запуска в консоли или в качестве службы Windows. Когда вы включили консоль, вы можете начать отладку из visual studio.
Создайте параметр приложения под названием "RunInConsole". В способе запуска хоста вашего сервиса укажите следующий код:
public class MyWindowsService : ServiceBase
{
public static void Main(string[] args)
{
// if configuration says to run in the console, run the service in a console app. otherwise, use windows
// service to host application
if (ConfigurationManager.AppSettings["RunInConsole"] == "true")
{
using (ServiceHost host = new ServiceHost(typeof(MyService)))
{
host.Open();
Console.WriteLine("Press <Enter> to terminate the Host application.");
Console.ReadLine();
}
}
else
ServiceBase.Run(new MyWindowsService ());
}
}
Во всех средах, которые вы развертываете, вы всегда должны установить этот параметр конфигурации равным false, иначе служба не запустится, но при локальном отладке вы установите значение true.
Ответ 9
Вот статья с задержкой, которая объясняет, как это сделать... Вы можете настроить этот макрос.
http://sivablogz.wordpress.com/2013/04/08/running-an-application-and-attaching-to-the-process-with-a-macro-in-visual-studio/
Ответ 10
Лично я предпочитаю использовать Debugger.Launch(), как предложено здесь
в этом потоке, потому что он не нужен для ссылок на DTE (этот IDE-специфический и должен быть явно привязан к проекту, который будет использоваться)