Uruchomienie .NET Core lub .NET 5

0

Mam kilka aplikacji konsolowych w .NET Framework 4.5 i chciałbym spróbować przerobić je na .NET Core.

Posiadam komputer z systemem Ubuntu Linux 20.04 od sierpnia lub września 2020, już wtedy na nim zainstalowałem .NET Core poprzez wykonanie następujących poleceń.

wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1
sudo apt-get install dotnet-sdk-2.1
dotnet --info

W tamtym czasie zainstalowałem też Mono i MonoDevelop. W MonoDevelop można było utworzyć projekt .NET Core. W tamtym czasie utworzyłem próby projekt "hello world", skompilowałem, zadziałał i temat odpuściłem zostawiając na później. W czasie użytkowania akceptuję wszystkie aktualizacje. Teraz, jak próbuję założyć nowy projekt w .NET Core lub otworzyć tamtem projekt, to przy próbie kompilacji dostaję błąd podobny do tego w tym linku https://github.com/mono/md-website/issues/99 , jednakże, jak poza MonoDevelop wejde do katalogu z plikiem SLN i uruchomię polecenie msbuild, to projekt kompiluje się jako debug do wersji .NET Core 2.1 i za pomocą polecenia dotnet mogę uruchomić. Zmiana na Release niczego nie zmienia, a w opcjach projektu nie mam możliwości zmiany wersji frameworka.

Na próbę utworzyłem wirtualną maszynę, w której na czysto zainstalowałem Ubuntu 20.04, zaakceptowałem zaproponowane aktualizacje, potem .NET Core i MonoDevelop, nic więcej. Przy kompilacji i uruchamianiu jest dokładnie ten sam problem.

Mam dodatkowy komputer z Windows 8, w nim, jak próbuję zainstalować Visual Studio 2019 Community, to wyskakuje błąd, że musi być co najmniej Windows 8.1. Próbowałem zainstalować Visual Studio w wersjach 2013 i 2015, też wersja community, w obu przypadkach są następujące problemy:

  1. Jak na stronie Microsoftu, to 2019 mogę pobrać, a jak inna wersja, to wymaga zalogowania się. Mam konto, z którym mam jakiś problem, pewnie go sam zwalczę, ewentualnie poproszę kolegę, który ma sprawne konto Microsoftu.
  2. Wykorzystując www.google.com udało mi się odnaleźć instalatory tych wersji z innych stron, jednak w momencie, jak ma pobrać właściwe dane z internetu, to niczego nie pobiera i pokazuje komunikat, że mam sprawdzić łączność z internetem pomimo, że mam sprawne połączenie. Co z tym zrobić?

W takim razie, skąd i jak uzyskać wersję Community 2013, 2015 i 2017 (właśnie nie wiem, która wersja jest ostatnią działającą na Windows 8)?

Niektórzy proponują Visual Studio Code, jako alternatywę dla Visual Studio. Zainstalowałem ten program na komputerze z Linuxem, ale wbrew pozorom to nie jest żadne IDE, tylko program pokroju Notepad++ lub Notepad2 z kolorowaniem składni i ładnym interfejsem, nic więcej, z tą różnicą, że do kolorowania danego języka trzeba doinstalować wtyczkę. Ewentualnie może wywołać jakieś polecenia systemowe.

Na obu komputerach zainstalowałem też SDK dla .NET 5.0. Na którym komputerze i w jaki sposób utworzyć projekt w .NET Core 3.1 lub .NET 5.0. Chodzi o to, żeby utworzyć nowy projekt, skopiować do niego posiadany kod i skompilować dla .NET Core przynajmniej 3.1 jako release.

0

@andrzejlisek:

Obiło mi się o uszy, że nawet mocno stargetowani na linuxa programiści .Net Core developują na Win i Visual Studio

1
  • Robiłem (krótko bo krótko ale jednak) dev na Linuxie .NET Core'a. Generalnie daruj sobie MonoDevelop, po prostu postaraj się przenieść wszystko "na sucho" do .NET Core.

  • VS Code z zestawem wtyczek daje radę, podstawowe refaktoringi działają, autocomplete jest, działa statyczna analiza

  • Jak się nie podoba to wybul $$$ i kup JetBrains Raider (30 days trial), to jest IDE z prawdziwego zdarzenia

  • Generalnie mixowanie moni i dotnet core jakoś mi się nie widzi, to samo z instalowaniem wielu wersji dotnet core. Zacznij od jednej jedynej wersji żeby uprościć problem.

