COM-объект работает только в VB.NET, а не в C # - PullRequest
1 голос
/ 10 мая 2011

У меня есть COM-объект, который отлично работает в VB.NET, но не в C #. Оба проекта являются консольными приложениями .NET 4.

COM-объект загружается в C #, но методы не возвращают никаких значений. Почему это работает в VB.NET, а не в C #?

Спасибо!

Sub Main()
    Dim server As New NoahVersionLib.Version

    Dim val As Int32

    server.GetNoahServerVersionMS(val)



End Sub


    static void Main(string[] args)
    {
        var server = new NoahVersionLib.Version();

        int val= 0;

        server.GetNoahServerVersionMS(ref val);
    }

val равен 0 в сборке C #, но имеет значение в сборке VB.NET.

UPDATE:
Мне нужно было поместить [STAThread] в мой Main () в C #. Это работает сейчас.

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Мне нужно было поместить [STAThread] в мой Main () в C #. Это работает сейчас.

0 голосов
/ 10 мая 2011

Вы пробовали следующее в C #?

static void Main(string[] args)    
{        
    NoahVersionLib.Version server = new NoahVersionLib.Version();        
    Int32 val= 0;        
    server.GetNoahServerVersionMS(ref val);    
}

Единственные различия между вашими 2 версиями заключаются в том, что вы используете var вместо объявления фактического типа, что позволяет компилятору потенциально выводить неверныйтип (маловероятно, но наверняка возможно);и использование int вместо Int32.Насколько я знаю, int == Int32, но, возможно, в каком-то странном угловом случае с COM, это может и не ..?

...