Aracılığıyla paylaş


Yeni bir .NET sürümüne yükseltme

Her yıl yeni .NET sürümleri yayımlanmaktadır. Birçok geliştirici, yeni sürüm kullanılabilir olduğunda yükseltme işlemini başlatırken, diğerleri kullandıkları sürümün artık desteklenmemesini bekler. Yükseltme işleminin dikkate alınması gereken birden çok yönü vardır.

Yeni bir .NET sürümüne yükseltmenin yaygın nedenleri:

  • Şu anda kullanılan .NET sürümü artık desteklenmiyor
  • Yeni sürüm yeni bir işletim sistemini destekler
  • Yeni sürüm önemli bir API, performans veya güvenlik özelliğine sahiptir

Geliştirme ortamını yükseltme

Yeni bir .NET sürümüne yükseltmek için yüklenecek birincil bileşen .NET SDK'dır. Güncelleştirilmiş bir .NET CLI, derleme sistemi ve çalışma zamanı sürümü içerir.

.NET web sitesi, desteklenen herhangi bir işletim sistemi ve mimaride indirip kullanabileceğiniz yükleyiciler ve arşivler sunar.

Bazı işletim sistemlerinde, tercih edebileceğiniz yeni bir .NET sürümü yüklemek için kullanabileceğiniz bir paket yöneticisi vardır.

Visual Studio yeni .NET SDK sürümlerini otomatik olarak yükler. Visual Studio kullanıcıları için daha yeni bir Visual Studio sürümüne yükseltmek yeterlidir.

Kaynak kodunu yükseltme

Bir uygulamayı yükseltmek için gereken tek değişiklik, proje dosyasındaki özelliği daha yeni .NET sürümüne güncelleştirmektir TargetFramework .

Bu işlemi gerçekleştirmek için aşağıdakileri yapın:

  • Proje dosyasını ( *.csproj, *.vbprojveya *.fsproj dosyası) açın.
  • <TargetFramework> özellik değerini olarak değiştirin, örneğin, net6.0 olarak net8.0değiştirin.
  • Aynı desen, kullanılıyorsa özellik için <TargetFrameworks> de geçerlidir.

Tavsiye

GitHub Copilot uygulama modernleştirme - yükseltme özelliği bu değişiklikleri otomatik olarak yapabilir.

Sonraki adım, projeyi (veya çözümü) yeni SDK ile oluşturmaktır. Ek değişiklikler gerekirse SDK size yol gösteren uyarılar ve hatalar sağlar.

yeni SDK sürümüyle iş yüklerini geri yüklemek için komutunu çalıştırmanız dotnet workload restore gerekebilir.

Diğer kaynaklar:

Sürüm sabitleme

.NET SDK, Visual Studio veya diğer bileşenler gibi geliştirme araçlarını yükselttiğinizde, derleme işleminizi etkileyen yeni davranışlar, çözümleyici uyarıları veya hataya neden olan değişikliklerle karşılaşabilirsiniz. Bir sürüme sabitleyerek, projelerinizde belirli bileşenlerin ne zaman güncelleştirildiği üzerinde denetim sahibi olurken geliştirme ortamınızı yükseltebilirsiniz.

Sürüm sabitleme çeşitli avantajlar sağlar:

  • Tahmin edilebilir derlemeler: Farklı makineler ve CI/CD ortamlarında tutarlı derleme sonuçları sağlar.
  • Aşamalı benimseme: Yeni özellikleri tek seferde değil artımlı olarak benimsemenizi sağlar.
  • Beklenmeyen değişikliklerden kaçının: Yeni çözümleyici kurallarının, SDK davranışlarının veya paket sürümlerinin derleme hatalarına neden olmasını önler.
  • Ekip koordinasyonu: Araçlar güncelleştirildiğinde ekiplerin tek tek değil, planlı bir zamanda birlikte yükseltmesini sağlar.
  • Hata ayıklama ve sorun giderme: Hangi sürümlerin değiştirildiğini denetlediğinizde sorunları yalıtmanızı kolaylaştırır.

