.NET Upgrade Assistant - .NET Modernizasyonundaki Yardımları

.NET ekosisteminde neredeyse her yıl yeni sürüm ortaya çıkmakta ve her birinde önemli performans iyileştirmeleri ve yeni özellikler bulunmaktadır. 

Versiyonlar ilerledikçe eski .NET versiyonlarına verilen destek azalmakta veya sonlanmaktadır. (Out of support)

.NET için son sürümlerinin tarihçesi

Bu doğrultuda .NET geliştiricileri olarak uygulamaları güncel tutmak için versiyonları yükseltmeye ihtiyaç duyulur fakat bu geçiş kolay değildir. Paketlerin .NET versiyonları, bağımlılıklar, kodların yükseltilen versiyonlarla uyum sağlaması, kod düzenlemesi için efor harcanır. 

Bu makalede versiyon güncellemede geliştiricilere kolaylık sağlayacak bir araç olan ".NET Upgrade Assistant" aracını ele almak isterim.

".NET Upgrade Assistant", .NET uygulamasını modernize hale getirmek için yardımcı bir araçtır. Visual Studio IDE veya CLI üzerinde kullanılabilir. Görsel arayüz üzerinden daha kullanışlı olduğuna inanıyorum.

.NET Upgrade Assistant - Visual Studio Marketplace linki için tıklayın.

Desteklenen Proje Tipleri

    Asp.Net Web App - Web API, Class library, Console, WPF, WinForms

Desteklenen Diller

    C#, Visual Basic

Visual Studio üzerinden kullanmak için; 

    Menü -> Extensions(Uzantılar) -> Manage Extension (Uzantıları Yönet) adımları ile aşağıdaki pencere açılır.

Manage Extensions

Online indirileceği için Online -> Visual Studio Marketplace sekmelerinden ".NET Upgrade Assistant" uzantısı bulunur ve Download butonuna tıklanır. Yüklemenin başlaması için Visual Studio pencereleri kapatılmalıdır.
Modify butonuna tıklanarak uzantının kurulumu tamamlanacaktır.

Analiz için Yardımcı

Kurulum tamamlandı ve işlem yapmak için sabırsızlanıyor musunuz? Direkt yükseltmeden önce yapılabilecek potansiyel işlemler için analiz yapmak isteyebilirsiniz. 

Ölçmeden ne kadar efor çıkacağını öngöremezsiniz. Modernizasyon işlemi öncesi projenin analizini yapmak istersek projedeki Solution kısmına sağ tıklayarak Upgrade sekmesi seçilir.


Açılan pencereden New Report'a tıklayarak analiz başlatılacaktır.

Açılan ekrandan analiz edilmesi istenen projeler seçilir.

Proje .NET 5 sürümünde olduğundan dolayı bir sonraki versiyonlarından seçilebilecek versiyonların listesi görünmektedir. Bu versiyonların en son destek tarihleri, sizin hangi versiyonu seçmeniz gerektiği yönünde tercihinizi etkileyebilir. 

  • LTS - Long Term Support
  • STS - Standart Term Support

Bu örnekte .Net 8.0 seçilmiştir. Next butonuna tıklanır.


Analiz ayarlarından Kaynak kod ve config ayarları ile bağımlılıkların analiz edilmesi için iki seçenek de seçildikten sonra Analiz butonuna tıklanır.


Analiz sonucunda Dashboard sekmesinde grafiksel sonuçlar görüntülenecektir. Yükseltilme işleminin zorunlu, opsiyonel veya bilgi içeren adetler çıkmaktadır. 


Aggregate issues ile maddeleri problem türüne göre gruplar. Görselde, proje mevcut versiyon olan net5.0'dan net8.0'a yükseltilmesi gerektiğinden bahsediyor.



Analiz aşamasında projelerde yükseltme işlemi yapılmaz. Yükseltme işlemi için potansiyel maliyetler ve işleri barındıran rapor oluşturur. 

Yükseltme için Yardımcı

Analiz aşaması bittikten sonra projenin otomatik olarak yükseltilmeye başlayalım. Yükseltilecek projeye sağ tıklayarak Upgrade sekmesi seçilir.


Başlamadan önce eğer versiyon kontrol sistemi ile çalışmıyorsanız, projenizin yedeğini almanızda fayda var.

