2016-05-17 16 views
5

Zainstalowałem .NET Core RC2 na systemie 8 amd64 Debiana i chciałbym przetestować, czy możliwe jest zapytanie o wystąpienie serwera Microsoft SQL Server.Jak używać System.Data w aplikacji konsoli Core RC2 .NET (Linux, Debian 8)?

Chciałbym dodać do mojego projektu zależność od zespołu System.Data.SqlClient.

Obecnie mój plik projekt stworzony przez uruchomienie CLI narzędzie dotnet new wygląda następująco:

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

Korzystanie this answer do podobnego zapytania, udało mi się dodać odwołanie do System.Data.Common zmieniając

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50" 
    } 
} 

fragment do

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

, który sprawił, że dotnet restore używa NuGet do pobrania kilku rzeczy.

Potem próbowali zmienić ten fragment czytać

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

ale Nuget mówi, że to

Nie można rozwiązać 'System.Data.SqlClient' dla”.NETCoreApp, Version = 1.0 ".

Gdybym zmienić ciąg wersji do czytania "4.1.0-rc3- *" komunikat o błędzie po prostu staje się bardziej szczegółowe:

Nie można rozwiązać „System.Data.SqlClient (> = 4.1 .0-rc3) "dla" .NETCoreApp, wersja = v1.0 ".

Co jestem zaskoczony o to, że the NuGet package gallery dedicated to .NET Core wyraźnie wymienia System.Data.SqlClient jako dostępne.

Co mogę zrobić, aby dodać odniesienie do zestawu System.Data.SqlClient do mojego projektu i pobrać go z NuGet?

Na marginesie, obecnie gram na zwykłej konsoli z tylko narzędziem CLI dotnet. Czy istnieje sposób na zarządzanie zależnościami projektu dla projektu .NET Core bez konieczności instalowania IDE?

+0

Nie do końca pewien, co się tam dzieje, ale spróbuj wersję ' "4.1.0 - *"'. To (jak na razie) z jakiegoś powodu otrzyma '4.1.0-rc2-24027' który działa. – poke

+0

@Poke, który działał, dziękuję! – kostix

+0

Dla osób, które znalazły ten wpis: Nie udało się utworzyć logu 'System.Data.SqlClient' w wystąpieniu Microsoft SQL Server 2005 i złożyć [problem] (https://github.com/dotnet/corefx/issues/8645) o tym problemie. – kostix

Odpowiedz

6

Podobnie jak w przypadku poke, które zostało już zaznaczone w komentarzu, jest poprawne. Określ wersję na System.Data.SqlClient, aby przywrócić szczęśliwy;)

Dlaczego tak jest? System.Data.SqlClient istnieje w galerii http://nuget.org. Brak określenia wersji ("") nie jest dozwolony poza granicami projektu (jak pakiet z nugetem) i określając wyłącznie gwiazdę "*" (nigdy nie powinieneś tego robić, pozwala to na przełamanie zmian) przywrócić najwyższą dostępną wersję. Ponieważ nie ma stajni, gwiazda niczego nie znajdzie (jest tam trochę magii z myślnikami). Wersja RC2 tej biblioteki jest wymieniona w 4.1.0-rc2-24027, a kiedy zapytasz z 4.1.0-rc2- *, zajmie najwyższą z wersji RC2 (ale jest tylko jedna). W porównaniu z wersją System.Data.Common ma publiczną wersję na Nuget.org dla Uniwersalnej Platformy Windows i znajduje się z tego powodu.

RC3 to następna wersja i dostępna tylko w kanałach programistów z zespołu .NET Core i ASP.NET Core, a nie z publicznego źródła danych nuget. Nie powinieneś z nimi grać.

+0

@poke thanks for editing. – Thomas

+0

Dziękuję (i @poke): dobrze jest wiedzieć, że proponowane rozwiązanie nie jest magiczne, ale oczekiwane zachowanie. – kostix

+2

Szybki dodatek do tej odpowiedzi: Domyślnym kanałem nie jest myget, ale "normalny" kanał RSS nuget. Zależność wersji gwiazdy ('" * "') zawsze otrzyma najnowszą * stabilną * wersję pakietu. Więc dla 'System.Data.Common', otrzymujesz [' 4.0.0'] (https://www.nuget.org/packages/System.Data.Common/); nie ma stabilnego 'System.Data.SqlClient' chociaż, więc nie powiedzie się. Możesz sprawdzić, której wersji używasz, patrząc na 'project.lock.json' po wykonaniu polecenia' dotnet restore'. – poke

1

jeśli w pliku project.json, intellisense Cię teraz, jeśli zostały zaktualizowane Visual Studio z najnowszych narzędzi dostarczony ..

dodałem następujące w elemencie zależności i działa idealnie ..

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

Powiązane problemy