Это очень простая установка, я не могу поверить, но я не нашел никого с такой же проблемой ...
Создать библиотеку классов .Net4 в VS2010.Создайте самый простой из возможных COM-объект:
[ComVisible(true)]
[Guid("CD157EBC-C89D-40b6-B531-E85FF4B3AE9A")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAcorn
{
bool Foo(string moo);
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("854B7690-C1C4-40c4-8059-B4F3450B30D0")]
public class Acorn : IAcorn
{
public Acorn()
{
}
public bool Foo(string moo)
{
return true;
}
}
Установите опцию «Регистрация для взаимодействия COM» для сборки.Установите для "target target" значение x86.
Создайте клиент Win32 с помощью Delphi, импортируйте объект, создайте его экземпляр с помощью обычного создания экземпляров (переводится в CoCreateInstance (ClassID, nil, CLSCTX_INPROC_SERVER или CLSCTX_LOCAL_SERVER, IUnknown, Result))*
Запустите приложение Win32, все работает нормально.
Попробуйте отладить COM-объект из VS2010.Установите параметр Debug библиотеки классов для запуска внешней программы, укажите на исполняемый файл, который вы только что создали.При запуске приложения Win32 из VS210 происходит сбой программы (со StackOverflow) при попытке создать экземпляр COM.
Измените целевую платформу на .Net 3.5 Запустите отладку из VS2010, все работает, включая отладку.
Примечание. Эта проблема также возникает при использовании хостинга CLR или неуправляемого экспорта COM-экземпляра.Оба метода работают с .Net4, но отладка невозможна.
Вопрос стандартный - почему это происходит и есть ли обходной путь?