Aracılığıyla paylaş


.NET uygulama yayımlamaya genel bakış

Bu makalede, .NET uygulaması yayımlamanın farklı yolları açıklanmaktadır. Yayımlama modlarını, yürütülebilir dosyaların ve platformlar arası ikili dosyaların nasıl üretildiğini ve her yaklaşımın dağıtım ve çalışma zamanı ortamları üzerindeki etkisini kapsar. .NET CLI veya Visual Studio kullanarak .NET uygulamaları yayımlayabilirsiniz.

Yayımlama hakkında kısa bir öğretici için bkz. Tutorial: .NET konsol uygulaması yayımlama.

Yayımlama hakkında kısa bir öğretici için bkz. Tutorial: .NET konsol uygulaması yayımlama.

Yayımlama nedir?

.NET uygulaması yayımlamak, kaynak kodu derleyerek dağıtım için bir yürütülebilir dosya veya ikili dosyası, bağımlılıkları ve ilgili dosyaları oluşturmak anlamına gelir. Yayımladıktan sonra uygulamayı bir sunucuya, dağıtım platformuna, kapsayıcıya veya bulut ortamına dağıtırsınız. Yayımlama işlemi bir uygulamayı dağıtıma hazırlar ve geliştirme ortamının dışında kullanır.

Yayımlama modları

Bir uygulamayı yayımlamanın iki birincil yolu vardır. Bu kararı etkileyen bazı faktörler, dağıtım ortamının uygun .NET Çalışma Zamanı'nın yüklü olup olmadığını ve çalışma zamanını uygulamanızla paketlemeyi gerektiren belirli derleme özelliklerine ihtiyacınız olup olmadığını içerir. İki yayımlama modu şunlardır:

  • Bağımsız yayımlama
    Bu mod, uygulamayı başlatmak için kullanılan platforma özgü yürütülebilir dosyayı, uygulama kodunu içeren derlenmiş ikili dosyayı, uygulama bağımlılıklarını ve uygulamayı çalıştırmak için gereken .NET çalışma zamanını içeren bir yayımlama klasörü oluşturur. Uygulamayı çalıştıran ortamın .NET çalışma zamanının önceden yüklenmiş olması gerekmez.

  • Çerçeveye bağlı olarak yayımla
    Bu mod, uygulamayı başlatmak için kullanılan isteğe bağlı platforma özgü yürütülebilir dosyayı, uygulama kodunu içeren derlenmiş ikili dosyayı ve uygulama bağımlılıklarını içeren bir yayımlama klasörü oluşturur. Uygulamayı çalıştıran ortamda, uygulamanın kullanabileceği bir .NET çalışma zamanı sürümü yüklü olmalıdır.

Önemli

Hedef platformu çalışma zamanı tanımlayıcısı (RID) ile belirtirsiniz. RID'ler hakkında daha fazla bilgi için bkz. .NET RID Kataloğu.

Yayımlamayla ilgili temel bilgiler

Proje dosyasının ayarı, uygulamanızı yayımladığınızda varsayılan hedef çerçeveyi belirtir. Hedef çerçeveyi geçerli bir Hedef Çerçeve Tanımlayıcısı (TFM) ile değiştirebilirsiniz. Örneğin, projeniz <TargetFramework>net9.0</TargetFramework> kullanıyorsa, .NET 9'ı hedefleyen bir ikili oluşturulur.

Birden fazla çerçeveyi hedeflemek istiyorsanız, ayarını noktalı virgülle ayrılmış birden fazla TFM değerine ayarlayabilirsiniz. Uygulamanızı oluşturduğunuzda, uygulamanız projeniz tarafından tanımlanan her hedef çerçeve için oluşturulur. Ancak, uygulamanızı yayımladığınızda hedef çerçeveyi belirtmeniz gerekir:

Varsayılan derleme yapılandırma modu, parametresiyle değiştirilmediği sürece Yayın'dır.

dotnet publish -c Release -f net9.0

Komutun varsayılan çıkış dizinidir . Örneğin, 'ye yayımlar. Ancak, tüm derleme çıkışları için basitleştirilmiş bir çıkış yolu ve klasör yapısı seçebilirsiniz. Daha fazla bilgi için bkz. Artefakt çıkış düzeni.

Visual Studio her hedef çerçeve için ayrı yayımlama profilleri oluşturun.

