.NETowo


.NET Core, web development with React and other JavaScript Frameworks

.NET Core na (NIE)Windowsie – .NET Core CLI

tags: C#, dotnet, Visual Studio Code

Witam wszystkich serdecznie na dotnetowo.pl i zapraszam do cyklu wpisów na temat tworzenia aplikacji w .NET core. Jak tytuł mówi będą one przystosowane do systemów spoza rodziny Windows, co nie oznacza, że jestem jego przeciwnikiem lub poniższy kod nie będzie działać na Windowsie. Wręcz przeciwnie! Długi czas korzystałem z ekosystemu Microsoftu, ale jakiś czas temu chciałem przekonać się jak wygląda praca z systemem Apple. Dlatego cieszę się bardzo z rozwoju .NET cora i braku granic przy możliwościach tworzenia oprogramowania w C#.

W tym poście przedstawię komendy dotnet core CLI, które są niezbędne do szybkiego tworzenia oprogramowania w .NET core.

Na początek polecam pobranie Visual Studio Code. Oczywiście w .NET Core możemy tworzyć oprogramowanie w dowolnym edytorze tekstowym. Jednakże rozwiązanie od Microsoftu oparte jest o znany i ceniony edytor Atom. Ponadto zawiera szereg rozszerzeń, które ułatwią nam debugowanie oraz zapewnią namiastkę IntelliSense. Aplikacja dostępna jest na stronie https://code.visualstudio.com. Na systemach Mac OSx dostępny jest również Visual Studio for Mac. Niestety w obecnym stadium moim zdaniem nie nadaje się jeszcze do „poważnej” pracy. Bardzo często występują problemy z zapisem plików oraz InetlliSensem.

Jeżeli pobrałeś Visual Studio Code aby ułatwić sobie pracę zainstaluj poniższe dodatki:

Środowisko przygotowane. Teraz czas na utworzenie nowego projektu. Naszym zadaniem będzie stworzenie prostej książki adresowej. Aplikacja będzie rozwijana przez cały cykl .NET Core na (NIE)Windowsie. Solution aplikacji będzie składać się z trzech projektów:

  1. Contacts.Web – MVC Application
  2. Contacts.DataAccess – Class Library Application
  3. Contacts.Tests – xUnit test Application.

Na początek sprawdźmy czy dotnet CLI jest prawidłowo zainstalowany na naszej maszynie. W Terminalu (Command Line – Windows) wpisz „dotnet”. Oczekiwany wynik:

 
dotnet command result

Jeżeli coś poszło nie tak zapoznaj się z instalacją tutaj.

Tworzenie nowej solucji

Pierwszym krokiem jest utworzenie nowej solucji. Dzięki temu zachowamy konwencje jaka jest w Visual Studio co umożliwi bezproblemową edycję aplikacji na innych platformach.

Komenda: 
dotnet new sln –n Contact 
(n – nazwa pliku)

 
dotnet new solution

Utworzenie projektów oraz dodanie ich do solucji

Aby utworzyć nowy projekt należy również wykorzystać komendę dotnet new. Każdy z projektów będzie w osobnym katalogu, który określamy parametrem output.

Dodanie projektu Contact.Web

Komenda: 
dotnet new mvc –n Contact.Web –o Web 
(n – nazwa pliku, o – lokalizacja) 

Dodanie projektu Contact.DataAccess

Komenda: 
dotnet new classlib –n Contact.DataAccess –o DataAccess 

Dodanie projektu Contact.Tests

Komenda: 
dotnet new xunit –n Contact.Tests –o Tests 

 

Dodanie projektów do solucji

Komenda: 
dotnet sln Contact.sln add Web/Contact.Web.csproj
dotnet sln Contact.sln add Tests/Contact.DataAccess.csproj
dotnet sln Contact.sln add DataAccess/Contact.DataAccess.csproj

Instalacja pakietów nugetowych

W projekcie DataAccess będziemy w późniejszych etapach wykorzystywać Entity Framework do łączenia się z naszą bazą danych. Dlatego niezbędne tutaj będą referencje do bibliotek Microsoft.EntityFrameworkCore oraz Microsoft.EntityFrameworkCore.Design. Możemy je dodać na dwa sposoby.

Z wykorzystaniem dotnet CLI.

W katalogu DataAccess gdzie znajduje się plik Contact.DataAccess.csproj wykonaj poniższą komendę.

Komenda: 
dotnet add package Microsoft.EntityFrameworkCore 

 

Modyfikacja pliku csproj

