我有一个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()上。它现在有效。
答案 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的一些奇怪的角落情况下,它可能不会......?