Taşınabilir binary dosyalar

.NET bir uygulama yayımladığınızda, belirli bir platformu hedefleyebilir veya taşınabilir bir ikili dosya oluşturabilirsiniz. Varsayılan olarak, taşınabilir ikili dosya oluştururken bile, .NET bu davranışı açıkça devre dışı bırakmadığınız sürece taşınabilir DLL ile birlikte platforma özgü bir yürütülebilir dosya ("apphost") yayımlar.

Varsayılan olarak olan özellik nedeniyle platforma özgü yürütülebilir dosya oluşturulur. Platforma özgü yürütülebilir dosya olmadan yalnızca taşınabilir DLL'yi yayımlamak için , komut satırında veya bir proje özelliği olarak ayarlayın .

Belirli bir platformu hedeflemenin avantajı, uygulamanızın gerektirebileceği yerel bağımlılıkları işleyerek hedef platformun belirli gereksinimleriyle uyumluluğu sağlamasıdır.

Yerel bağımlılıklar

Uygulamanızın yerel bağımlılıkları varsa, taşınabilir ikili dosya olarak yayımlanırsa farklı bir işletim sisteminde çalışmayabilir. Örneğin, Windows API'sine bağımlı uygulamalar macOS veya Linux üzerinde yerel olarak çalışmaz. Platforma özgü kod sağlamanız ve her platform için bir yürütülebilir dosya derlemeniz gerekir.

Referans verdiğiniz bir kitaplık platforma özgü bağımlılıklar sağlıyorsa uygulamanızın her platformda çalışamama olasılığı vardır. Ancak, belirli bir platformu yayımladığınızda ve hedeflediğinizde, NuGet paketinin platforma özgü bağımlılıkları yayımlama klasörüne kopyalanır.

Uygulamanızın yerel bağımlılıklarıyla yayımlandığından emin olmak için belirli bir platformda yayımlayın:

dotnet publish -c Release -r <RID>
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.
  3. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.
  4. Yayımlama profilinde Tüm ayarları göster'i seçin.
  5. Target Runtime öğesini istediğiniz platforma ayarlayın (örneğin, 64 bit Windows için win-x64).
  6. Kaydet'i ve ardından Yayımla'yı seçin.

Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

Hızlı referans

Aşağıdaki tabloda uygulamanızı yayımlamaya yönelik hızlı örnekler verilmiştir.

Yayımlama Modu Komut
Çerçeveye bağımlı dağıtım dotnet publish -c Release [-r <RID>]
Çerçeveye bağımlı dağıtım (DLL) dotnet publish -c Release -p:UseAppHost=false
Bağımsız dağıtım dotnet publish -c Release [-r <RID>] --self-contained true
Tek dosyalı dağıtım dotnet publish -c Release [-r <RID>] -p:PublishSingleFile=true
Yerel AOT dağıtımı dotnet publish -c Release [-r <RID>] -p:PublishAot=true
ReadyToRun dağıtımı dotnet publish -c Release [-r <RID>] -p:PublishReadyToRun=true
Kapsayıcı dağıtımı dotnet publish -c Release [-r <RID>] -t:PublishContainer

Çerçeveye bağımlı dağıtım

CLI veya Visual Studio'dan yayımladığınızda çerçeveye bağımlı dağıtım varsayılan moddur. Bu modda, uygulamanızı başlatmak için kullanılabilecek platforma özgü bir yürütülebilir dosya oluşturulur. Platforma özgü yürütülebilir dosya, Windows veya diğer platformlarda yalnızca myapp.exemyapp benzer bir adla adlandırılır.

Uygulamanız belirli bir .NET sürümünü hedeflemek üzere yapılandırılmıştır. Hedeflenen .NET çalışma zamanının uygulamanızın çalıştığı ortamda olması gerekir. Örneğin, uygulamanız .NET 9'u hedeflerse, uygulamanızın çalıştığı tüm ortamlarda .NET 9 çalışma zamanı yüklü olmalıdır.

Çerçeveye bağımlı bir dağıtım yayımlamak, uygulamanın çalıştığı ortamda bulunan en son .NET güvenlik güncellemesine otomatik olarak yükselen bir uygulama oluşturur. Derleme zamanında sürüm bağlama hakkında daha fazla bilgi için bkz. > kullanılacak .NET sürümünü seçme.

