2016-05-17 10 views
5

Ich habe .NET Core RC2 auf einem Debian 8 amd64-System installiert und möchte testen, ob es möglich ist, eine Instanz von Microsoft SQL Server abzufragen.Wie verwende ich System.Data in einer .NET Core RC2 Konsolenanwendung (Linux, Debian 8)?

Also möchte ich zu meinem Projekt eine Abhängigkeit von der System.Data.SqlClient Assembly hinzufügen.

Derzeit meine Projektdatei, indem Sie den dotnet new CLI-Tool erstellt wurde, sieht wie folgt aus:

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true 
    }, 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0-rc2-3002702" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

Mit this answer auf eine ähnliche Abfrage, konnte ich einen Verweis auf System.Data.Common Ändern der

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50" 
    } 
} 
hinzufügen

Fragment zu

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50", 
    "dependencies": { 
     "System.Data.Common": "*" 
    } 
    } 
} 

, die dotnet restore machten, benutzen NuGet, um eine Menge Sachen herunterzuladen.

Ich versuchte dann das Fragment zu ändern

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50", 
    "dependencies": { 
     "System.Data.SqlClient": "*" 
    } 
    } 
} 

aber NuGet sagt, es ist

konnte nicht lösen 'System.Data.SqlClient' für‘.NETCoreApp, Version = v1.0 lesen ".

Wenn ich die Versionszeichenfolge ändern "4.1.0-rc3- *" die Fehlermeldung wird immer präziser zu lesen:

können nicht lösen ‚System.Data.SqlClient (> = 4.1 .0-rc3) 'für' .NETCoreApp, Version = v1.0 '.

Was ich bin verwirrt ist, dass the NuGet package gallery dedicated to .NET Core explizit System.Data.SqlClient als verfügbar aufgelistet sind.

Also was könnte ich tun, um einen Verweis auf System.Data.SqlClient Assembly zu meinem Projekt hinzufügen und NuGet herunterladen?

Nebenbei spiele ich derzeit in einer einfachen Konsole mit nur dem dotnet CLI-Tool. Gibt es eine Möglichkeit, Projektabhängigkeiten für ein .NET Core-Projekt zu verwalten, ohne auf die Installation von IDEs zurückgreifen zu müssen?

+0

nicht ganz sicher, was dort vor sich geht, aber versuchen Version ' "4.1.0 - *"'. Das wird (aus heutiger Sicht) aus irgendeinem Grund '4.1.0-rc2-24027' bekommen, was funktioniert. – poke

+0

@poke, das hat funktioniert, danke! – kostix

+0

Für diejenigen, die diesen Beitrag finden: Ich konnte 'System.Data.SqlClient' nicht in eine Instanz von Microsoft SQL Server 2005 einloggen und [ein Problem] ablegen (https://github.com/dotnet/corefx/issues/8645) über dieses Problem. – kostix

Antwort

6

Wie Poke bereits im Kommentar kommentiert ist korrekt. Geben Sie eine Version an System.Data.SqlClient macht Ihre Wiederherstellung glücklich;)

Warum ist das? System.Data.SqlClient existiert in der http://nuget.org Galerie. Das Angeben einer Version ("") ist außerhalb der Grenzen eines Projekts (wie eines Nuget-Feed-Pakets) nicht erlaubt und spezifiziert nur einen Stern "*" (Sie sollten das nie tun, es erlaubt Änderungen zu brechen), um die höchste verfügbare Version wiederherzustellen. Da es keinen Stall gibt, wird der Stern nichts finden (es gibt Magie mit den Bindestrichen dahinter). Die RC2-Version dieser Bibliothek ist die erwähnte 4.1.0-rc2-24027 und wenn Sie mit 4.1.0-rc2- * fragen, wird es die höchste der RC2-Builds nehmen (aber es gibt nur eine). Im Vergleich System.Data.Common hat eine öffentliche Veröffentlichung auf nuget.org für die Universal Windows Platform und wird daher gefunden.

Die RC3 ist die nächste Version und nur für Entwickler-Feeds aus dem .NET Core- und ASP.NET Core-Team und nicht für den öffentlichen niget-Feed verfügbar. Du solltest nicht mit ihnen spielen.

+0

@poke danke für die Bearbeitung. – Thomas

+0

Danke (und @poke): Es ist gut zu wissen, dass die vorgeschlagene Lösung keine Magie ist, sondern das erwartete Verhalten. – kostix

+2

Eine schnelle Ergänzung zu dieser Antwort: Der Standard-Feed ist nicht myget, sondern der "normale" nuget-Feed. Die Versionsabhängigkeit des Sterns ('" * ") erhält immer die letzte * stabile * Version eines Pakets. So erhalten Sie für 'System.Data.Common' [' 4.0.0'] (https://www.nuget.org/packages/System.Data.Common/); Es gibt jedoch keinen stabilen 'System.Data.SqlClient', der fehlschlägt. Sie können bestätigen, welche Version tatsächlich verwendet wird, indem Sie nach dem 'dotnet restore' auf' project.lock.json' schauen. – poke

1

, wenn Sie in project.json Datei sind, die Intellisense Sie jetzt führen, wenn Sie das Visual Studio verfügbar mit den neuesten Werkzeugen aktualisiert ..

Ich habe folgendes in dem Element-Abhängigkeiten und es funktioniert perfekt ..

"System.Data.SqlClient": "4.1.0-rc2-24027",

Verwandte Themen