2015-06-23 70 views
0

我写了一个简单的程序,因为我的应用程序不能在单声道工作。但即使这个简单的程序不起作用,我理解的是ServiceHost构造函数不会初始化其成员(尽管在单源代码中您可以看到正确的说明)。我使用的是单声道/ .net 4.0('mono --version'说的是4.0.1,monodevelop 5.10,ubuntu 14.04.2的lts(32bit)。我试图添加dll所需的版本(版本4.0) exe文件路径,但没有改变servicehost构造函数不初始化其成员在linux(mono - vb.net)

这是容易的代码,我使用。(在.net中没有错误,在linux “在System.ServiceModel.ServiceHostBase无效的IL代码:get_Credentials():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'

我试过在Windows 7上使用Xamarin Studio和Visual Studio编译的32位和64位exe文件(它们在Windows上工作很好,但是在单声道中出现同样的错误)。我在ubuntu中使用了从Windows .net 4.0复制的dll。很明显,64位版本甚至没有启动。我甚至编译内部使用monodevelop 5.10的Linux,但我得到相同的运行时错误。

我改变了“Mono.Security.Criptography.X509Certificates”中的“System.Security.Criptography.X509Certificates”,也改变了dll,但是在linux中,我总是有相同的错误。

我可以做什么/检查?

我被困2天:/

在此先感谢您。

更新1

我转换在C#的源代码,以MCS编译,这表明也使用System.IdentityModel.dll。 C#中的应用程序以这种方式工作。然后我更新monodevelop中的项目,编译并在IDE中分步执行。

然后我更新了vb.net项目,添加了“缺少”dll。它在monodevelop下正确编译,并且由于相同的原因再次停止分步调试。

然后我编译使用vbnc和它的作品。但是我无法在IDE内进行调试。 我不明白为什么......我希望我不能将我所有的源代码转换为C#来查看其他“缺少的dll”,并猜测monodevelop的奇怪行为......

也许我试着添加'missing'在Windows 7中的DLL,编译并看看linux说的。

更新2

Linux并不像在Windows 7中编译的程序,必须在Linux中使用VBNC通过命令行编译。

回答

0

这个问题解决了编译linux中的测试程序与命令行调用vbnc(由于某些未知的原因,monodevelop仅正确编译c#版本,而不是在vb.net中的等效版本)。

所以不可能使用monodevelop和vb.net做一步一步的调试,但它可以使用c#。

在c#编译过程中(使用msc)出现关于缺少DLL(System.Identity.dll)的警告。微软EXE不需要它,单声道,但只有MSC告诉你。我找不到任何有关它的信息,所以也许它可能对别人有用......我在这3天被卡住了:/

相关问题