Avantaj -ları

  • Küçük dağıtım: Yalnızca uygulama ve bağımlılıkları dağıtılır. Uygulamanın çalıştırıldığı ortamda .NET çalışma zamanı zaten yüklü olmalıdır.
  • Cross-platform: Uygulama ve .NET tabanlı kitaplıklar diğer işletim sistemlerinde çalışır.
  • En son güncellenmiş çalışma zamanı ortamını kullanır: Uygulama, ortamda yüklü olan en son çalışma zamanı ortamını kullanır.

Dezavantaj -ları

  • Çalışma zamanını önceden yükler: Uygulama yalnızca hedeflediğini .NET sürümü ortamda zaten yüklüyse çalıştırılabilir.
  • .NET değişebilir: Uygulamanın çalıştırıldığı ortam, uygulama davranışını değiştirebilecek daha yeni bir .NET çalışma zamanı kullanabilir.

Çerçeveye bağımlı uygulamaları başlatma

Çerçeveye bağımlı uygulamaları çalıştırmanın iki yolu vardır: platforma özgü yürütülebilir dosya ("apphost") ve aracılığıyla. Apphost yürütülebilir dosyasını doğrudan çalıştırabilir ve çağırmak yerine hâlâ kabul edilebilir bir şekilde uygulamayı çalıştırabilirsiniz. Mümkün olduğunda apphost'un kullanılması önerilir. apphost kullanmanın çeşitli avantajları vardır:

  • Yürütülebilir dosyalar standart yerel platform yürütülebilir dosyaları gibi görünür.
  • Yürütülebilir adlar işlem adlarında korunur, yani uygulamalar adlarına göre kolayca tanınabilir.
  • apphost yerel bir ikili olduğundan, bildirimler gibi yerel varlıklar bunlara eklenebilir.
  • Apphost' un, daha güvenli olmasını sağlayan varsayılan olarak uygulanan düşük düzeyli güvenlik azaltmaları vardır. Örneğin, Denetim Akışı Zorlama Teknolojisi (CET) gölge yığını, .NET 9'dan başlayarak varsayılan olarak etkinleştirilir. için uygulanan azaltmalar, desteklenen tüm çalışma zamanlarının en düşük ortak paydasıdır.

Yayınlamak

dotnet publish -c Release [-r <RID>]
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

Veya açıkça:

dotnet publish -c Release [-r <RID>] --self-contained false
  • --self-contained false

    Bu seçenek, .NET SDK'sına çerçeveye bağımlı bir dağıtım oluşturmasını açıkça belirler.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.
  3. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.
  4. Yayımlama profilinde Tüm ayarları göster'i seçin.
  5. Dağıtım Modu'nuÇerçeveye bağımlı olarak ayarlayın (varsayılan ayar budur).
  6. Target Runtime öğesini istediğiniz platforma ayarlayın (örneğin, 64 bit Windows için win-x64).
  7. Kaydet'i ve ardından Yayımla'yı seçin.

.NET yükleme arama davranışını yapılandırma

Apphost varsayılan olarak platforma göre değişen yükleme konumları ile genel olarak yüklenmiş bir .NET çalışma zamanını bulur ve kullanır. Çalışma zamanı bulma ve yükleme konumları hakkında daha fazla bilgi için bkz. Uygulama başlatma hatalarını giderme.

.NET çalışma zamanı yolu, her bir yürütme için özelleştirilebilir. Ortam değişkeni özel konumu işaret etmek için kullanılabilir. Tüm DOTNET_ROOT yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. .NET ortam değişkenleri.

Genel olarak, en iyi kullanım yöntemi şunları yapmaktır:

  1. Önce ortam değişkenlerini temizleyin, yani metniyle başlayan tüm ortam değişkenlerini.
  2. Yalnızca ve hedef yola ayarlayın.
  3. Hedef apphost'u çalıştır.

.NET 9 ve sonraki sürümlerde yayımlanan yürütülebilir dosyanın .NET yükleme arama yollarını AppHostDotNetSearch ve AppHostRelativeDotNet özellikleri aracılığıyla yapılandırabilirsiniz.