Yükseltme tipleri, proje tiplerine göre farklılaşabilmekte olup aşağıdaki gibidir.
  • In-place Project Upgrade: Kopya oluşturmadan mevcut proje üzerinde gerekli değişiklikler yapılarak yükseltme işlemi gerçekleşir.
  • Side-by-side Project Upgrade: Projenizi kopyalar ve kopyayı yükselterek özgün projenizi tek başına bırakır. 
  • Side-by-side Incremental Project Upgrade: Web uygulamaları için iyi bir seçimdir. (ASP.NET'den ASP.NET Core'a yükseltmek) Parça parça yükseltilmesini sağlar. Yükseltme işlemi sırasında biraz elle yeniden kod düzenlemesi gerekir. Var olan uygulamanın yanına seçilen sürümde bir uygulama oluşturur. Yeni uygulama üzerinden eski sürümdeki uygulamaya yönlendirme yapılır.
Yükseltme tipleri

Proje için yükseltme seçeneğinde "In-place project upgrade" ile dönüştürme  işlemi, proje üzerinde anlık gerçekleştirilecektir.



Yükseltmek istenen versiyon .NET 8 seçilir. Yükseltme işlemi yaparken bileşen seçimi yapılabilir. Hangi kısımlarda yükseltme için değişiklik yapılacaksa, o bileşen seçili kalmalıdır.


Proje yükseltme işlemi tamamlandı. Yükseltme sonuçları için aşağıdaki durumlar söz konusudur.
  • İçi dolu yeşil renk: Yükseltme işlemi başarılı oldu.
  • İçi boş yeşil renk: Yükseltme başarılı fakat doğrudan bir işlem yapılmamıştır. Doğrudan dönüşümden etkilenme durumuna göre değişmektedir.
  • Sarı uyarı işareti: Yapıt yükseltildi, incelenmesi gereken uyarı mevcuttur.
  • Kırmızı: Yükseltme işlemi başarısız oldu.
Yükseltme sonuçları

Benzer işlemler, solution altındaki bütün projeler için uygulanabilir.

Farklı bir proje tipi için, web uygulamalarının sürüm yükseltilmesini ele alacağım. 


Asp.NET MVC projesini NET Core sürümüne yükseltmek için "Side-by-side incremental" yükseltme tipi, daha kullanışlıdır. Mevcut uygulama devam ederken yeni proje üzerinde gerekli geliştirmeler yapılır.


Mevcut projenin yanında .NET Core veya NET sürümü ile yeni bir proje oluşturulması için New Project seçilir.


net8.0'a yükseltilmesi için aşağıdaki gibi seçim yapılır.


Oluşturulacak yeni proje için isimlendirme ve template seçimi yapılır. Asp.Net web uygulamasını .NET Core desteği verilebilmesi için Asp.NET Core MVC seçilmiştir. 


Değişiklik özetinde; hem mevcut uygulama hem de yeni uygulama aynı solution altında barınmaktadır. İki proje de "Set as Startup Project" başlangıç projesi olarak ayarlıdır.


.NET Core web projesine YARP - Proxy paketi dahil edilmiştir. Sebebi .NET Core projesi ayağa kaldırılırken aynı zamanda mevcut proje de ayağa kaldırılacak ve mevcut projeye de yönlendirme yapılabilmesini sağlar.


Bu görsel, reverse proxy yardımıyla ile yeni uygulamanın portu 7091 üzerinden mevcut uygulamanın portu olan 34932'ye yönlendirme yapılmıştır.

Konsoldaki işlem bilgi logları

.NET Core uygulaması oluştururken aşağıdaki görseldeki ayarlar otomatik olarak yapılmıştır.

launchSettings.json da proxy yapılacak yolun verilmesi

.NET Core uygulamasında Program.cs ile yönlendirme yapılması


Projelerin yükseltme işlemi bittikten sonra, kapsamlı bir test yapılmalıdır. 

Özetle; 

".NET Upgrade Assistant", .NET uygulamasını modernize hale getirmek için analiz ve yükseltme konularında yardımcı bir araçtır. Farklı proje tiplerinde destek vermektedir.

Yazının faydalı olmasını umarak çalışmalarınızda kolaylıklar diliyorum :)

Kaynaklar


Yorumlar