Aşağıdaki bölümlerde, .NET projelerinizdeki farklı bileşenlerin sürümlerini denetlemeye yönelik çeşitli mekanizmalar açıklanmaktadır:

global.json ile SDK sürümünü denetleme

global.json dosyası kullanarak bir proje veya çözüm için .NET SDK sürümünü sabitleyebilirsiniz. Bu dosya, .NET CLI komutlarını çalıştırırken hangi SDK sürümünün kullanılacağını belirtir ve projenizin hedeflediği çalışma zamanı sürümünden bağımsızdır.

Çözüm kök dizininizde birglobal.json dosyası oluşturun:

dotnet new globaljson --sdk-version 9.0.100 --roll-forward latestFeature

Bu komut, SDK'yi 9.0.100 sürümüne veya 9.0 ana sürümündeki herhangi bir sonraki düzeltme eki veya özellik bandına sabitleyen aşağıdakiglobal.json dosyasını oluşturur:

{
  "sdk": {
    "version": "9.0.100",
    "rollForward": "latestFeature"
  }
}

İlke, rollForward tam sürüm kullanılamadığında SDK sürümünün nasıl seçildiğini denetler. Bu yapılandırma, Visual Studio'yu yükselttiğinizde veya yeni bir SDK yüklediğinizde, siz global.json dosyasını açıkça güncelleştirene kadar projenizin SDK 9.0.x kullanmaya devam etmesini sağlar.

Daha fazla bilgi için bkz. global.json genel bakış.

Çözümleyici davranışını denetleme

Kod çözümleyicileri yeni uyarılar verebilir veya sürümler arasında davranış değiştirebilir. özelliğini kullanarak AnalysisLeveltutarlı derlemeleri korumak için çözümleyici sürümlerini denetleyebilirsiniz. Bu özellik, SDK'yı yükseltirken yeni kuralların kullanıma sunulmasını engelleyerek çözümleyici kurallarının belirli bir sürümünü kilitlemenize olanak tanır.

<PropertyGroup>
  <AnalysisLevel>9.0</AnalysisLevel>
</PropertyGroup>

olarak 9.0ayarlandığında, .NET 10 SDK kullanıyor olsanız bile yalnızca .NET 9 ile birlikte gelen çözümleyici kuralları etkinleştirilir. Bu, yeni .NET 10 çözümleyici kurallarının, çözmeye hazır olana kadar derlemenizi etkilemesini önler.

Daha fazla bilgi için bkz . AnalysisLevel.

NuGet paket sürümlerini denetleme

Paket sürümlerini projeler arasında tutarlı bir şekilde yöneterek beklenmeyen güncelleştirmeleri önleyebilir ve güvenilir derlemeleri koruyabilirsiniz.

Paket kilit dosyaları

Paket kilit dosyaları, paket geri yükleme işlemlerinin farklı ortamlarda tam olarak aynı paket sürümlerini kullanmasını sağlar. Kilit dosyası (packages.lock.json), tüm paketlerin ve bağımlılıklarının tam sürümlerini kaydeder.

Proje dosyanızda kilit dosyalarını etkinleştirin:

<PropertyGroup>
  <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>

Kilit dosyası güncel değilse derlemelerin başarısız olduğundan emin olmak için:

<PropertyGroup>
  <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
  <RestoreLockedMode>true</RestoreLockedMode>
</PropertyGroup>

Kilit dosyalarını etkinleştirdikten sonra dotnet restore dosyasını oluşturmak için komutunu çalıştırın. Bu dosyayı kaynak denetimine işleyin.

Merkezi paket yönetimi

Merkezi paket yönetimi (CPM), bir çözümdeki tüm projeler için paket sürümlerini tek bir konumda yönetmenizi sağlar. Bu yaklaşım, sürüm yönetimini basitleştirir ve projeler arasında tutarlılık sağlar.

Çözüm kökünüzde bir Directory.Packages.props dosyası oluşturun:

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>

  <ItemGroup>
    <PackageVersion Include="Azure.Identity" Version="1.17.0" />
    <PackageVersion Include="Microsoft.Extensions.AI" Version="9.10.1" />
  </ItemGroup>