AppHostDotNetSearch, yürütülebilir dosyanın .NET yüklemesinin aranacağı bir veya daha fazla konumun belirtilmesine olanak tanır:

  • : uygulama yürütülebilir dosyasının klasörü
  • : uygulama yürütülebilir dosyasıyla ilgili yol
  • : ortam değişkenlerinin değeri
  • : kayıtlı ve varsayılan genel yükleme konumları

, içerdiğinde yürütülebilir dosyaya göre relatif yolu belirtir.

Daha fazla bilgi için bkz . , ve apphost'ta konum seçeneklerini yükleme.

Platformlar arası DLL dağıtımı

Alternatif olarak, uygulamanızı platforma özgü yürütülebilir dosya olmadan platformlar arası DLL olarak yayımlayabilirsiniz. Bu modda, yayımlama çıktı klasöründe bir dosya oluşturulur. Uygulamanızı çalıştırmak için çıkış klasörüne gidin ve komutunu kullanın .

Platformlar arası DLL olarak yayımlamak için:

dotnet publish -c Release -p:UseAppHost=false
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -p:UseAppHost=false

    Bu özellik, platforma özgü yürütülebilir dosyanın oluşturulmasını devre dışı bırakır ve yalnızca taşınabilir DLL'yi üretir.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.
  3. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.
  4. Yayımlama profilinde Tüm ayarları göster'i seçin.
  5. Dağıtım Modu'nuÇerçeveye bağımlı olarak ayarlayın.
  6. Tek dosya üret seçeneğinin işaretini kaldırın.
  7. Hedef Çalışma Zamanı'nıTaşınabilir olarak ayarlayın (veya boş bırakın).
  8. Kaydet'i ve ardından Yayımla'yı seçin.

Bağımsız dağıtım

Bağımsız bir dağıtım (SCD) yayımladığınızda, yayımlama işlemi platforma özgü bir yürütülebilir dosya oluşturur. SCD yayımlama, uygulamanızı çalıştırmak için gerekli tüm .NET dosyalarını içerir ancak .NET yerel bağımlılıklarını içermez. Uygulama çalışmadan önce bu bağımlılıkların ortamda mevcut olması gerekir.

En son kullanılabilir .NET güvenlik düzeltme ekine güncellenmeyen bir uygulama oluşturmak için bir SCD yayımlamak gerekir. Derleme zamanında sürüm bağlama hakkında daha fazla bilgi için bkz. > kullanılacak .NET sürümünü seçme.

Avantaj -ları

  • Control .NET sürümü: Uygulamayla hangi .NET sürümünün dağıtılacağı denetleyin.
  • Platforma özgü hedefleme: Uygulamanın her platform için yayımlanması gerektiğinden, uygulamanın nerede çalıştığı açıktır.

Dezavantaj -ları

  • Daha büyük dağıtımlar: Uygulama .NET çalışma zamanını ve tüm bağımlılıkları içerdiğinden, indirme boyutu ve sabit sürücü alanı çerçeveye bağlı dağıtımdan daha büyüktür.
  • .NET sürümünü güncellemek daha zor: .NET Çalışma Zamanı, yalnızca uygulamanın yeni bir sürümü yayınlanarak yükseltilebilir.

Bahşiş

Kırpılmış olarak yayımlayarak veya genelleştirme sabit modunu etkinleştirerek uyumlu kendi içinde bulunan uygulamaların toplam boyutunu azaltabilirsiniz. Sabit mod genelleştirme hakkında daha fazla bilgi için bkz. .NET Globalization Invariant Mode.

Yayınlamak

dotnet publish -c Release -r <RID> --self-contained true
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

  • --self-contained true

    Bu anahtar, .NET SDK'sına bağımsız dağıtım (SCD) olarak yürütülebilir dosya oluşturmasını bildirir.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.
  3. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.
  4. Yayımlama profilinde Tüm ayarları göster'i seçin.
  5. Dağıtım Modu'nuBağımsız olarak ayarlayın.
  6. Target Runtime öğesini istediğiniz platforma ayarlayın (örneğin, 64 bit Windows için win-x64).
  7. Kaydet'i ve ardından Yayımla'yı seçin.

Tek dosyalı dağıtım

Uygulamanızı tek dosyalı dağıtım olarak yayımladığınızda, uygulamaya bağımlı tüm dosyalar tek bir ikili dosyada paketlenir. Bu dağıtım modeli hem çerçeveye bağımlı hem de bağımsız uygulamalar için kullanılabilir ve uygulamanızı tek bir dosya olarak dağıtmak ve dağıtmak için cazip bir seçenek sunar.

