2006 Flauzer Ответов: 2

Отладка сборки C# COM в VS2010


Я разрабатываю сборку C#, которая должна вызываться через COM из старого приложения vb6 (то есть "родного" win32, а не .net).

Я установил VS2010 Premium в W7 x64, и просто моя цель состоит в том, чтобы использовать Visual Studio для отладки кода C#...другая подсказка: сборка C# компилируется в "режиме x86" (.NET4), а затем dll регистрируется под COM+; ...через некоторое время я пытаюсь скомпилировать в режиме "любой процессор", без какого-либо результата...

таким образом, после:
1) запуск приложения win32
2) установка точки останова по методу "Foo" ,
3) прикрепление отладчика к процессу win32....

*** ничего ....***
Просто все работает хорошо но нет никакого способа активировать отладчик в VS

Есть предложения?

Заранее спасибо.

Флавио

Sergey Alexandrovich Kryukov

Прежде всего, почему COM? Чего вы этим добиваетесь? Есть какая-то конкретная причина использовать VB6? Что ж, избавьтесь от трупа как можно скорее.
А в чем проблема отладки? Сборка C# должна быть отлажена независимо от того, как она размещена. И обычно все очень просто.
—СА

2006 Flauzer

Привет, Сергей, моя цель-сделать ActiveX в .NET. Существует конкретная задача предоставить способ старому приложению "говорить"с другим приложением .NET, так что ActiveX-это простой обходной путь(и он был решен...)

Мое удивление заключается в том, что при вызове MsgBox( Obj.Foo()) VS выдает правильный результат, но я не могу активировать отладку и не могу понять, что не так !!!

Шаг 2) * * * Сделайте свой проект сборки стартовым проектом ("установите стартовый проект "в контексте...

Проект-это библиотека классов dll...у меня есть ошибка. В любом случае....

Я указал options2, то есть приложение win32..."аргументы командной строки". все работает хорошо (т. е. я вижу messagebox с результатом), но отладчик не запускается !. Ваше решение-это именно то, что я сделал, но оно не работает...O_O

Sergey Alexandrovich Kryukov

Видите ли, ваше "сделать ActiveX в .NET" не может быть конечной целью. Конечной целью может быть достижение какого-то конечного результата. ActiveX-это слишком устарело и некрасиво по отношению к .Нет.
Трудно сказать, что вы сделали не так. См. раздел Параметры отладки... Переустановите студию...
—СА

2006 Flauzer

Спасибо Сергею за ВАШ интерес и за ваш отклик.
Только последний комментарий, надеясь быть полезным для тех, у кого есть моя же проблема (из-за незнания всех перипетий VS .. может быть ..)

** Можно запустить отладчик с помощью меню" прикрепить к.. " и указать на правильный dllhost.exe (COM суррогат), связанный с ActiveX; ***
и не забудьте снять флажок оптимизация кода...

Однако для меня вопрос остается открытым, т. е. если кто-то попытается построить топор на C# и перейти к отладке с помощью simpke F5 нажмите кнопку .. все происходит не так быстро ...

Спасибо.
Флавио

Sergey Alexandrovich Kryukov

Видите ли, я просто не понимаю, что мешает вам отлаживать. Прикрепление к процессу, безусловно, работает, и я предложил в своем ответе более простой способ отладки, который должен сработать для вас. А вы пробовали?
—СА

2006 Flauzer

Да, Сергей...я пробовал его на 3 разных рабочих станциях.... :(
Может быть, это жучок?
Вот похожие вопросы: работает на net3. 5, а не на. Net4
http://stackoverflow.com/questions/6102882/debugging-net4-com-registered-assembly-from-win32-caller-in-visual-studio-2010. -- & gt;Вместо сбоя я не собираюсь отлаживать
Если вы согласны (но не стесняйтесь сказать "нет")...Я могу послать тебе свой дурацкий код...

Sergey Alexandrovich Kryukov

В ближайшее время, я не думаю, что у меня будет время для просмотра этого кода, так как он потребует много внимания, извините...
—СА

2 Ответов

Рейтинг:
19

Sergey Alexandrovich Kryukov

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

Но все может быть гораздо проще. 1) Загрузите решение вместе с вашей сборкой в Visual Studio. 2) Сделайте свой проект сборки стартовым проектом ("Set a StartUp Project" в контекстном меню обозревателя решений, когда выбор находится на вашем проекте сборки. 3) Откройте окно "Свойства" этого проекта, вкладку "отладка". 4) отредактируйте поле "аргументы командной строки", введите команду запуска для вашего приложения (VB6 или что-то еще, что вы используете, тот, который запускает приложение с помощью вашей сборки). 5) в исходном коде вашей сборки установите точку останова где-то в коде, который вы хотите отладить. 6) нажмите F5 или Debug - & gt; начать отладку.

Кроме отладки.

—СА


Рейтинг:
12

2006 Flauzer

Из меню Debug - & gt;"Attach to.." опция, пожалуйста, укажите правильный процесс ie, dllhost.exe ком-суррогат. и не клиент win32....