COM对象仅适用于VB.NET而非C#

时间:2011-05-10 13:46:45

标签: c# .net vb.net com interop

我有一个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);
    }

在C#build中,val为0,但在VB.NET构建中有一个值。

更新:
我需要将[STAThread]放在C#中的Main()上。它现在有效。

2 个答案:

答案 0 :(得分:1)

我需要将[STAThread]放在C#中的Main()上。它现在有效。

答案 1 :(得分:0)

您是否在C#中尝试了以下内容?

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

您的两个版本之间的唯一区别是您使用var而不是声明实际类型,允许编译器潜在地推断出不正确的类型(不太可能,但肯定可能);并使用int代替Int32。据我所知,int == Int32,但可能在COM的一些奇怪的角落情况下,它可能不会......?