Tek dosyalı uygulamalar her zaman işletim sistemine ve mimariye özeldir. Linux x64, Linux Arm64, Windows x64 gibi her yapılandırma için yayımlamanız gerekir.

Avantaj -ları

  • Basitleştirilmiş dağıtım: Uygulamanızı tek bir yürütülebilir dosya olarak dağıtın ve dağıtın.
  • Azaltılmış dosya dağınıklığı: Tüm bağımlılıklar paketlenir ve birden çok dosyayı yönetme gereksinimi ortadan kaldırılır.
  • Kolay dağıtım: Uygulamayı dağıtmak için tek bir dosya kopyalayın.

Dezavantaj -ları

  • Daha büyük dosya boyutu: Tek dosya tüm bağımlılıkları içerir ve tek tek dosyalardan daha büyük hale getirir.
  • Daha yavaş başlatma: Dosyaların çalışma zamanında ayıklanması gerekir ve bu da başlangıç performansını etkileyebilir.
  • Platforma özgü: Her hedef platform için ayrı dosyalar yayımlamanız gerekir.

Tek dosyalı dağıtım, daha fazla iyileştirme için kırpma ve ReadyToRun derlemesi gibi diğer iyileştirmelerle birleştirilebilir.

Tek dosyalı dağıtım hakkında daha fazla bilgi için bkz. Tek dosyalı dağıtım.

Yayınlamak

dotnet publish -c Release -r <RID> -p:PublishSingleFile=true
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

  • -p:PublishSingleFile=true

    Bu özellik, uygulamaya bağımlı tüm dosyaları tek bir ikili dosyada paketler.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.
  3. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.
  4. Yayımlama profilinde Tüm ayarları göster'i seçin.
  5. Dağıtım Modu'nuBağımsız veya Çerçeveye bağımlı olarak ayarlayın.
  6. Target Runtime öğesini istediğiniz platforma ayarlayın (örneğin, 64 bit Windows için win-x64).
  7. Tek dosya üret'i işaretleyin.
  8. Kaydet'i ve ardından Yayımla'yı seçin.

Yerel AOT dağıtımı

Yerel AOT dağıtımı uygulamanızı doğrudan yerel koda derleyerek çalışma zamanı gereksinimini ortadan kaldırır. Derlenen yerel kodun uygulamayı çalıştırmak için gereken her şeyi içermesi gerektiğinden bu yayımlama seçeneği bağımsız dağıtım modunu kullanır. Bu, daha hızlı başlangıç sürelerine ve daha az bellek kullanımına neden olur, ancak desteklenen özelliklerle ilgili bazı sınırlamalarla birlikte gelir.

Avantaj -ları

  • Hızlı başlatma: Çalışma zamanında JIT derlemesi gerekmez ve bu da uygulamanın daha hızlı başlatılmasına neden olur.
  • Azaltılmış bellek kullanımı: Geleneksel .NET uygulamalarına kıyasla daha düşük bellek izi.
  • Çalışma zamanı bağımlılığı yok: Uygulama, .NET çalışma zamanı yüklemesi gerektirmeden çalışır.
  • Daha küçük dağıtım boyutu: Tam çalışma zamanı ile genellikle bağımsız dağıtımdan daha küçüktür.

Dezavantaj -ları

  • Sınırlı çerçeve desteği: Tüm .NET özellikleri ve kitaplıkları Native AOT ile uyumlu değildir.
  • Daha uzun derleme süreleri: Yerel koda derleme, normal derlemelerden daha uzun sürer.
  • Platforma özgü: Her hedef platform ve mimari için ayrı ayrı derlenmelidir.
  • Debugging sınırlamaları: Normal .NET uygulamalarına kıyasla daha karmaşık hata ayıklama deneyimi.

Yerel AOT dağıtımı hakkında daha fazla bilgi için bkz. Yerel AOT dağıtımı.

Yayınlamak

dotnet publish -c Release -r <RID> -p:PublishAot=true
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

  • -p:PublishAot=true

    Bu özellik, uygulamayı doğrudan yerel koda derleyen Yerel AOT derlemesini etkinleştirir.

