servicehost构造函数在linux(mono-vb.net)中不初始化其成员

servicehost构造函数在linux(mono-vb.net)中不初始化其成员,vb.net,ubuntu,mono,Vb.net,Ubuntu,Mono,我写了一个简单的程序,因为我的应用程序不能在mono中运行。但即使是那个简单的程序也不起作用,据我所知,ServiceHost构造函数不会初始化其成员,尽管在mono源代码中可以看到正确的指令 我使用mono/.NET4.0“mono-version”表示4.0.1、MonoDevelop5.10、ubuntu 14.04.2和32位。我试图在exe路径中添加4.0版所需的dll,但没有任何更改 这是我在.Net中使用的简单代码。linux中没有错误。System.ServiceModel.Se

我写了一个简单的程序,因为我的应用程序不能在mono中运行。但即使是那个简单的程序也不起作用,据我所知,ServiceHost构造函数不会初始化其成员,尽管在mono源代码中可以看到正确的指令

我使用mono/.NET4.0“mono-version”表示4.0.1、MonoDevelop5.10、ubuntu 14.04.2和32位。我试图在exe路径中添加4.0版所需的dll,但没有任何更改

这是我在.Net中使用的简单代码。linux中没有错误。System.ServiceModel.ServiceHostBase中的无效IL代码:get_凭据:IL_0000 ret

Imports System.Security.Cryptography.X509Certificates
Imports System.servicemodel

Public Interface IMyService
    Sub DoSomething()
End Interface

Public Class CMyService
    Implements IMyService

    Public Sub DoSomething() Implements IMyService.DoSomething
        Console.WriteLine("-dosomething-")
    End Sub
End Class

Module Module1

    Sub Main()
        Dim h As New ServiceHost(GetType(CMyService), New System.Uri("net.tcp://127.0.0.1/10000"))
    'if you check 'h', you'll see all its member set to Nothing :(
        h.Credentials.ClientCertificate.Authentication.CertificateValidationMode = Security.X509CertificateValidationMode.None
    End Sub

End Module
它已成功编译,但执行时会引发异常。 正如源代码中所报告的,如果您检查变量“h”的成员,我会将其所有项设置为“Nothing”

我试过使用Xamarin Studio和Visual Studio在Windows 7上编译的32位和64位exe,它们在Windows上工作得很好,但在mono中也有同样的错误。我在ubuntu中使用了从Windows.NET4.0复制的dll。显然,64位版本甚至还没有启动。我甚至使用monodevelop 5.10在linux内部编译,但我得到了相同的运行时错误

我在Mono.Security.scriptography.X509Certificates中更改了System.Security.scriptography.X509Certificates,也更改了dll,但在linux中,我总是会遇到相同的错误

我能做什么/检查什么

我被困了两天:/

先谢谢你

更新1 我用c语言转换了源代码,用mcs编译,这建议也使用System.IdentityModel.dll。c中的应用程序就是这样工作的。然后,我在monodevelop中更新项目,编译它,然后我可以在IDE中一步一步地进行

然后我更新了vb.net项目,添加了丢失的dll。它在monodevelop下再次正确编译,并且出于同样的原因,逐步调试再次停止

然后我用vbnc编译,它就可以工作了。但是我不能在IDE内部调试。 我不明白为什么。。。我希望我不能把我所有的源代码都转换成C来查看其他缺失的dll,并猜测monodevelop的奇怪行为

也许我尝试在Windows7中添加“缺失”的dll,编译并查看linux的说明

更新2
Linux不喜欢在Windows 7中编译的程序,它必须通过命令行在Linux中使用vbnc进行编译。

问题解决了,在Linux中使用命令行调用vbnc编译测试程序时,出于未知原因,monodevelop只正确编译c版本,而不正确编译vb.net中的等效版本

因此,使用monodevelop和vb.net进行一步一步的调试是不可能的,但它使用c

在使用msc在c中编译期间,会出现关于缺少dll System.Identity.dll的警告。Microsoft exe不需要它,mono需要,但只有msc会告诉您。我在任何地方都找不到关于它的信息,所以也许它对其他人有用。。。我被困在这上面三天了:/