We wcześniejszych wersjach .NET Core wszystkie rzeczy dotyczące projektu były zapisywane w pliku json. Od wersji .NET Core 1.1 Microsoft przeniósł te wpisy do pliku csproj. Dzięki temu wygląda to bardzo podobnie jak w klasycznym .NET. Wywołując powyższą komendę tak naprawdę dotnet CLI dodał wpis właśnie w pliku csproj. Dlatego drugim sposobem jest ręczna edycja tego pliku i dodanie wpisu z potrzebną biblioteką.

Wpis w pliku csproj: 
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" /> 

 

Aby zrobić restore pakietów należy użyć komendy dotnet restore w katalogu gdzie znajduje się plik sln.

 

Dodawanie referencji pomiędzy projektami

Większość aplikacji jest podzielona na kilka projektów. Tak samo jest w naszym przypadku. W tym kroku utworzymy poniższe referencje (w katalogu gdzie znajduję się plik .sln):

Contact.Web referencja do Contact.DataAccess

Komenda: 
dotnet add Web/Contact.Web.csproj reference DataAccess/Contact.DataAccess.csproj 
(reference - ścieżka do referencji)  

Contact.Tests referencje do Contact.DataAccess oraz Contact.Web

Komenda: 
dotnet add Tests/Contact.Tests.csproj reference DataAccess/Contact.DataAccess.csproj Web/Contact.Web.csproj

 

Referencje można również modyfikować bezpośrednio w pliku csproj poszczególnych projektów

Budowanie i startowanie aplikacji

W katalogu z projektem, który chcemy zbudować i wystartować wykonujemy poniższe komendy (zanim je wykonasz upewnij się, że pobrałeś wszystkie niezbędne zależności – dotnet restore).

dotnet build

dotnet run
(w katalogu projektu Contact.Web)

Aplikacja webowa uruchomi się i dostępna będzie pod adresem http://localhost:5000.

Debugowanie aplikacji

W tym punkcie chciałbym poruszyć pokrótce temat debugowania aplikacji za pomocą Visual Studio Code. Nie będę wdawać się w szczegóły. Przedstawię to tylko w takim zakresie abyś mógł bez problemu sam pójść dalej. Zanim zaczniesz upewnij się, że zainstalowałeś dodatek C# for Visual Studio Code, który polecałem na początku tego wpisu.

Po włączeniu naszej aplikacji komendą dotnet run podepniemy się do jej procesu i dla sprawdzenia czy debugowanie działa prawidłowo postawimy breakpoint w metodzie Index kontrolera Home.

Dodawnie konfiguracji

W zakładce Debug wybieramy z listy Add Configuration

Następnie w Select Environment wybierz .NET Core

Zostanie utworzony plik launch.json, którego na razie nie będę omawiać.

Podłączanie debuggera do procesu

Wybieramy proces Contact.Web.dll w moim przypadku 16131

Sprawdzenie

W pliku Controllers/HomeController.cs postaw breakpoint, a następnie wyświetl w przeglądarce stronę http://localhost:5000 . Jeżeli wszystko poszło dobrze aplikacja powinna zostać wstrzymana we wskazanym punkcie

Myślę, że więcej szczegółów debugowania z Visual Studio Code omówię w osobnym wpisie.

Podsumowanie

Informacje przekazane w tym poście pozwolą Tobie rozpocząć swoją przygodę z .NET Core CLI oraz tworzeniem aplikacji opartych o .NET Core na dowolnym systemie operacyjnym. Zachęcam do zapoznania się z innymi możliwościami .NET core CLI, które są bardzo dobrze opisane na stronie https://docs.microsoft.com/en-us/dotnet/articles/core/tools/ .

Zapraszam do feedbacku i komentarzy. Jest to mój pierwszy wpis na tym blogu, dlatego będę bardzo wdzięczny za wszelkie uwagi 🙂 .

Repozytorium: https://github.com/artzie92/dotnetowo_contact/tree/dotnetcore_basic


Comments

Author: Bartek

2017-06-02 09:53:32 | Dobry tutorial, cały proces tworzenia przeszedł pomyślnie na Ubuntu 17.04. Jedyny problem był z debuggowaniem, dla osób dostających komunikat "The current Linux distribution 'ubuntu' version '17.04' is currenlty unsupported..." trzeba otworzyć preferences->settings w vs code i dodać "csharp.fallbackDebuggerLinuxRuntimeId": "ubuntu.16.10-x64".

Got Something To Say:

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *