.NET Core 2.0 Yayınlandı

.NET Core 2.0‘ın son sürümü geçtiğimiz haftalarda kullanıma sunuldu. Platformu kullanarak, tercih ettiğiniz metin düzenleyici ile Visual Studio 2017 15.3, Visual Studio Code veya Visual Studio for Mac’de komut satırında geliştirmeye başlayabilirsiniz. Kendi donanımınız ya da Microsoft Azure gibi tercih ettiğiniz bir bulut üzerinde üretim iş yükleriniz için hazır.

Yüklemeler
Desteklenen İşletim Sistemleri
Sürüm Notları
Bilinen Sorunlar
Belgeler
Öğreticiler
Örnekler
Katkıda Bulunanlar
Yürütmeler

Ayrıca, ASP.NET Core 2.0 ve Entity Framework Core 2.0’ı da yayınlıyoruz. Ayrıntılı bilgi için ASP.NET Core 2.0 ve Entity Framework Core 2.0 duyurularını okuyabilirsiniz. Birçok yeni özelliğin nasıl çalıştığını görmek için Channel 9’da lansman videosunu kaçırmayın!

.NET Core 2.0 ile aynı zamanda tamamlanan .NET Standard 2.0 belirtimi de hazır. .NET Standard, kod paylaşmayı iyileştirme ve her bir .NET uygulamasında kullanılabilen API’ların daha tutarlı olmasına yönelik önemli bir çalışmadır. .NET Standard 2.0 ile projelerinizde kullanabileceğiniz bu API’lar kümesi iki katın üzerine çıkıyor.

.NET Core 2.0, Azure Web Apps üzerinden dağıtılıyor ve şimdi tüm Azure bölgelerinde kullanılabilir.

.NET Core 2.0, .NET Core kullanmayı kolaylaştıran ve çok daha yetenekli bir platform hâline getiren önemli iyileştirmeler içeriyor. Aşağıda, bu iyileştirmelerden en büyüklerini; diğerlerini de metin içinde bulacaksınız. Lütfen geribildirimlerinizi ve karşılaştığınız herhangi bir sorunu dotnet/core #812 üzerinden paylaşın.

Çalışma Zamanı
• Çalışma zamanı ve framework’da önemli performans iyileştirmeleri
.NET Standard 2.0 uygulamaları
• Debian Stretch, SUSE Linux Enterprise Server 12 SP2, macOS High Sierra da dâhil olmak üzere 6 yeni platform desteği
RyuJIT, .NET Core 2.0’da x86 JIT
Linux ve Windows ARM32 sürümleri önizleme olarak kullanımda

SDK
dotnet restore şimdi örtük bir komut
• .NET Core ve .NET Standard projeleri, .NET Framework NuGet paket ve projelerine başvurabilir
• .NET Core SDK’si source-build repo ile kaynaktan derlenebilir

Visual Studio
• Canlı Birim Testi’nde .NET Core desteği
• Kod gezinti iyileştirmeleri
• Kutuda C# Azure Functions desteği
• Kapsayıcılar için CI/CD desteği

Visual Studio kullanıcıları: .NET Core 2.0 kullanabilmek için Visual Studio’nun son sürümüne güncellemeniz gerekir. Bu güncelleme için .NET Core 2.0 SDK‘sini ayrı kurmanız gerekecek.
Visual Studio 2017 15.3+
Visual Studio for Mac
Visual Studio Code—C# Uzantısı

Teşekkürler!

.NET Core 2.0 için doğrudan sağladığınız tüm katkılar için tüm ekip adına teşekkür etmek isteriz. .NET Core 2.0’a en verimli katkılardan bazıları Microsoft dışında .NET Core’a yatırım yapan şirketlerden geldi. .NET Core’a katkıları için Samsung ve Qualcomm’a teşekkür ederiz.

.NET Core ekibi, bugün yayınlanan sürümünden önce iki .NET Core 2.0 önizlemesi (Önizleme 1 ve Önizleme 2) yayınladı. Bu sürümleri deneyip bize geribildirimde bulunan herkese teşekkürler.

.NET Core 2.0 Kullanımı
Windows, macOS ya da Linux üzerinde .NET Core 2.0’ı birkaç dakika içinde kullanmaya başlayabilirsiniz.
Önce .NET Core SDK 2.0’sini kurmanız gerekir.
.NET Core 2.0 uygulamalarını komut satırında veya Visual Studio’da oluşturabilirsiniz.
Yeni proje oluşturmak kolay bir süreç. Visual Studio 2017’de kullanabileceğiniz şablonlar var. Aşağıdaki örnekte gördüğünüz gibi, dotnet new ile komut satırında da yeni uygulama oluşturabilirsiniz.

Mevcut uygulamaları yükseltme
Mevcut bir uygulamayı da .NET Core 2.0’a yükseltebilirsiniz. Visual Studio’da bir uygulamanın hedef framework’unu .NET Core 2.0’a değiştirebilirsiniz.

Visual Studio Code veya başka bir metin düzenleyiciyle çalışıyorsanız, hedef framework’u netcoreapp2.0’a güncellemeniz gerekir.

Daha derinlemesine yönergeleri Migrating from ASP.NET Core 1.x to ASP.NET Core 2.0 belgesinde okuyabilirsiniz.

Kitaplıkları yükseltme
Kitaplıkları .NET Standard 2.0’a güncellemeniz gerekmez. .NET Standard 1.x sürümleri süresiz olarak desteklenecek; “eski” ya da “zamanı geçmiş” olarak değerlendirilmeyecektir. .NET Standard yalnızca bir belirtim olduğu için platform gibi eskimez. Daha yüksek sürüm API’lar gerektirmedikleri sürece, genelde kitaplıkların (maksimum .NET uygulama uygulanabilirliği için) kaldırabildikleri en düşük .NET Standard sürümünü hedeflemesi gerekir. Kitaplıkları güncellemek isterseniz, aynı şekilde ya Visual Studio’da ya da doğrudan proje dosyasında aşağıdaki .NET Standard 2.0’ı hedefleyen proje dosya bölümünde gördüğünüz gibi güncelleyebilirsiniz.

.Net Core’u hedefleyen kitaplıklar da oluşturabilirsiniz. .NET Core kitaplıkları yalnız .NET Core uygulamaları tarafından kullanılabildiği için bu genel bir senaryo olarak önerilmemektedir. .NET Standard kitaplıkları gibi Xamarin uygulamalarının .NET Framework’unda kullanılamazlar (kitaplıklar için hedef framework olarak .NET Standard’ın önerilmesinin nedeni budur). .NET Core kitaplıklarını ancak yalnız .NET Core’da olan API’ları kullanmanız gerekiyorsa derlemelisiniz.

.NET Core 1.0 ve 1.1 Uygulamaları ile ilişkisi
.NET Core 2.0’ı, .NET Core 1.0 ve 1.1 bulunan makinelere kurabilirsiniz. 1.0 ve 1.1 uygulamalarınız yine (hangisi geçerliyse) 1.0 ya da 1.1 kullanmaya devam edecek. Uygulamalarınızı özellikle bunun için güncellemezseniz, 2.0 çalışma zamanına geçmeyecekler.

Varsayılan olarak her zaman en güncel SDK kullanılır. .NET Core 2.0 SDK’sini kurduktan sonra bunu 1.0 ve 1.1 projeleriniz de dâhil olmak üzere tüm projeler için kullanacaksınız. Yukarıda belirtildiği gibi, 1.0 ve 1.1 projeleriniz yine (hangisi geçerliyse) 1.0 ya da 1.1 çalışma zamanlarını kullanmaya devam edecek.

Belirli bir SDK’yi kullanmak için, belirli bir .NET Core SDK sürümünü belirleyen bir global.json file oluşturarak bir dizini (tüm bir sürücüye kadar) yapılandırabilirsiniz. Bu dosya “altındaki” tüm dotnet bu SDK sürümünü kullanacaktır. Bunu yaparsanız, bu sürümü kullandığınızdan emin olun.

.NET Core çalışma zamanı iyileştirmeleri
.NET Core 2.0 çalışma zamanında şu iyileştirmeler yapıldı.

Performans iyileştirmeleri
.NET Core 2.0’da çok sayıda performans iyileştirmesi var. Ekip, .NET Core Çalışma Zamanı iyileştirmelerini ayrıntılı olarak anlatan birkaç gönderi yayınladı:
.NET Core’da Performans İyileştirmeleri
.NET Core ve .NET Framework’da, RyuJIT için Performans İyileştirmeleri
.NET Core 2.0’da profil temelli optimizasyon

.NET Core 2.0 ile .NET Standard 2.0 Uygulama
.NET Core 2.0 ile aynı zamanda tamamlanan .NET Standard 2.0 belirtimi de hazır.

.NET Standard 1.6’da 13k olan .NET Standard’da kullanılabilir API’lar kümesini .NET Standard 2.0’da 32k’ye artırdık. Eklenenlerin çoğunluğu .NET Framework API’ı. Bu API’lar, var olan kodu .NET Standard’a, dolayısıyla .NET Standard’ın, .NET Core 2.0 gibi herhangi bir .NET uygulamasına ve gelecek olan Evrensel Windows Platformu (UWP) sürümüne bağlamayı çok daha kolaylaştırıyor.

.NET Core 2.0, .NET Standard 2.0 belirtimini, belirtimin tanımladığı tüm 32k API’lara uygular.

.NET Core 2.0’ın, .NET Standard 2.0 belirtiminin gerektirdiğinin ötesinde sağladığı API’lar kümesini anlamak için .NET Core 2.0 ile .NET Standard 2.0 arasındaki farklara bakabilirsiniz.

Tek bir işletim sistemi olarak Linux’u hedeflemek çok daha kolay
.NET Core 2.0, Linux’a tek bir işletim sistemi gibi davranır. Şimdi, test ettiğimiz tüm Linux dağıtımları üzerinde çalışan (yonga mimarisi başına) tek bir Linux derlemesi var. Şu ana kadar özellikle glibc tabanlı dağıtımlara, daha net söylersek Debian ve Red Hat tabanlı Linux dağıtımlara destek veriyoruz.

Desteklemek istediğimiz, örneğin Alpine gibi musl C Standard kitaplığını kullananlar gibi başka Linux dağıtımları da var. Alpine ilerideki bir yayında desteklenecek.

.NET Core 2.0 Linux derlemesi sık kullandığınız Linux dağıtımları üzerinde iyi çalışmazsa lütfen bize söyleyin.
Benzer iyileştirmeler Windows ve macOS için de yapıldı. Artık aşağıdaki “çalışma zamanları” için yayınlayabilirsiniz.
• linux-x64, linux-arm
• win-x64, win-x86
• osx-x64

Linux ve Windows ARM32 sürümleri önizleme olarak kullanımda

.NET Core ekibi .NET Core 2.0+ için ARM32 derlemeleri hazırlıyor. Bunlar, Raspberry Pi üzerinde kullanmak için mükemmel. Bu derlemeler henüz Microsoft tarafından desteklenmiyor ve önizleme aşamasında. Ekip, .NET Core için SDK derlemeleri değil, Çalışma Zamanı derlemeleri hazırlıyor. Bu nedenle uygulamalarınızı başka bir işletim sisteminde derleyip, sonra çalıştırmak için bir Raspberry Pi (veya benzeri) cihaza kopyalamanız gerekecek.

Başlamak için kullanabileceğiniz .NET Core ARM32 örnekleri veren iki iyi kaynak var:
.NET Core on Raspberry Pi
.NET Core Docker Samples

Globalization Invariant Modu
.NET Core 2.0, genelleştirme ile ilgili temel işlevsellikleri sağlayan, işletim sistemleri ve diller genelinde tek biçimli olan yeni bir seçimli genelleştirme modu içeriyor. Bu yeni modun avantajı, tek biçimli olması, dağıtım boyutu ve genelleştirmeye hiçbir bağımlılığının olmaması. Bu özellik hakkında daha fazla bilgi edinmek ve yeni modun uygulamanız için iyi bir seçenek mi olduğuna yoksa işlevselliğini mi bozduğuna karar vermek için .NET Core Globalization Invariant Modu yazısına bakın.

.NET Core SDK iyileştirmeleri
.NET Core SDK 2.0’a getirilen iyileştirmeler şunlar:
dotnet restore, kullanımını gerektiren komutlarda örtük olarak var
Bugüne kadar dotnet restore komutu .NET Core’da zorunlu bir tuş vuruşları kümesiydi. Komut, gerekli proje bağımlılıkları ve bazı diğer görevleri kuruyor. Yazmayı unutması kolay olabiliyor ve yazmanız gerektiğini söyleyen hata mesajları da her zaman yardımcı olamayabiliyor. Şimdi, run, build ve publish gibi komutlarda sizin adınıza örtük olarak çağrılıyor.

Aşağıdaki örnek iş akışı, zorunlu bir dotnet restore komutunun yokluğunu göstermektedir:

.NET Standard’dan .NET Framework kitaplıklarına başvurun
Şimdi, Visual Studio 2017 15.3 kullanarak .NET Standard kitaplıklarından .NET Framework kitaplıklarına başvurabilirsiniz. Bu özellik, zaman içinde .NET Framework kodundan .NET Standard veya .NET Core’a geçmenize yardımcı olur (ikililerle başlayıp, sonra kaynağa geçin). Ayrıca, bir .NET Framework kitaplığı için kaynak kodun artık ulaşılabilir olmadığı ya da kaybolduğu durumda da yararlıdır; yeni senaryolarda yine kullanılabilmesini sağlar.
Bunun .NET Standard kitaplıklarının en çok kullanılan özelliği olacağını tahmin ediyoruz. Ayrıca .NET Core uygulamaları ve kitaplıklarıyla da çalışır. .NET Framework kitaplıklarına da bağlı olabilirler.

Desteklenen senaryo, yalnız .NET Standard API kümesi içindeki tipleri kullanan bir .NET Framework kitaplığına başvurmaktadır. Ayrıca, yalnız NET Framework 4.6.1 veya daha önceki bir yayını (NET Framework 1.0 da olur) hedefleyen kitaplıklar için desteklenmektedir. Başvurduğunuz .NET Framework kitaplığı WPF’e dayanıyorsa, kitaplık çalışmayacaktır (ya da en azından bütün durumlarda çalışmayacaktır). Ek API’lara bağlı olan kitaplıkları kullanabilirsiniz, ama bunları kullandığınız codepath için kullanamazsınız. Bu durumda test etmeye büyük önem vermeniz gerekir.

Aşağıdaki resimlerde bu özelliğin kullanımını görebilirsiniz.

Bu uygulamanın çağrı yığını, .NET Core’dan .NET Standard’a .NET Framework’a bağımlılığı daha belirginleştirmektedir..

.NET Standard NuGet paketlerinde bundan böyle zorunlu bağımlılıklar yok
Bundan sonra, .NET Standard 2.0 veya üzeri yayınları hedef alıyorsa, .NET Standard NuGet paketlerinde zorunlu bağımlılıklar olmayacak. .NET Standard bağımlılığı şimdi .NET Core SDK tarafından sağlanıyor. Bir NuGet yapısı olarak gerekli değil.

Aşağıdaki, .NET Standard 2.0’ı hedefleyen bir nuspec örneği (bir NuGet paketi tarifi).

Aşağıdaki, .NET Standard 1.4’ü hedefleyen bir nuspec örneği (bir NuGet paketi tarifi).


Visual Studio 2017 sürüm 15.3 güncellemeleri
Yan yana SDK’ler
Visual Studio şimdi güncelleştirilmiş bir .NET Core SDK’sinin kurulduğunu tanıma ve Visual Studio’da buna karşılık gelen araçları gösterme yeteneğine sahip. Visual Studio 15.3 sürümüyle .NET Core SDK’leri ve varsayılanları için yan yana destek sağlıyor ve yeni projeler oluştururken varsayılan olarak makinede kurulu en yüksek sürümü kullanıyor; aynı zamanda, gerekli durumlarda, global.json dosyasını kullanarak daha önceki sürümleri belirleme ve kullanma esnekliğini de sağlıyor. Yani, şimdi tek bir Visual Studio sürümü farklı .NET Core sürümlerini hedefleyen projeler oluşturabiliyor.

Visual Basic desteği
C# ve F# desteğine ek olarak 15.3 şimdi .NET Core uygulamalarını geliştirirken Visual Basic kullanımını da destekliyor. Bu yayında Visual Basic için hedefimiz .NET Standard 2.0 sınıf kitaplıklarını etkinleştirmekti. Bu, Visual Basic’in bu yayında yalnız sınıf kitaplıkları ve konsol uygulamaları için şablonlar sağlaması; C# ve F#’in de ASP.NET Core 2.0 uygulamaları için şablonlar içermesi demek. Güncellemeler için bu blog sayfasını izleyin.

Canlı Birim Testi desteği
Canlı Birim Testi (LUT), Visual Studio 2017 enterprise sürümüyle ilk kez yayınladığımız bir özellik ve şimdi 15.3 sürümüyle .NET Core’u destekliyor. Test Güdümlü Geliştirme’yi (TDD) seven kullanıcılar bu yeni özelliğe kuşkusuz bayılacaklar. Canlı Birim Desteği’ni başlatmak çok kolay; yalnızca menü çubuğundan açmanız yeterli: Test->Live Unit Testing->Start.

LUT özelliğini etkinleştirdiğinizde, daha kodunuzu yazarken kod düzenleyicisinde birim test kapsamı ve başarılı/başarısız geribildirimi alacaksınız. Aşağıdaki resimde kod düzenleyicisinde görülen yeşil onay imlerine ve kırmızı çarpılara dikkat edin.


IDE Üretkenlik iyileştirmeleri
Visual Studio 2017 15.3 kodlarınızı daha iyi ve daha hızlı yazmanıza yardımcı olacak birkaç üretkenlik iyileştirmesi içeriyor. Ekibinizin kod tabanınız için neredeyse her kodlama kuralını zorunlu kılabilmesi ve yapılandırabilmesi için şimdi EditorConfig’de .NET adlandırma kuralları biçimlendirme kurallarını destekliyoruz.

Gezinmedeki iyileştirmelere gelince, yalnızca harf girerek (ör. “BusHelpers.cs” için “bh”) herhangi bir dosya/tip/üye/simge bildirimine gidebilmeniz için GoToAll’da (Ctrl+T) camelCase eşleştirme desteği ekledik. Yazarken değişken adı önerileri de (Şek. 2) göreceksiniz (öneriler, ekibinizin EditorConfig’ünde yapılandırılmış kod stillerine uygun olacaktır).

Bazı yeniden düzenlemeler de yaptık; örneğin:
• Birleştirme çakışmasını çözümle
• Parametre ekle (callsite’dan)
• Geçersiz kılma oluştur
• Adlandırılmış bağımsız değişken ekle
• Parametreler için null denetimi ekle
• Değişmez değerlere basamak ayırıcı ekle
• Sayısal değişmez değerlerin tabanını değiştir (ör. onaltılıktan ikiliye)
• Eğer cümlesinden Değiştir cümlesine dönüştür
• Kullanılmayan değişkeni kaldır

Proje Sistem basitleştirmeleri
Kullanıcılara karmaşık gelen bazı gereksiz öğeleri kaldırarak .csproj proje dosyasını da basitleştirdik; şimdi, mümkün olan yerlerde bunları örtük olarak türetiyoruz. Basitleştirme, Çözüm Gezgini’ne de yansıdı. Çözüm Gezgini’ndeki düğümler şimdi, Bağımlılıklar düğümü içinde, NuGet, projeden projeye referanslar, SDK gibi kategoriler hâlinde düzenlendi.


.NET Core proje sisteminde yapılan bir diğer iyileştirme de, derlemelerde daha verimli olması. Son derlemeden beri hiçbir şey değişmemişse ve proje güncel görünüyorsa, derleme döngülerini çöpe atmayacak.

Docker
2.0 projesiyle birlikte Docker için .NET Core desteğine de birkaç önemli iyileştirme getirildi.
Güncel Docker etiketi .NET Core 2.0’a geçirildi
microsoft/dotnet Docker Hub README, kesimli OS/Arch stiline geçti
Linux ARM32 Docker resimleri şimdi kullanılabilir
.NET Core 2.0 çoklu mimari etiketleri şimdi Debian Stretch kullanıyor
.NET Core Docker resimleri çoklu mimari tabanlı etiketler kullanıyor
.NET Core’da Multi-Stage Build desteği

Destek ve Yaşam Döngüsü
.NET Core 2.0, Microsoft tarafından desteklenen yeni bir sürümdür. Geliştirme ve üretim için hemen kullanmaya başlayabilirsiniz.

Microsoft iki destek düzeyi sunmaktadır: Uzun Süreli Destek (LTS) ve Güncel yayın. LTS yayınlar üç yıl süreyle desteklenir; Güncel sürümler daha kısadır, genelde yaklaşık bir yıl, ama potansiyel olarak daha kısadır. .NET Core 1.0 ve 1.1 LTS yayınlardır. Bu destek düzeyleri hakkında daha fazla bilgiyi .NET Support and Versioning yazısında okuyabilirsiniz. Bu yazıda “Güncel” yayınlardan “Fast Track Support olarak söz edilmektedir.

.NET Core 2.0, Güncel yayındır. LTS desteğine geçirmeden önce sizden kalite ve güvenilirlik konusunda geribildirimlerinizi bekliyoruz. Genel olarak LTS yayınların yalnız güvenlik düzeltmeleri yayınlayacağımız evrede olduğundan emin olmak istiyoruz. Bir uygulamayı LTS yayını olarak kurduktan sonra artık pek fazla güncelleme yapmanız gerekmemelidir, en azından platform güncellemeleri nedeniyle.

.NET Core 1.1
.NET Core 1.1, .NET Core 1.0 ile aynı LTS zaman dilimiyle LTS Desteğine geçti.
.NET Core 1.0 ve 1.1 desteği, hangisi daha erkense, ya 27 Haziran 2019’da ya da .NET Core 2.0 LTS yayınından 12 ay sonra sona erecek.
Tüm 1.0 müşterilerine, 2.0’a geçmeseler bile 1.1’e geçmelerini öneririz. .NET Core 1.1, 1.0’a göre çok daha iyi bir geliştirme deneyimi oluşturan önemli kullanılabilirlik düzeltmeleri içeriyor.

Red Hat
Red Hat de Red Hat Enterprise Linux üzerinde tam .NET Core desteği sağlıyor; çok yakında da bir .NET Core 2.0 dağıtımı sağlayacak. Red Hat gibi iş ortaklarımızın yayınlarımızı böylesine hızlı izlediklerini görmek bize kıvanç veriyor. Daha fazla bilgi için RedHatLoves.NET sayfasına bakın.

Sonsöz
.NET Core için geldiğimiz bu önemli dönüm noktası bize büyük heyecan veriyor. 2.0 sürümü yalnız .NET’in bugüne kadarki en hızlı sürümü değil, .NET Standard 2.0 aynı zamanda ‘her yerde .NET’ sözümüzü de yerine getiriyor. .NET Core, Visual Studio ailesiyle birlikte, MacOS veya Linux ve Windows kullanan geliştiricilere en üretken geliştirme platformunu sağlıyor. En son .NET Core SDK’sini https://dot.net/core adresinden indirip, .NET Core’un bu yeni sürümüyle çalışmaya başlamanızı öneririz.

Lütfen geribildirimlerinizi ve karşılaştığınız herhangi bir sorunu dotnet/core #812 üzerinden paylaşın.
Yeni sürümü çalışırken görmek için .NET Core 2.0 için lansman videosunu başlatın.