我有这个简单的C#程序:
using Npgsql; public class App { public static void Main(string[] args) { const string CONNECTION_STRING = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase"; using (var conn = new NpgsqlConnection(CONNECTION_STRING)) { conn.Open(); } } }
我用mono(mcs)编译它:
mcs -target:exe -lib:bin -r:System.Data.dll -r:Npgsql.dll -r:System.dll -r:Mono.Security.dll -out:bin/ssl.exe src/App.cs
当我执行时,抛出一个错误:
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Net.Security.SslStream' from assembly 'System,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'. at Npgsql.NpgsqlConnector.Open () <0x4155f7f0 + 0x00115> in <filename unknown>:0 at Npgsql.NpgsqlConnectorPool.GetPooledConnector (Npgsql.NpgsqlConnection Connection) <0x4155c8d0 + 0x00a4f> in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'System.Net.Security.SslStream' from assembly 'System,PublicKeyToken=b77a5c561934e089'. at Npgsql.NpgsqlConnector.Open () <0x4155f7f0 + 0x00115> in <filename unknown>:0 at Npgsql.NpgsqlConnectorPool.GetPooledConnector (Npgsql.NpgsqlConnection Connection) <0x4155c8d0 + 0x00a4f> in <filename unknown>:0
我的Npgsql.dll版本
$monop2 -r Npgsql.dll Assembly Information: Npgsql Version=2.2.0.0 Culture=neutral PublicKeyToken=5d8b90d52f46fda7
我的编译器:
$mcs --version Mono C# compiler version 4.4.0.0 $mono --version Mono JIT compiler version 4.4.0 (Stable 4.4.0.40/f8474c4 Mon Mar 28 12:22:29 UTC 2016) Copyright (`u`C) 2002-2014 Novell,Inc,Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug LLVM: supported,not enabled. GC: sgen
最后,我的环境:
$uname --all Linux abe 4.5.0-1-ARCH #1 SMP PREEMPT Tue Mar 15 09:41:03 CET 2016 x86_64 GNU/Linux
谢谢