2015-06-23 123 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天被卡住了:/

相關問題