Poradzić mogę tylko to:

  • Popatrz w logi nugeta, włącz debug/verbose mode - może uda Ci się ustalić co nie śmiga
  • strace powinien działać też z apkami dotnet'owymi (w sensie przez przez śledzenie calli z maszyny wirtualnej)
0

@0xmarcin ma rację, do kodowania w .NET Core na Linuksie najlepszy jest płatny Rider, inaczej zostaje tylko VS Code z wtyczkami, OmniSharpem i klepaniem w CLI. Obecnie większość i tak pracuje na Windowsach w normalnym Visual Studio, a debugować na Linuksie można przez WSL 2. No ewentualnie Visual Studio for Mac, ale za nie trzeba płacić.

0

Jeżeli chce starszy VS z https://visualstudio.microsoft.com/pl/vs/older-downloads/ , to każe się zalogować.

Ale na przykład instalka 2017 jest na przykład w https://www.programosy.pl/program,visual-studio-community.html , można pobrać, ale przy instalacji nie chce pobrać pakietu, pokazuje błąd, że nie ma połączenia z internetem, pomimo, ze mam połączenie. Co z tym zrobić?

Teraz na próbę pobrałem z https://www.techspot.com/downloads/6278-visual-studio.html , instalator się uruchamia, ale potem jest tak samo, czyli pokazuje komunikat, że nic nie może pobrać.

Czyżby oba instalatory były skopane?

Później powalczę ze swoim logowaniem do Microsoft lub poprosze kolegę o pomoc. Czy tam instalatory też są online, czy są offline?

Czy pozostaje mi jedynie postawić Windows 10 i zainstalować VS w wersji 2019?

0
0xmarcin napisał(a):
  • VS Code z zestawem wtyczek daje radę, podstawowe refaktoringi działają, autocomplete jest, działa statyczna analiza

Przedytowanie kodu to jest jedno, ale czy w VSC z wtyczkami można normalnie założyć nowy solution lub projekt i ustawić wersję frameworka i inne opcje kompilacji?

Jeżeli .NET jest od Microsoftu, C# jest od Microsoftu, VSC jest od Microsoftu, to dlaczego trzeba się posiłkować wtyczkami innych producentów, żeby napisać i skompilować program.

2
andrzejlisek napisał(a):

Jeżeli .NET jest od Microsoftu, C# jest od Microsoftu, VSC jest od Microsoftu, to dlaczego trzeba się posiłkować wtyczkami innych producentów, żeby napisać i skompilować program.

Z tego co wiem to użytkownicy Linuxa często preferują narzędzia konsolowe (tak wnioskuję po dyskusjach na ten temat) i dokładnie taki styl pracy z dotnetem Microsoft proponuje właśnie pod Linuxem.
W dotnet CLI utworzenie solucji to po prostu

dotnet new solution --name MySolutin

Podobnie jest z dodaniem projektu i kompilacją.
Więc w sumie VS Code, jak i inne edytory są po to, żeby sobie z IntelliSense móc pisać

0

Nie próbowałbym instalatorów ze stron typu programosy :) VS Code to taki edytor, który IDE staje się dzięki wtyczkom. Microsoft zapewnia bazową platformę, a resztę dostarcza społeczność. OmniSharp zapewnia podstawową analizę kodu, a resztę trzeba ogarniać w plikach launch.json czy przez konsolę. Pod tym względem (i wieloma innymi) VS Code to proteza. Póki co nie zanosi się na to, żeby Microsoft miał zamiar wydać pełnoprawne IDE na Linuksa.

0
mar-ek1 napisał(a):

Z tego co wiem to użytkownicy Linuxa często preferują narzędzia konsolowe (tak wnioskuję po dyskusjach na ten temat) i dokładnie taki styl pracy z dotnetem Microsoft proponuje właśnie pod Linuxem.

Przecież dotnet new to jest standardowy sposób tworzenia solucji i projektów .NET Core na każdym systemie operacyjnym. Na dodatek działa jakieś 750 razy szybciej niż niektóre pełnoprawne IDE od Microsoftu.

0

Mam dodatkowy komputer z Windows 8, w nim, jak próbuję zainstalować Visual Studio 2019 Community, to wyskakuje błąd, że musi być co najmniej Windows 8.1

A dlaczego nie zaktualizujesz do 8.1? Windows 8 od dawna nie ma żadnego supportu. Z założenia „powinieneś” zainstalować darmową aktualizację do 8.1.

0
Azarien napisał(a):

