.NET Core‘un çıkışı ile birlikte .Net uygulamalarımızı Linux üzerinde de çalıştırabiliyoruz. Production ortamı olarak Linux tercih ediyor ve geliştirme ortamı olarak Windows kullanıyorsanız; production ortamına en yakın ortamı sağlamak için bir Linux sanal makine tercih edebilir ya da Docker for Windows ve Visual Studio entegrasyonu sayesinde kolaylıkla bir Linux container üzerinde uygulamalarınızı çalıştırabilir ve debug edebilirsiniz. Production ortamında container kullanmıyoruz ve bu nedenle de uygulamamın nasıl çalıştığını container dışında görmek istiyorum diyorsanız WSL ve Visual Studio Code ile bu mümkün.
Örneği henüz genel kullanıma sunulmamış olsa da WSL2 üzerinden yapacağım ancak WSL1 desteği de bulunduğunu belirtmek isterim. WSL2 ve örnekte üzerinde çalıştığım ortam ile ilgili detaylı bilgi için buraya tıklayabilirsiniz.
WSL2 ve üzerinde Ubuntu kurulu bir Windows 10 (Insider) işletim sistemi üzerine Visual Studio Code’u ilk açtığımda Resim-1‘de sağ altta göreceğiniz gibi “Remote WSL” eklentisini kurmamı öneriyor.
Resim-1
Eklenti ile ilgili detayları da Resim-2‘de görebilirsiniz. Tahmin edeceğiniz gibi henüz preview aşamasında ancak indirme sayısına ve aldığı 5 yıldıza bakarak da çok fazla sorun çıkartmadığını söyleyebilirim, en azından kullanırken bir sorun yaşamadım.
Resim-2
Eklentiyi kurduktan sonra PowerShell üzerinden Resim-3‘te göreceğiniz gibi wsl komutu ile Ubuntu bash’i açıyorum ve source adında bir klasör oluşturup bu klasör içerisinden Visual Studio Code’u code . komutu ile başlatıyorum. İlk kullanım olduğu için Ubuntu içerisine “VS Code Server for x64” adında bir kurulum yapıyor. Bu aslında bizim remote development yapmamızı yani Windows üzerinde yazdığımız kodların WSL üzerindeki Linux ortamına aktarılmasını sağlayan bir bileşen.
Resim-3
Visual Studio Code ara yüzüne geldiğimizde ise Resim-4‘te göreceğiniz gibi sol menüde en altta “Remote Explorer” menusu ve burada da WSL Targets altında WSL’de yer alan Linux dağıtımlarını görebilirsiniz. Alt kısımda yer alan Terminal ekranında da Ubuntu bash’i kullanabiliyoruz.
Resim-4
Bu kadar Insider ve preview kullandıktan sonra Windows Terminal kullanmadan olmaz diyerek biraz da Windows Terminal üzerindeki WSL desteğini de görmüş olalım. Windows Terminal üzerinde yeni bir sekme açmak istediğinizde WSL’de çalışan Linux dağıtımlarına ait bash’e direkt erişebiliyorsunuz (Resim-5).
Resim-5
Biraz da Windows Terminal üzerinden devam edelim. WSL’de çalışan Ubuntu üzerine .NET Core SDK kuracağım ancak kurulum öncesinde gerekli paketleri indirmek için hangi Ubuntu versiyonunu kullandığımı bilmem gerekiyor. Bunun için Resim-6′da göreceğiniz gibi lsb_release -a komutu ile versiyon bilgilerine erişebiliyorum.
Resim-6
Ubuntu 18.04.3 LTS kullandığımızı gördükten sonra tmp klasörüne gelerek packages.microsoft.com üzerinden Ubuntu 18.04 için packages-microsoft.prod.deb dosyasını wget komutu ile indiriyorum ve dpkg ile paketleri kuruyorum (Resim-7)
Resim-7
apt-transport-https kurulumu ve apt-get update sonrasında da son olarak dotnet-sdk-3.1‘i apt-get komutu yardımıyla kuruyorum (Resim-8). Linux üzerinde .NET Core kurulumu ile ilgili komutlara buradan erişebilirsiniz.
Resim-8
.NET Core SDK kurulumunu da tamamladıktan sonra bu kez de Visual Studio Code Terminal’i kullanarak “mshowtoapp” adında bir klasör oluşturup içerisinde girdikten sonra dotnet new mvc komutu ile yeni bir MVC projesi oluşturuyorum (Resim-9).
Resim-9
Uygulamayı debug etmek istediğimde ise Resim-10‘da göreceğiniz gibi Windows üzerinde olmasında farksız olarak browser açılıyor ve MVC uygulamasının açılış sayfasını görebiliyoruz. Artık Linux üzerinde çalışan .NET Core uygulamasını debug edebilirsiniz.
Resim-10
Benzer şekilde Windows Terminal üzerinden de dotnet run komutu ile MVC uygulamasını çalıştırabilirsiniz (Resim-11).
Resim-11
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://docs.microsoft.com/en-gb/windows/wsl/
https://code.visualstudio.com/docs/remote/wsl
https://www.mshowto.org/windows-subsystem-for-linux-2-wsl2-nedir.html
TAGs: Linux, WSL, WSL2, Windows Subsystem for Linux, Ubuntu, Windows Insider, Windows 10, Windows 10 Pro, Visual Studio, Visual Studio Code, VSCode, Remote WSL, Remote Development, .NET, .NET Core, ASP.NET MVC, Windows Terminal