</Project>

Proje dosyalarınızda, sürüm belirtmeden paketlere başvuruda bulunma:

<ItemGroup>
  <PackageReference Include="Azure.Identity" />
  <PackageReference Include="Microsoft.Extensions.AI" />
</ItemGroup>

Paket kaynağı eşlemesi

Paket kaynağı eşlemesi, güvenlik ve güvenilirliği artırarak belirli paketler için hangi NuGet akışlarının kullanıldığını denetlemenize olanak tanır.

nuget.config dosyanızda kaynak eşlemeyi yapılandırın:

<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="contoso" value="https://contoso.com/packages/" />
  </packageSources>

  <packageSourceMapping>
    <packageSource key="nuget.org">
      <package pattern="*" />
    </packageSource>
    <packageSource key="contoso">
      <package pattern="Contoso.*" />
    </packageSource>
  </packageSourceMapping>
</configuration>

Bu yapılandırma, Contoso. ile başlayan tüm paketlerin yalnızca contoso kaynağından geri yüklenmesini sağlarken, diğer paketler nuget.org kaynağından gelir.

Daha fazla bilgi için bkz. NuGet paketi geri yükleme.

MSBuild sürümünü denetleme

Visual Studio, birden çok sürümün yan yana yüklenmesini destekler. Örneğin, Visual Studio 2026 ve Visual Studio 2022'yi aynı makineye yükleyebilirsiniz. Her Visual Studio sürümü, karşılık gelen bir .NET SDK'sı içerir. Visual Studio'yu güncelleştirdiğinizde, eklenen SDK sürümü de güncelleştirilir. Ancak, eski SDK sürümlerini .NET indirme sayfasından ayrı olarak yükleyerek kullanmaya devam edebilirsiniz.

MSBuild sürümleri Visual Studio sürümlerine karşılık gelir. Örneğin, Visual Studio 2022 sürüm 17.8 MSBuild 17.8'i içerir. .NET SDK'sı MSBuild'i de içerir. kullanırken dotnet build, global.json tarafından belirtilen SDK ile birlikte gelen MSBuild sürümünü veya en son yüklenen SDK'yı kullanırsınız.

Belirli bir MSBuild sürümünü kullanmak için:

  • dotnet buildsabitlenmiş bir SDK sürümünü global.json içinde kullanın.
  • Bu Visual Studio sürümünün MSBuild'i için ortamı ayarlayan uygun Visual Studio Geliştirici Komut İstemini başlatın.
  • MsBuild'i belirli bir Visual Studio yüklemesinden doğrudan çağır (örneğin, "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe").

Daha fazla bilgi için bkz. .NET SDK, MSBuild ve Visual Studio sürüm oluşturma.

Sürekli tümleştirmeyi güncelleştirme (CI)

CI işlem hatları, proje dosyaları ve Dockerfiles ile benzer bir güncelleştirme işlemini izler. Genellikle, yalnızca sürüm değerlerini değiştirerek CI işlem hatlarını güncelleştirebilirsiniz.

Barındırma ortamını güncelleştirme

Uygulamaları barındırmak için kullanılan birçok desen vardır. Barındırma ortamı .NET çalışma zamanını içeriyorsa, .NET çalışma zamanının yeni sürümünün yüklenmesi gerekir. Linux'ta bağımlılıkların yüklenmesi gerekir, ancak bu bağımlılıklar genellikle .NET sürümleri arasında değişmez.

Kapsayıcılar için deyimlerin FROM yeni sürüm numaralarını içerecek şekilde değiştirilmesi gerekir.

Aşağıdaki Dockerfile örneğinde ASP.NET Core 9.0 görüntüsünün çekilmesi gösterilmektedir.

FROM mcr.microsoft.com/dotnet/aspnet:9.0

Azure Uygulaması Hizmeti gibi bir bulut hizmetinde yapılandırma değişikliği gerekir.

Ayrıca bakınız