Автоматическое подключение Visual Studio 2010 к процессу - программирование
Подтвердить что ты не робот

Автоматическое подключение Visual Studio 2010 к процессу

Я использую visual studio 2010, мое приложение имеет многоуровневый архитектор,

MainUI, WCFService, BLL и DAL

My MainUI, связанный с WCF и WCF, далее связывается с BLL и DAL, когда мне нужно отлаживать BLL и DAL, сначала нужно подключить WCF как процесс в Visual Studio (каждый раз). Как я могу спасти себя от этой проблемы.

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

Спасибо

4b9b3361

Ответ 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() в коде. Если отладчик не подключен, тогда запуск этого кода потребует подключения отладчика, и вы можете выбрать существующий экземпляр.

Ответ 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.

Ответ 10

Лично я предпочитаю использовать Debugger.Launch(), как предложено здесь в этом потоке, потому что он не нужен для ссылок на DTE (этот IDE-специфический и должен быть явно привязан к проекту, который будет использоваться)