Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, kodunuzu .NET Framework'ten .NET'e (eski adıyla .NET Core) aktarırken dikkate almanız gerekenler hakkında genel bir bakış sağlanır. .NET Framework'ten .NET'e taşıma işlemi birçok proje için oldukça basittir. Projelerinizin karmaşıklığı, proje dosyalarının ilk yükseltildikten sonra ne kadar çalışma yapmanız gerektiğini belirler.
Kitaplıklar, konsol uygulamaları ve masaüstü uygulamaları gibi uygulama modelinin .NET'te kullanılabildiği projeler genellikle çok az değişiklik gerektirir. ASP.NET'dan ASP.NET Core'a geçmek gibi yeni bir uygulama modeli gerektiren projeler daha fazla çalışma gerektirir. Eski uygulama modeline ait birçok desen, dönüştürme sırasında kullanılabilecek eşdeğerlere sahiptir.
Windows masaüstü teknolojileri
.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'te kullanılabilir, ancak yalnızca Windows teknolojileri olarak kalır.
Bir Windows Forms veya WPF uygulamasını yükseltmeden önce aşağıdaki bağımlılıkları göz önünde bulundurun:
- .NET için proje dosyaları .NET Framework'ten 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'te kullanılabilir durumda kalmış olabilir.
- Projeniz artık .NET'te bulunmayan bir teknoloji kullanıyor.
.NET, Windows Forms ve WPF'nin açık kaynak sürümlerini kullanır ve .NET Framework üzerinde geliştirmeler içerir.
Masaüstü uygulamanızı .NET'e yükseltme öğreticileri için aşağıdaki makalelerden birine bakın:
- WPF masaüstü uygulamasını .NET'e yükseltme
- .NET Framework Windows Forms uygulamalarını .NET'e yükseltme
Windows'a özgü API'ler
Uygulamalar yine de .NET tarafından desteklenen platformlarda yerel kitaplıkları çağırabilir. Bu teknoloji Windows ile sınırlı değildir. Ancak, başvurdığınız kitaplık user32.dllveya kernel32.dll gibi Windows'a ö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'ten .NET'e geçirirken, uygulamanız büyük olasılıkla .NET Framework tarafından sağlanan bir kitaplık kullandı. .NET Framework'te kullanılabilen birçok API, Windows Kayıt Defteri veya GDI+ çizim modeli gibi Windows'a özgü teknolojiye bağlı olduğundan .NET'e geçirilmemişti.
Windows Uyumluluk Paketi .NET'e .NET Framework API yüzeyinin büyük bir bölümünü sağlar ve Microsoft.Windows.Compatibility NuGet paketi aracılığıyla sağlanır.
Daha fazla bilgi için bkz. Kodu .NET'e taşımak için Windows Uyumluluk Paketi'ni kullanma.
.NET Framework uyumluluk modu
.NET Framework uyumluluk modu .NET Standard 2.0'da kullanıma sunulmuştur. Uyumluluk modu, .NET Standard ve .NET projelerinin projenin hedef çerçevesi için derlenmiş gibi .NET Framework kitaplıklarına başvurmasını sağlar. Ancak, bazı .NET uygulamaları, diğerlerinden daha geniş bir .NET Framework parçasını destekleyebilir çünkü. Örneğin. .NET Core 3.0, .NET Framework uyumluluk modunu Windows Forms ve WPF'ye genişletir. .NET Framework kitaplıklarına başvuruda bulunmak, kitaplığın WPF API'lerini kullanması gibi tüm projelerde çalışmaz, ancak birçok taşıma senaryosunun engelini kaldırır. Daha fazla bilgi için bkz. .NET Framework'ten .NET'e bağlantı noktası koduna bağımlılıklarınızı analiz etme.
.NET Framework kitaplıklarına başvurmak, hangi .NET Framework API'lerinin kullanıldığına ve bu API'lerin projenin hedef çerçevesi tarafından desteklenip desteklenmediğine bağlı olduğundan her durumda çalışmaz. Ayrıca, bazı .NET Framework API'leri yalnızca Windows üzerinde çalışır. .NET Framework uyumluluk modu birçok taşıma senaryosunun engellemesini kaldırır, ancak çalışma zamanında da çalıştığından emin olmak için projelerinizi test etmelisiniz. Daha fazla bilgi için bkz. .NET Framework'ten bağlantı noktası koduna bağımlılıklarınızı analiz etme.
SDK stili projelerde çerçeve değişikliklerini hedefleme
Daha önce belirtildiği gibi, .NET için proje dosyaları SDK stili proje biçimi olarak bilinen .NET Framework'ten farklı bir biçim kullanır. .NET Framework'ten .NET'e geçmeseniz bile proje dosyasını en son biçime yükseltmeniz gerekir. SDK stilindeki projelerde hedef çerçeve belirtme yöntemi farklıdır. .NET Framework'te özelliği, <TargetFrameworkVersion> .NET Framework sürümünü belirten bir takma adla kullanılır. Örneğin, .NET Framework 4.7.2 aşağıdaki kod parçacığına benzer:
<PropertyGroup>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
</PropertyGroup>
SDK stilindeki bir proje, hedef çerçeve <TargetFramework> olan özelliğini tanımlamak için farklı bir özellik kullanır. .NET Framework hedeflenirken, takma ad ile başlar net ve herhangi bir nokta olmadan .NET Framework sürümüyle biter. Örneğin, .NET Framework 4.7.2'yi hedeflemek için bilinen ad şöyledir net472:
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
Tüm hedef takma adlarının listesi için bkz. SDK stili projelerde hedef çerçeveler.
Kullanılamayan teknolojiler
.NET Framework'te .NET'te mevcut olmayan birkaç teknoloji vardır:
-
Diğer uygulama etki alanları oluşturma desteklenmez. Kod yalıtımı için alternatif olarak ayrı işlemler veya kapsayıcılar kullanın.
-
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, uzaktan iletişime alternatif olarak System.IO.Pipes sınıfı veya MemoryMappedFile sınıfı gibi 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.
Uzaktan iletişim desteklenmediğinden, temsilci nesnelerine yapılan
BeginInvoke()veEndInvoke()çağrıları,PlatformNotSupportedExceptionhatası fırlatır. -
CAS, .NET Framework tarafından desteklenen ancak .NET Framework 4.0'da kullanım dışı bırakılan bir korumalı alan tekniğiydi. Bunun yerini Güvenlik Saydamlığı aldı 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, .NET Framework uygulamaları için güvenlik saydamlığı sandbox tekniği artık ö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.
-
System.EnterpriseServices (COM+) .NET'te desteklenmez.
Windows Workflow Foundation (WF)
WF , .NET'te desteklenmez. Alternatif olarak bkz . CoreWF.
Desteklenmeyen bu teknolojiler hakkında daha fazla bilgi için bkz . .NET 6+ üzerinde kullanılamayan .NET Framework teknolojileri.
Platformlar arası
.NET (eski adıyla .NET Core), platformlar arası olacak şekilde tasarlanmıştır. Kodunuz Windows'a özgü teknolojilere bağımlı değilse macOS, Linux ve Android gibi diğer platformlarda çalıştırılabilir. Bu tür kodlar aşağıdaki gibi proje türlerini içerir:
- Libraries
- Konsol tabanlı araçlar
- Automation
- ASP.NET siteleri
.NET Framework yalnızca Windows bileşenidir. Kodunuz Windows Forms ve WPF gibi Windows'a özgü teknolojiler veya API'ler 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 yaparken bunu göz önünde bulundurmak ve 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 ardındaki motivasyon.NET ekosisteminde daha fazla tekdüzelik oluşturmaktı. .NET 5'den başlayarak, tekdüzen 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'ün desteklendiği son sürümdü.
Göçe yardımcı olacak araçlar
Bir uygulamayı .NET Framework'ten .NET'e el ile taşıma yerine, yükseltmenin 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. Araçlar bu yolculukta yardımcı olabilir.
Uygulamanızı taşımanıza yardımcı olması için bir araç kullansanız bile, bu makaledeki Taşıma sırasında dikkat edilmesi gerekenler bölümünü gözden geçirmelisiniz.
GitHub Copilot uygulama modernleştirme yardımcısı
GitHub Copilot uygulama modernleştirmesi , projeleri daha yeni .NET sürümlerine planlamanıza ve yükseltmenize, Azure'a geçmenize, bağımlılıkları güncelleştirmenize ve kod düzeltmeleri uygulamanıza yardımcı olan bir GitHub Copilot sohbet yardımcısıdır. Azure geçişi.NET için uygulama ve kod değerlendirmesiyle desteklenir
Bu sohbet yardımcısı aşağıdaki yükseltme yollarını destekler:
- Projeleri eski .NET sürümlerinden en son sürümlere yükseltin.
- Projeleri .NET Framework'ten .NET'in en son sürümüne yükseltin.
- Kod tabanınızı yeni özelliklerle modernleştirin.
- Bileşenleri ve hizmetleri Azure'a geçirme.
Ayrıca aşağıdakiler gibi çeşitli proje türlerinde de çalışır:
- MVC, Razor Pages, Web API gibi ASP.NET ve ilgili teknolojiler
- Blazor
- Azure Functions
- Windows Presentation Foundation
- Windows Forms
- Sınıf kitaplıkları
- Konsol uygulamaları
Ne zaman kullanılır:
.NET Framework projelerini ve bağımlılıklarını modern .NET'e yükseltmek için yapay zeka destekli, uçtan uca bir deneyim istediğinizde GitHub Copilot uygulama modernleştirmesini kullanın. Bu, değerlendirme, planlama, düzeltme ve uygulamaları Azure'a geçirme yönergelerini kapsar.
.NET için uygulama ve kod değerlendirmesi
.NET için Azure Geçişi uygulama ve kod değerlendirmesi , bulut dağıtımlarını planlama önerilerinin yanı sıra kod ve uygulama analizi sağlar. Kaynak kodunuz için geliştirici odaklı bir değerlendirme sunarak iş açısından kritik çözümleri bulutta güvenle çalıştırmanıza yardımcı olur. Araç, endüstrinin en iyi yöntemlerini izleyerek Azure için kod ve yapılandırmaları iyileştirmeye yönelik öneriler ve örnekler de sağlar.
Bu araç, .NET deneyimi için GitHub Copilot uygulama modernizasyonu tarafından da kullanılır.
Ne zaman kullanılır:
Mevcut bir kod tabanını Azure'a geçirmeye yönelik değerlendirme ve öneriler için .NET araç takımı için Azure Geçişi uygulamasını ve kod değerlendirmesini kullanın. Azure Geçişi uygulaması ve kod değerlendirmesi temelde .NET deneyimi için GitHub Copilot uygulama modernleştirmesinin bir alt kümesidir.
.NET Yükseltme Yardımcısı
.NET Yükseltme Yardımcısı, farklı türlerde .NET Framework uygulamaları üzerinde çalıştırılabilir bir komut satırı aracıdır. .NET Framework uygulamalarını .NET'e yükseltmeye yardımcı olmak için tasarlanmıştır. Aracı çalıştırdıktan sonra, çoğu durumda uygulama yükseltmeyi tamamlamak için daha fazla çaba gerektirir. Araç, yükseltmeyi tamamlamaya yardımcı olabilecek çözümleyicilerin yüklenmesini içerir. Bu araç aşağıdaki .NET Framework uygulamaları türlerinde çalışır:
- Windows Forms
- WPF (Windows Presentation Foundation)
- ASP.NET MVC
- Console
- Sınıf kitaplıkları
Bu araç, bu makalede listelenen try-convert gibi diğer araçları kullanır ve yükseltme işlemine yol gösterir. Araç hakkında daha fazla bilgi için bkz. .NET Yükseltme Yardımcısı'na genel bakış.
Ne zaman kullanılır:
GitHub Copilot uygulama modernleştirmesi gibi yapay zeka destekli bir çözüm kullanılamadığında kullanın.
try-convert
Araç try-convert , masaüstü uygulamalarını .NET'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.
Daha fazla bilgi için github deposunatry-convert bakın.
Platform uyumluluk çözümleyicisi
Platform uyumluluğu çözümleyicisi, çalışma zamanında bir hata atan bir API kullanıp kullanmadığınızı analiz ederPlatformNotSupportedException. .NET Framework 4.7.2 veya sonraki bir sürümden geçiyorsanız bu API'lerden birini bulma olasılığı düşük olsa da, bunu denetlemek iyi bir işlemdir. .NET'te özel durumlar oluşturan API'ler hakkında daha fazla bilgi için bkz. .NET Core'da her zaman özel durumlar oluşturan API'ler.
Daha fazla bilgi için bkz. Platform uyumluluğu çözümleyicisi.
Taşıma sırasında dikkat edilmesi gerekenler
Uygulamanızı .NET'e taşıma sırasında aşağıdaki önerileri sırasıyla göz önünde bulundurun:
✔️ Projelerinizi yükseltmek için GitHub Copilot uygulama modernleştirmesini kullanmayı göz önünde bulundurun. GitHub Copilot, taşıma sırasındaki uyumsuzlukları belirleme ve düzeltme konusunda güçlüdür. Bu makalede ayrıntılı olarak sunulan el ile gerçekleştirilen adımların çoğunu otomatikleştirir ve yükseltme yolunuz devam etmesi için harika bir başlangıç noktası sağlar.
✔️ Öncelikle bağımlılıklarınızı incelemeyi göz önünde bulundurun. Bağımlılıklarınız .NET, .NET Standard veya .NET Core'ı hedeflemelidir.
✔️ NuGet packages.config dosyasından proje dosyasındaki PackageReference ayarlara yükseltme yapınız. Dosyayı dönüştürmek için Visual Studio'yu package.configkullanın.
✔️ Uygulamanızı henüz taşımamış olsanız bile en son proje dosyası biçimine yükseltmeyi göz önünde bulundurun. .NET Framework projeleri eski bir proje biçimi kullanır. SDK stili projeler olarak bilinen en son proje biçimi .NET Core ve ötesi için oluşturulmuş olsa da, biçim .NET Framework ile de çalışır. Proje dosyanızın en son biçimde olması, gelecekte uygulamanızı taşımanız için iyi bir temel sağlar.
✔️ .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.
✔️ Uzun vadeli bir destek (LTS) sürümü olan .NET 8'i hedeflemeyi GÖZ ÖNÜNDE BULUNDURUN.
✔️ Windows Forms ve WPF projeleri için .NET 8+ hedefleyin. .NET 8 ve sonraki sürümleri, Masaüstü uygulamaları için birçok geliştirme içerir.
✔️ .NET Framework projeleriyle de kullanılabilecek bir kitaplığı yükseltiyorsanız .NET Standard 2.0'ın hedeflendiğini düşünebilirsiniz. Ayrıca kitaplığınızı hem .NET Framework hem de .NET Standard'ı hedefleyerek birden fazla hedef belirleyebilirsiniz.
Geçiş sonrasında eksik API'ler ile ilgili hatalar alırsanız Microsoft.Windows.Compatibility NuGet paketine referans ekleyin. .NET Framework API yüzeyinin büyük bir bölümü NuGet paketi aracılığıyla .NET tarafından kullanılabilir.