Mam dodatkowy komputer z Windows 8, w nim, jak próbuję zainstalować Visual Studio 2019 Community, to wyskakuje błąd, że musi być co najmniej Windows 8.1

A dlaczego nie zaktualizujesz do 8.1? Windows 8 od dawna nie ma żadnego supportu. Z założenia „powinieneś” zainstalować darmową aktualizację do 8.1.

Pierwsza czynność po instalacji Windows to wyłączenie aktualizacji i Windows 8.0 jest chyba ostatnią wersją, w której aktualizacje nie są obowiązkowe (pamiętam, że swego czasu było głośno, że Windows 8.1 wymuszał aktualizację do Windows 10 i nic nie dało się z tym zrobić). Jednak na potrzeby Visual Studio spróbuję zaktualizować, jednak cały czas jest otwarte pytanie o możliwe przyczyny związane z pobraniem starszych wersji.

Rozumiem, że brak wsparcia to brak aktualizacji bezpieczeństwa, jednak ja nie uległem pogoni za najnowszą wersją. przez długi czas, aż do roku 2015 używałem XP, potem przeszedłem na 8.0. Windows 10 wydaje się być cięższy, miałem dwie maszyny wirtualne obok siebie, jedna z Win8, druga z Win10 i wydaje mi się, że ta z Win10 wyraźnie dłużej startowała.

0

@andrzejlisek: Cóż.... wyłączenie aktualizacji to nie jest wg. mnie dobry pomysł. Opóźnić je - jak najbardziej.

0

Uruchomiłem kolejną maszynę wirtualną, w której zainstalowałem Windows 10 i pobrałem Visual Studio 2019 Community.

Na początku zainstalowałem pakiety "Programowanie aplikacji klasycznych dla platformy .NET" i "Programowanie dla wielu platform w środowisku .NET Core". Na liście szablonów nowego projektu była tylko aplikacja konsolowa do .NET Core.

Potem zainstalowałem dla pewności wszystkie pakiety (ale wybór poszczególnych składników pozostawiłem domyślny), jednak nadal mogę zrobić aplikację .NET Core tylko jako internetową, konsola, UWP, nie licząc bibliotek, testów itp. Natomiast w .NET Framework normalnie jest między innymi aplikacja WinForms i WPF.

Jednym z powodów prób z .NET Core jest rozwiązanie tego problemu:
WinForms, Mono i Ubuntu Linux
Jest pewien drobny problem z WinForms i sugestia użycia właśnie .NET Core.

W jaki sposób mogę w .NET Core zrobić aplikację okienkową w WinForms lub ewentualnie WPF?

1

W .NET Core możesz zrobić aplikację konsolową i ASP.NET Core, które działają na wielu platformach, ale UWP, WPF i Formsy są tylko na Windowsa. Sytuacja może zmieni się od .NET 6, póki co dla Linuksa trzeba kombinować z Mono albo spróbować np. projektu Avalonia.

0

Ja nie mam żadnych przeciwwskazań, żeby zostać przy Mono i .NET 4.7, oba środowiska oferują wszystko, co jest mi potrzebne i oczywiście program skompilowany na Linux daje się uruchomić na Windows i odwrotnie, dotyczy to szczególnie konsoli, a także w wielu przypadkach Windows Forms. Póki co, nikt mnie nie zmusza do przejścia na Core lub .NET 5.0. Co do Forms, to pożyjemy, zobaczymy, równie dobrze może być użnany za przeżytek i całkowicie wycofany, a w to miejsce wejdzie coś zupełnie innego.

W międzyczasie doinstalowałem .NET 5.0 SDK, a przy tworzeniu nowego projektu widzę dwa szablony, jak widać na screenie. Szablon "Aplikacja Windows Forms (.NET Framework)" to najbardziej zwyczajna aplikacja, której najnowszy framework to 4.7.2, działa to dobrze.

Jest jeszcze jeden szablon "Windows Forms App (.NET)" i jak utworzę taki projekt i szybko wejdę do właściwości, to mam do wyboru Core 3.0, Core 3.1 i .NET 5.0. Jednakże, jak zamknę właściwości, lub ich nie otworzę, to pokazuje się okienko "Otwieranie pliku", czekałem dobre 20 minut i uwalałem proces, zrobiłem dwie próby. Jak otworzę wcześniej utworzony projekt i klikną "Form1.cs", to tak samo się zawiesza. Może wystarczy tylko coś jeszcze doinstalować lub ustawić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1