Proje dosyasında yerel AOT yayımlama yapılandırılmalıdır. Visual Studio yayımlama kullanıcı arabirimi aracılığıyla etkinleştiremezsiniz.

  1. Çözüm Gezgini'da projenize sağ tıklayın ve Proje Dosyasını Düzenle'i seçin.

  2. Aşağıdaki özelliği bir içine ekleyin:

    <PublishAot>true</PublishAot>
    
  3. Proje dosyasını kaydedin.

  4. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.

  5. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.

  6. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.

  7. Yayımlama profilinde Tüm ayarları göster'i seçin.

  8. Dağıtım Modu'nuBağımsız olarak ayarlayın.

  9. Target Runtime öğesini istediğiniz platforma ayarlayın (örneğin, 64 bit Windows için win-x64).

  10. Kaydet'i ve ardından Yayımla'yı seçin.

Yerel AOT dağıtımı hakkında daha fazla bilgi için bkz. Yerel AOT dağıtımı.

ReadyToRun dağıtımı

Uygulamanızı ReadyToRun derlemesi ile yayımladığınızda, uygulama derlemeleriniz ReadyToRun (R2R) biçiminde derlenir. R2R, uygulamanızı yüklerken tam zamanında (JIT) derleyicinin yapması gereken iş miktarını azaltarak başlangıç performansını geliştiren bir ileriye dönük (AOT) derleme biçimidir. Bu yayımlama seçeneği hem çerçeveye bağımlı hem de bağımsız dağıtım modlarıyla kullanılabilir.

ReadyToRun ikili dosyaları hem ara dil (IL) kodunu hem de aynı kodun yerel sürümünü içerir. R2R ikili dosyaları normal derlemelerden daha büyük olsa da, daha iyi başlangıç performansı sağlar.

Avantaj -ları

  • Geliştirilmiş başlangıç süresi: Uygulama, başlatma sırasında JIT derleyicisini çalıştırmak için daha az zaman harcar.
  • Daha iyi ilk kullanım performansı: Kod yollarının ilk kez yürütülmesi için daha düşük gecikme süresi.
  • Var olan kodla uyumlu: Çoğu .NET kitaplığı ve çerçeveyle değişiklik yapmadan çalışır.
  • Esnek dağıtım: Hem çerçeveye bağımlı dağıtım hem de bağımsız dağıtım modlarıyla birleştirilebilir.

Dezavantaj -ları

  • Daha büyük boyut: Hem IL hem de yerel kod dahil olduğundan uygulama diskte daha büyüktür.
  • Derleme süreleri daha uzun: Derleme, standart yayımlamadan daha uzun sürer.
  • Platforma özgü iyileştirmeler: En iyi performans kazanımları için belirli platformların hedeflenmesi gerekir.

Yayınlamak

dotnet publish -c Release -r <RID> -p:PublishReadyToRun=true
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

  • -p:PublishReadyToRun=true

    Bu özellik, derlemeleri önceden derleyerek başlangıç performansını geliştiren ReadyToRun derlemesini etkinleştirir.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. İlk kez yayımlıyorsanız yayımlama hedefi olarak Klasör seçeneğini seçin ve İleri seçeneğini seçin.
  3. Bir klasör konumu seçin veya varsayılanı kabul edin, ardından Son'u seçin.
  4. Yayımlama profilinde Tüm ayarları göster'i seçin.
  5. Dağıtım Modu'nuBağımsız veya Çerçeveye bağımlı olarak ayarlayın.
  6. Target Runtime öğesini istediğiniz platforma ayarlayın (örneğin, 64 bit Windows için win-x64).
  7. ReadyToRun derlemesini etkinleştir'i işaretleyin.
  8. Kaydet'i ve ardından Yayımla'yı seçin.

ReadyToRun dağıtımı hakkında daha fazla bilgi için bkz . ReadyToRun derlemesi.

Kapsayıcı dağıtımı

Uygulamanızı kapsayıcı olarak yayımladığınızda, .NET SDK'sı uygulamanızı ve bağımlılıklarını ayrı bir Dockerfile gerekmeden kapsayıcı görüntüsünde paketler. Bu dağıtım modu, Docker veya Podman gibi herhangi bir kapsayıcı çalışma zamanında çalıştırılabilir eksiksiz bir kapsayıcı görüntüsü oluşturur. Kapsayıcı dağıtımı, en iyi duruma getirilmiş temel görüntüler sağlarken Dockerfiles yazma ve bakımını yapma gereksinimini ortadan kaldırarak kapsayıcıya alma işlemini basitleştirir.

