Ich habe diese einfache C# Programm laden:Typ konnte nicht 'System.Net.Security.SslStream'
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();
}
}
}
und ich kompilieren es mit 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
, wenn ich ausführen, wird ein Fehler ausgelöst:
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, 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
Meine Npgsql.dll Version
$ monop2 -r Npgsql.dll
Assembly Information:
Npgsql
Version=2.2.0.0
Culture=neutral
PublicKeyToken=5d8b90d52f46fda7
Mein Compiler:
$ 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
Schließlich meiner Umgebung:
$ uname --all
Linux abe 4.5.0-1-ARCH #1 SMP PREEMPT Tue Mar 15 09:41:03 CET 2016 x86_64 GNU/Linux
Danke
Ja, ich habe Mono.Security.dll in bin. Nach dem Löschen funktioniert es! Danke – o3o
Ich hatte das gleiche Problem, und das scheint neu zu sein (wahrscheinlich im Zusammenhang mit Monos neuesten Updates). – picrap
Ich hatte das gleiche Problem in Linux mit JetBrains Rider. Die DLL befand sich im Dienstordner. Das Löschen der Datei hat nicht funktioniert. Die DLL wurde während des Builds erneut kopiert. Ich habe /packages/Npgsql.2.2.2/net45/Npgsql.xml bearbeitet und sechs Zeilen für Mono Security auskommentiert. Das hat auch nicht funktioniert. Ich habe /packages/Npgsql.2.2.2/net45/Mono.Security.dll in junk.Mono.Security.dll.junk umbenannt, und das hat funktioniert. –