Как я могу отладить COM-сборку C#, когда она вызывается из собственного приложения Win32?
Вопрос
Я разрабатываю сборку C#, которую нужно вызывать через COM из приложения Delphi 7 (iow, собственный Win32, а не .net).
Пока что это, кажется, работает.Я экспортировал файл TLB, импортировал его в свой проект Delphi и могу создать свой объект C# и вызывать его функции.
Это здорово, но скоро я собираюсь Действительно хотите использовать Visual Studio для отладки кода C# во время его работы.Устанавливайте точки останова, пошагово просматривайте код и все такое.
Я пытался взломать код Delphi после создания COM-объекта, а затем искать процесс, к которому можно подключиться VS, но не могу его найти.
Есть ли способ настроить VS2008 для этого?Я бы предпочел просто нажать f5 и заставить VS запустить исполняемый файл Delphi, дождаться вызова кода C #, а затем присоединить себя к нему.Но я полагаю, что мог бы жить и с ручным подключением к процессу.
Только, пожалуйста, не говорите мне, что мне нужно обойтись MessageBox.Show и т. д.
Решение
На странице свойств проекта VS2008 на вкладке «Отладка» есть возможность установить другое действие запуска.
Это можно использовать для запуска внешней программы (например.ваше приложение Delphi), когда вы нажимаете F5.
Другие советы
Поместите следующее в метод, который вы хотите отладить:
#if DEBUG
if (!System.Diagnostics.Debugger.IsAttached)
Debugger.Launch();
#endif
Если вы хотите выполнить отладку, создайте отладочную версию и используйте ее в своем приложении.При запуске этого кода появляется диалоговое окно с вопросом, хотите ли вы подключить отладчик.
Вы можете просто подключиться к собственному приложению и увидеть точку останова, просмотреть стеки, часы и т. д.обычно.Вам нужно будет подключиться после создания COM-объекта.
Я помещаю Afx MsgBox при создании объекта, чтобы остановить поток приложения, а затем подключаю отладчик.