.NET SDK 8.0.200'den başlayarak kapsayıcı desteği varsayılan olarak dahil edilir ve ek NuGet paketleri gerektirmez. Konsol uygulamaları için, özelliğini olarak ayarlayarak kapsayıcı desteğini açıkça etkinleştirmeniz gerekebilir.

Bahşiş

Kapsayıcılarla ilgili proje ayarları hakkında daha fazla bilgi için bkz. > .NET uygulama başvurusu oluşturma.

Avantaj -ları

  • Basitleştirilmiş kapsayıcılama: Temel senaryolar için Dockerfile yazmanız veya bakımını yapmanız gerekmez.
  • İyileştirilmiş temel görüntüler: En son güvenlik güncelleştirmeleriyle Microsoft tarafından sağlanan, iyileştirilmiş temel görüntüleri kullanır.
  • Tutarlı ortam: Geliştirme, test ve üretim genelinde tutarlı çalışma zamanı ortamı sağlar.
  • Kolay dağıtım: Kapsayıcı görüntüleri farklı ortamlarda kolayca paylaşılabilir ve dağıtılabilir.
  • Platform yalıtımı: Uygulamalar yalıtılmış kapsayıcılarda çalıştırılarak uygulamalar arasındaki çakışmalar azaltılır.

Dezavantaj -ları

  • Kapsayıcı çalışma zamanı bağımlılığı: Hedef ortamda bir kapsayıcı çalışma zamanı yüklü olmalıdır.
  • Görüntü boyutu: Kapsayıcı görüntüleri genellikle diğer dağıtım yöntemlerinden daha büyüktür.
  • Öğrenme eğrisi: Kapsayıcı kavramlarının ve araçlarının anlaşılmasını gerektirir.
  • Sınırlı özelleştirme: Karmaşık senaryolar için özel Dockerfile'lara kıyasla daha az esneklik.

Yayınlamak

dotnet publish -c Release [-r <RID>] /t:PublishContainer
  • -c Release

    Bu anahtar, derleme yapılandırmasını Sürüm olarak ayarlar ve üretim dağıtımı için optimize edilmiştir.

  • -r <RID>

    Bu anahtar, hedef platformu belirtmek için bir çalışma zamanı tanımlayıcısı (RID) kullanır ve yerel bağımlılıkların dahil edilmesini sağlar (gerekirse). Çalışma zamanı tanımlayıcılarının listesi için bkz . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.

  • -t:PublishContainer

    Bu hedef, uygulamayı kapsayıcı görüntüsü olarak yayımlar.

Ayrıca yayımlama profili yaklaşımını da kullanabilirsiniz:

dotnet publish -c Release [-r <RID>] -p:PublishProfile=DefaultContainer
  • -p:PublishProfile=DefaultContainer

    Bu profil kapsayıcı yayımlama işlemini tetikler.

  1. Çözüm Gezgini'da projeye sağ tıklayın ve Publish öğesini seçin.
  2. Yayımlama hedefi olarak Container Registry'yi ve ardından İleri'yi seçin.
  3. Hedef kapsayıcı kayıt defterinizi (örneğin, Azure Container Registry, Docker Hub veya Generic Registry) seçin ve Next öğesini seçin.
  4. Kayıt defteri bağlantı ayrıntılarını ve kimlik doğrulamasını yapılandırın.
  5. Yayımlama profilinde Tüm ayarları göster'i seçin.
  6. Dağıtım Modu'nu gereksinimlerinize göre Bağımsız veya Çerçeveye bağımlı olarak ayarlayın.
  7. Hedef Çalışma Zamanı'nı istediğiniz platforma ayarlayın (örneğin, Linux kapsayıcıları için linux-x64).
  8. Görüntü adı ve etiketler gibi kapsayıcıya özgü ayarları yapılandırın.
  9. Kaydet'i ve ardından Yayımla'yı seçin.

Kapsayıcı dağıtımı hakkında daha fazla bilgi için bkz. .NET SDK kapsayıcı oluşturmaya genel bakış.

Ayrıca bkz.