Bu makalede kodunuzu .NET Framework'den .NET'e (eski adıyla .NET Core) aktarırken dikkate almanız gerekenlere genel bir bakış sağlanır. Birçok proje için .NET Framework'den .NET'e taşıma işlemi oldukça basittir. Projelerinizin karmaşıklığı, proje dosyalarının ilk geçişinin ardından ne kadar çalışma yapacağınızı belirler.
Uygulama modelinin .NET'te (kitaplıklar, konsol uygulamaları ve masaüstü uygulamaları gibi) kullanılabildiği projeler genellikle çok az değişiklik gerektirir. ASP.NET'dan ASP.NET Core geçmek gibi yeni bir uygulama modeli gerektiren projeler daha fazla çalışma gerektirir. Eski uygulama modelindeki birçok desen, dönüştürme sırasında kullanılabilecek eşdeğerlere sahiptir.
masaüstü teknolojilerini Windows
.NET Framework için oluşturulan birçok uygulama Windows Forms veya Windows Presentation Foundation (WPF) gibi bir masaüstü teknolojisi kullanır. Hem Windows Forms hem de WPF .NET'e taşınabilir, ancak bunlar yalnızca Windows teknolojiler olarak kalır.
bir Windows Forms veya WPF uygulamasını geçirmeden önce aşağıdaki bağımlılıkları göz önünde bulundurun:
.NET için Project dosyaları .NET Framework farklı bir biçim kullanır.
Projeniz .NET'te bulunmayan bir API kullanabilir.
Üçüncü taraf denetimleri ve kitaplıkları .NET'e taşımamış ve yalnızca .NET Framework için kullanılabilir durumda kalabilir.
Uygulamalar yine de .NET tarafından desteklenen platformlarda yerel kitaplıkları p/invoke edebilir. Bu teknoloji Windows ile sınırlı değildir. Ancak, başvuruda bulunmakta olduğunuz kitaplıkuser32.dllveya kernel32.dll gibi Windows özgüyse kod yalnızca Windows üzerinde çalışır. Uygulamanızın üzerinde çalışmasını istediğiniz her platform için platforma özgü sürümleri bulmanız veya kodunuzu tüm platformlarda çalışacak kadar genel hale getirmeniz gerekir.
Bir uygulamayı .NET Framework'den .NET'e geçirirken, uygulamanız büyük olasılıkla .NET Framework dağıtılmış olarak sağlanan bir kitaplık kullandı. .NET Framework'de kullanılabilen birçok API, Windows Kayıt Defteri veya GDI+ çizim modeli gibi Windows özgü teknolojiye bağlı olduğundan .NET'e aktarılmamıştır.
.NET Framework uyumluluk modu .NET Standard 2.0'da kullanıma sunulmuştur. Bu uyumluluk modu, .NET Standard ve .NET 5+ (ve .NET Core 3.1) projelerinin yalnızca Windows'da .NET Framework kitaplıklara başvurmasını sağlar. Kitaplıkta Windows Presentation Foundation (WPF) API'leri kullanılıyorsa, ancak birçok taşıma senaryosunun engelini kaldırması gibi .NET Framework kitaplıklara başvurmak tüm projelerde çalışmaz. Daha fazla bilgi için bkz. .NET Framework 'den .NET'e bağlantı noktası koduna bağımlılıklarınızı analiz etme.
Kullanılamayan teknolojiler
.NET Framework'de .NET'te mevcut olmayan birkaç teknoloji vardır:
Uzaktan iletişim, artık desteklenmeyen uygulama etki alanları arasında iletişim kurmak için kullanılır. İşlemler arasında basit iletişim için, sınıf veya MemoryMappedFile sınıf gibi uzaktan iletişime alternatif olarak System.IO.Pipes işlemler arası iletişim (IPC) mekanizmalarını göz önünde bulundurun. Daha karmaşık senaryolar için StreamJsonRpc veya ASP.NET Core (gRPC veya RESTful Web API hizmetlerini kullanarak) gibi çerçeveleri göz önünde bulundurun.
CAS, .NET Framework tarafından desteklenen ancak .NET Framework 4.0'da kullanım dışı bırakılan bir korumalı alan tekniğiydi. Güvenlik Saydamlığı ile değiştirildi ve .NET'te desteklenmiyor. Bunun yerine sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi işletim sistemi tarafından sağlanan güvenlik sınırlarını kullanın.
CAS'ye benzer şekilde, bu korumalı alan tekniği artık .NET Framework uygulamalar için önerilmez ve .NET'te desteklenmez. Bunun yerine sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi işletim sistemi tarafından sağlanan güvenlik sınırlarını kullanın.
.NET (eski adıyla .NET Core), platformlar arası olacak şekilde tasarlanmıştır. Kodunuz Windows özgü teknolojilere bağımlı değilse macOS, Linux ve Android gibi diğer platformlarda çalıştırılabilir. Bu, aşağıdaki gibi proje türlerini içerir:
Kitaplıklar
Konsol tabanlı araçlar
Otomasyon
siteleri ASP.NET
.NET Framework yalnızca Windows bir bileşendir. Kodunuz Windows Forms ve Windows Presentation Foundation (WPF) gibi Windows özgü teknolojileri veya API'leri kullandığında, kod .NET üzerinde çalışmaya devam edebilir ancak diğer işletim sistemlerinde çalışmaz.
Kitaplığınız veya konsol tabanlı uygulamanız çok fazla değişiklik yapmadan platformlar arası kullanılabilir. .NET'e taşıma sırasında bunu dikkate alıp uygulamanızı diğer platformlarda test etmek isteyebilirsiniz.
.NET Standard'ın geleceği
.NET Standard, birden çok .NET uygulamasında kullanılabilen .NET API'lerinin resmi bir belirtimidir. .NET Standard'ın arkasındaki motivasyon, .NET ekosisteminde daha fazla tekdüzenlik sağlamaktı. .NET 5'den başlayarak, tekdüzenlik oluşturma konusunda farklı bir yaklaşım benimsenmiştir ve bu yeni yaklaşım birçok senaryoda .NET Standard gereksinimini ortadan kaldırmıştır. Daha fazla bilgi için bkz. .NET 5 ve .NET Standard.
.NET Standard 2.0, .NET Framework destekleyen son sürümdü.
Taşımaya yardımcı olacak araçlar
Bir uygulamayı .NET Framework'den .NET'e el ile taşıma yerine, geçişin bazı yönlerini otomatikleştirmeye yardımcı olmak için farklı araçlar kullanabilirsiniz. Karmaşık bir projeyi taşıma, kendi içinde karmaşık bir işlemdir. Bu araçlar bu yolculukta yardımcı olabilir.
.NET Yükseltme Yardımcısı, farklı türlerde .NET Framework uygulamalarında çalıştırılabilir bir komut satırı aracıdır. .NET Framework uygulamalarını .NET 5'e yükseltmeye yardımcı olmak için tasarlanmıştır. Aracı çalıştırdıktan sonra, çoğu durumda uygulama geçişi tamamlamak için daha fazla çaba gerektirir. Araç, geçişi tamamlamaya yardımcı olabilecek çözümleyicilerin yüklenmesini içerir. Bu araç aşağıdaki .NET Framework uygulama türlerinde çalışır:
Windows Forms
WPF
ASP.NET MVC
Konsol
Sınıf kitaplıkları
Bu araç, bu makalede listelenen diğer araçları kullanır ve geçiş işlemine yol gösterir. Araç hakkında daha fazla bilgi için bkz. .NET Yükseltme Yardımcısı'na genel bakış.
try-convert
Dönüştürmeyi deneme aracı, masaüstü uygulamalarını .NET 5'e taşıma dahil olmak üzere bir projeyi veya çözümün tamamını .NET SDK'sına dönüştürebilen bir .NET genel aracıdır. Ancak projenizde özel görevler, hedefler veya içeri aktarmalar gibi karmaşık bir derleme işlemi varsa bu araç önerilmez.
.NET Taşınabilirlik Çözümleyicisi, derlemeleri analiz eden ve uygulamaların veya kitaplıkların belirtilen hedeflenen .NET platformlarınızda taşınabilir olması için eksik olan .NET API'leri hakkında ayrıntılı bir rapor sağlayan bir araçtır.
.NET Taşınabilirlik Çözümleyicisi'ni Visual Studio kullanmak için uzantıyı marketten yükleyin.
Uygulamanızı .NET'e taşıma sırasında aşağıdaki önerileri sırasıyla göz önünde bulundurun.
✔️ Projelerinizi geçirmek için .NET Yükseltme Yardımcısı'nı kullanmayı GÖZ ÖNÜNDE BULUNDURUN. Bu araç önizleme aşamasında olsa da, bu makalede ayrıntılı olarak sunulan el ile gerçekleştirilen adımların çoğunu otomatikleştirir ve geçiş yolunuz devam etmesi için size harika bir başlangıç noktası sağlar.
✔️ Önce bağımlılıklarınızı incelemeyi GÖZ ÖNÜNDE BULUNDURUN. Bağımlılıklarınız .NET 5, .NET Standard veya .NET Core'u hedeflemelidir.
✔️ Uygulamanızı henüz taşımasanız bile en son proje dosyası biçimine yükseltmeyi GÖZ ÖNÜNDE BULUNDURUN. .NET Framework projeler eski bir proje biçimi kullanır. SDK stili projeler olarak bilinen en son proje biçimi .NET Core ve ötesinde oluşturulmuş olsa da, .NET Framework ile çalışır. Proje dosyanızın en son biçimde olması, gelecekte uygulamanızı taşımanız için iyi bir temel sağlar.
✔️ DO .NET Framework projenizi en az .NET Framework 4.7.2'ye yeniden hedefleyin. Bu, .NET Standard'ın mevcut API'leri desteklemediği durumlar için en son API alternatiflerinin kullanılabilirliğini sağlar.
✔️ .NET Core 3.1 yerine .NET 5'i hedeflemeYI GÖZ ÖNÜNDE BULUNDURUN. .NET Core 3.1 uzun vadeli destek (LTS) altında olsa da, .NET 5 en son sürümdür ve .NET 6 yayınlandığında LTS olacaktır.
✔️ Windows Forms ve WPF projeleri için .NET 5'i HEDEFLE. .NET 5, Masaüstü uygulamalarına yönelik birçok geliştirme içerir.
✔️ .NET Framework projeleriyle de kullanılabilecek bir kitaplığı geçiriyorsanız .NET Standard 2.0'ı hedeflemeyi GÖZ ÖNÜNDE BULUNDURUN. Ayrıca hem .NET Framework hem de .NET Standard'ı hedefleyerek kitaplığınızı birden çok hedefleyebilirsiniz.
✔️ MICROSOFT.Windows başvurusu ekleme. Geçiş sonrasında eksik API'ler ile ilgili hatalar alırsanız uyumluluk NuGet paketi. .NET Framework API yüzeyinin büyük bir bölümü NuGet paketi aracılığıyla .NET tarafından kullanılabilir.
Bu modülde, Yükseltme Yardımcısı'nı kullanarak bir ASP.NET Framework uygulamasını ne zaman, neden ve nasıl ASP.NET Core'a modernleştirmeyi öğreneceksiniz.