W tym wpisie chciałbym się podzielić wiedzą jak w Linuxie zainstalować obok siebie różne wersję SDK i z nich korzystać
Po pierwsze sprawdźmy co mamy już zainstalowane w naszym systemie, komendą dotnet --list-sdks
lukasz@lukasz-Vostro-5568:~/test$ dotnet --list-sdks 2.1.301 [/usr/share/dotnet/sdk]Teraz musimy pobrać wersje SDK przy ponocy skryptu dotnet-install.sh który znajduję się tutaj. Możecie zapoznać się szczegółowo z możliwościami tego skryptu na tej stornie.
Gdy już pobierzemy skrypt uruchomimy go z odpowiednia flagą --version, gdzie wskażemy numer wersji którą chcemy zainstalować.
Jednakże wszystkie wersje pobrane w ten sposób nie instalują się globalnie. Są dostępne z poziomu aktualnie zalogowanego użytkownika i znajdują się w folderze /home/[user]/.dotnet/sdk
Na stronie https://dotnet.microsoft.com/download/dotnet-core/2.1 możecie podejrzeć dostępne stabilne wersje. A instalujemy je w ten sposób:
./dotnet-install.sh --version 2.1.402 dotnet-install: Downloading link: https://dotnetcli.azureedge.net/dotnet/Sdk/2.1.402/dotnet-sdk-2.1.402-linux-x64.tar.gz dotnet-install: Extracting zip from https://dotnetcli.azureedge.net/dotnet/Sdk/2.1.402/dotnet-sdk-2.1.402-linux-x64.tar.gz dotnet-install: Adding to current process PATH: `/home/lukasz/.dotnet`. Note: This change will be visible only when sourcing script. dotnet-install: Installation finished successfully.Gdy już dostaniemy komunikat iż wszystko ok, przyjdzmy do naszej aplikacji napisanej w dotnetcie i swtó©zymy globalny plik Json w którym wybierzemy wersje jaką chcemy użyć do zbudowania aplikacji
dotnet new globaljsonZwartość pliku global.json
{ "sdk": { "version": "2.1.300" } }Gdy zmienimy wersje aktualną 2.1.300 na 2.1.402 dostaniemy błąd:
lukasz@lukasz-Vostro-5568:~/test$ dotnet run A compatible SDK version for global.json version: [2.1.500] from [/home/lukasz/test/global.json] was not found Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409To dlatego iż ścieżka PATH komendy dotnet wskazuję lokalizację /usr/share/dotnet/ a nie tą gdzie aktualny uzytkownik trzyma pliki binarne SDK. Dopiszemy do zmiennej środowiskowej PATH odpowiednia ścieżkę:
export PATH=/home/[user]/.dotnet:$PATHSprawdźmy czy polecenie wylistowania wszystkich SDK wskazuję nową lokalizację i widać pobraną wersję 2.1.402:
lukasz@lukasz-Vostro-5568:~/.dotnet/sdk$ dotnet --list-sdks 2.1.402 [/home/lukasz/.dotnet/sdk] 2.1.500 [/home/lukasz/.dotnet/sdk] 2.2.100-preview2-009404 [/home/lukasz/.dotnet/sdk]Powinno wszystko działać
Podsumowanie
Fajna sztuczka, dowiedziałem się jak mieć większą kontrole nad środowiskiem developerskim. Trafiłem na post Scott Hanselman’a i już się cieszyłem, iż będę mógł bawić się najnowszymi wersjami czyli prieview
jednakże ten sposób nie pozwala na takie podejście. Jak tylko się dowiem jak tego dokonać, opiszę dla Was ten proces.
Link do Bloga Scoota i jego postu https://www.hanselman.com/blog/SideBySideUserScopedNETCoreInstallationsOnLinuxWithDotnetinstallsh.aspx