Aracılığıyla paylaş


.NET uygulaması yayımlamaya genel bakış

.NET ile oluşturduğunuz uygulamalar iki farklı modda yayımlanabilir ve mod kullanıcının uygulamanızı çalıştırma şeklini etkiler.

Uygulamanızı bağımsız olarak yayımlamak, .NET çalışma zamanını ve kitaplıklarını, uygulamanızı ve bağımlılıklarını içeren bir uygulama oluşturur. Uygulamanın kullanıcıları bunu .NET çalışma zamanının yüklü olmadığı bir makinede çalıştırabilir.

Uygulamanızı çerçeveye bağımlı olarak yayımlamak yalnızca uygulamanızın kendisini ve bağımlılıklarını içeren bir uygulama oluşturur. Uygulamanın kullanıcılarının .NET çalışma zamanını ayrı olarak yüklemeleri gerekir.

Her iki yayımlama modu da varsayılan olarak platforma özgü bir yürütülebilir dosya oluşturur. Çerçeveye bağımlı uygulamalar yürütülebilir dosya olmadan oluşturulabilir ve bu uygulamalar platformlar arasıdır.

Yürütülebilir dosya oluşturulduğunda, hedef platformu çalışma zamanı tanımlayıcısı (RID) ile belirtebilirsiniz. RID'ler hakkında daha fazla bilgi için bkz. .NET RID Kataloğu.

Aşağıdaki tabloda, bir uygulamayı çerçeveye bağımlı veya bağımsız olarak yayımlamak için kullanılan komutlar özetlenmektedir:

Tür Komut
Geçerli platform için çerçeveye bağımlı yürütülebilir. dotnet publish
çerçeveye bağımlı yürütülebilir belirli bir platform için. dotnet publish -r <RID>
çerçeveye bağımlı ikili. dotnet publish
bağımsız yürütülebilir dosya. dotnet publish -r <RID> --self-contained

Daha fazla bilgi için bkz. .NET dotnet publish komutu.

Yürütülebilir dosya oluşturma

Yürütülebilir dosyalar platformlar arası değildir, bir işletim sistemine ve CPU mimarisine özeldir. Uygulamanızı yayımlayıp yürütülebilir dosya oluştururken, uygulamayı bağımsız veya çerçeveye bağımlıolarak yayımlayabilirsiniz. Bir uygulamayı bağımsız olarak yayımlamak, uygulamayla birlikte .NET çalışma zamanını içerir ve uygulamayı çalıştırmadan önce .NET'i yükleme konusunda endişelenmeleri gerekmez. Uygulamayı çerçeveye bağımlı olarak yayımlamak .NET çalışma zamanını içermez; yalnızca uygulama ve üçüncü taraf bağımlılıkları dahil edilir.

Aşağıdaki komutlar bir yürütülebilir dosya oluşturur:

Tür Komut
Geçerli platform için çerçeveye bağımlı yürütülebilir. dotnet publish
Belirli bir platform için çerçeveye bağımlı yürütülebilir . dotnet publish -r <RID>
bağımsız yürütülebilir dosya. dotnet publish -r <RID> --self-contained

Çapraz platform ikili dosya üret.

Platformlar arası ikili dosyalar, uygulamanızı dll dosyası biçiminde çerçeveye bağımlıolarak yayımladığınızda oluşturulur. dll dosyası projenizin adını alır. Örneğin, word_readeradlı bir uygulamanız varsa, word_reader.dll adlı bir dosya oluşturulur. Bu şekilde yayımlanan uygulamalar dotnet <filename.dll> komutuyla çalıştırılır ve herhangi bir platformda çalıştırılabilir.

Platformlar arası uygulamalar, hedeflenen .NET çalışma zamanı ortamı zaten yüklü olduğu sürece herhangi bir işletim sisteminde çalıştırılabilir. Hedeflenen .NET çalışma zamanı yüklü değilse, uygulama ileri sarma için yapılandırılmışsa daha yeni bir çalışma zamanı kullanarak çalışabilir. Daha fazla bilgi için bkz. çerçeveye bağımlı uygulamalarilerlemeye devam etme.

Uygulamayı platforma özgü yürütülebilir dosya olarak veya dotnet komutuyla platformlar arası ikili dosya olarak çalıştırmayı seçebilirsiniz. Platforma özgü bir yürütülebilir dosya başlatılırken, sıradan bir sunucu uygulaması için dotnet komutu kullanıldığında uygulama davranışında fark olmamalıdır. Platforma özgü bir yürütülebilir dosya aracılığıyla başlatma, altta yatan işletim sistemiyle daha iyi tümleştirme sağlar. Örneğin:

  • İşlem listenizde dotnetyerine uygulama yürütülebilir adını görürsünüz, ve bu durum, birden fazla olduğunda kafa karıştırıcı olabilir.
  • Platforma özgü yürütülebilir dosyayı işletim sistemine özgü özelliklerle özelleştirebilirsiniz. Örneğin, Windows'ta varsayılan yığın boyutunu yapılandırma hakkındaki bu tartışmaya göz atın.

Aşağıdaki komut platformlar arası bir ikili dosya oluşturur:

Tür Komut
çerçeveye bağımlı platformlar arası ikili. dotnet publish

Çerçeveye bağımlı yayımlama

Çerçeveye bağımlı olarak yayımlanan uygulamalar platformlar arasıdır ve .NET çalışma zamanını içermez. .NET çalışma zamanını yüklemek için uygulamanızın kullanıcısı gereklidir.

Uygulamayı çerçeveye bağımlı olarak yayımlamak, dll dosyası olarak platformlar arası ikili ve geçerli platformunuzu hedefleyen platforma özgü yürütülebilir oluşturur. yürütülebilir dosya değilken dll platformlar arasıdır. Örneğin, word_reader isimli ve Windows'u hedefleyen bir uygulama yayımlarsanız, word_reader.dllile birlikte bir word_reader.exe yürütülebilir dosyası oluşturulur. Linux veya macOS hedeflendiğinde, word_reader.dllile birlikte bir word_reader yürütülebilir dosyası oluşturulur. Uygulama platforma özgü uygulamaları olan bir NuGet paketi kullanıyorsa, tüm platformlar için bağımlılıklar untimes\{platform}\ryayımlama klasörüne kopyalanır.

Uygulamanızın platformlar arası ikili dosyası dotnet <filename.dll> komutuyla çalıştırılabilir ve herhangi bir platformda çalıştırılabilir.

Platforma özgü ve çerçeveye bağımlı

-r <RID> parametrelerini dotnet publish komutuna geçirerek platforma özgü bir çerçeveye bağımlı uygulama yayımlayabilirsiniz. Bu şekilde yayımlama, platforma özgü bağımlılıkların farklı şekilde işlenmesi dışında, yayımlama çerçevesine bağımlıile aynıdır. Uygulama platforma özgü uygulamaları olan bir NuGet paketi kullanıyorsa, yalnızca hedeflenen platformun bağımlılıkları kopyalanır. Bu bağımlılıklar doğrudan yayımlama klasörüne kopyalanır.

Teknik olarak üretilen ikili dosya platformlar arası olsa da, belirli bir platformu hedefleyerek uygulamanızın çapraz platform çalıştırması garanti değildir. dotnet <filename.dll>çalıştırabilirsiniz, ancak eksik olan platforma özgü bağımlılıklara erişmeye çalıştığında uygulama kilitlenebilir.

RID'ler hakkında daha fazla bilgi için bkz. .NET RID Kataloğu.

Avantaj -ları

  • Küçük dağıtım
    Yalnızca uygulamanız ve bağımlılıkları dağıtılır. .NET çalışma zamanı ve kitaplıkları kullanıcı tarafından yüklenir ve tüm uygulamalar çalışma zamanını paylaşır.

  • platformlar arası
    Uygulamanız ve herhangi bir . NET tabanlı kitaplık diğer işletim sistemlerinde çalışır. Uygulamanız için bir hedef platform tanımlamanız gerekmez. .NET dosya biçimi hakkında bilgi için bkz. .NET Derleme Dosya Biçimi.

  • En son düzeltme eki yüklenmiş çalışma zamanı kullanır
    Uygulama, hedef sistemde yüklü olan en son çalışma zamanını (hedeflenen birincil-ikincil .NET ailesi içinde) kullanır. Bu, uygulamanızın .NET çalışma zamanının en son düzeltmesi yapılmış sürümünü otomatik olarak kullandığı anlamına gelir. Bu varsayılan davranış geçersiz kılınabilir. Daha fazla bilgi için bkz. çerçeveye bağımlı uygulamalarsürüm yükseltme.

Dezavantaj -ları

  • Çalışma zamanının önceden yüklenmesi gerekir
    Uygulamanız yalnızca uygulama hedeflerinizin .NET sürümü konak sisteminde zaten yüklüyse çalıştırılabilir. Uygulamanın belirli bir .NET sürümünü gerektirmesi veya daha yeni bir .NET sürümüne izin vermesi için ileri sarma davranışını yapılandırabilirsiniz. Daha fazla bilgi için bkz. çerçeveye bağımlı uygulamalarınyeni bir sürüme yükseltilmesi.

  • .NET değişebilir
    .NET çalışma zamanı ve kitaplıklarının uygulamanın çalıştırıldığı makinede güncelleştirilmiş olması mümkündür. Nadir durumlarda, çoğu uygulamanın kullandığı .NET kitaplıklarını kullanırsanız bu, uygulamanızın davranışını değiştirebilir. Uygulamanızın .NET'in daha yeni sürümlerini nasıl kullandığını yapılandırabilirsiniz. Daha fazla bilgi için bkz: çerçeveye bağımlı uygulamalargüncellemelerini sürdürme.

Örnekler

Bir uygulamayı platformlar arası ve çerçeveye bağlı olarak yayımlama. Geçerli platformunuzu hedefleyen yürütülebilir dosya, dll dosyasıyla birlikte oluşturulur. Platforma özgü bağımlılıklar uygulamayla birlikte yayımlanır.

dotnet publish

Bir uygulamayı platforma özgü ve çerçeveye bağımlı olarak yayımlama. dll dosyasıyla birlikte bir Linux 64 bit yürütülebilir dosyası oluşturulur. Uygulamayla yalnızca hedeflenen platformun bağımlılıkları yayımlanır.

dotnet publish -r linux-x64

Bağımsız yayımlama

Uygulamanızı bağımsız olarak yayımlamak platforma özgü bir yürütülebilir dosya oluşturur. Çıktı yayımlama klasörü, .NET kitaplıkları ve hedef çalışma zamanı dahil olmak üzere uygulamanın tüm bileşenlerini içerir. Uygulama diğer .NET uygulamalarından yalıtılır ve yerel olarak yüklenmiş paylaşılan çalışma zamanı kullanmaz. Uygulamanızın kullanıcısının .NET'i indirip yüklemesi gerekmez.

--self-contained parametresini dotnet publish komutuna geçirerek bağımsız bir uygulama yayımlayabilirsiniz. Yürütülebilir ikili dosyası, belirtilen hedef platform için oluşturulur. Örneğin, word_readeradlı bir uygulamanız varsa ve Windows için bağımsız bir yürütülebilir dosya yayımlarsanız, bir word_reader.exe dosyası oluşturulur. Linux veya macOS için yayımlandığında bir word_reader dosyası oluşturulur. Hedef platform ve mimari, dotnet publish komutu için -r <RID> parametresiyle belirtilir. RID'ler hakkında daha fazla bilgi için bkz. .NET RID Kataloğu.

Uygulamanın platforma özgü bağımlılıkları varsa (örneğin, platforma özgü bağımlılıkları içeren bir NuGet paketi) bunlar uygulamayla birlikte yayımlama klasörüne kopyalanır.

Avantaj -ları

  • .NET sürümünü kontrol et
    Uygulamanızla hangi .NET sürümünün dağıtılacağı sizin denetiminizdedir.

  • Platforma özgü hedefleme
    Uygulamanızı her platform için yayımlamanız gerektiğinden, uygulamanızın nerede çalıştığını bilirsiniz. .NET yeni bir platform tanıtırsa, siz o platformu hedefleyen bir sürüm yayınlamadan kullanıcılar uygulamanızı bu platformda çalıştıramaz. Kullanıcılarınız uygulamanızı yeni platformda çalıştırmadan önce uygulamanızı uyumluluk sorunları için test edebilirsiniz.

Dezavantaj -ları

  • Daha büyük dağıtımlar
    Uygulamanız .NET çalışma zamanını ve tüm uygulama bağımlılıklarınızı içerdiğinden, gereken indirme boyutu ve sabit sürücü alanı çerçeveye bağımlı sürümünden büyüktür.

    Bahşiş

    .NET genelleştirme sabit modunu kullanarak Linux sistemlerinde dağıtımınızın boyutunu yaklaşık 28 MB azaltabilirsiniz. Uygulamanızı tüm kültürlere sabit kültürgibi davranmaya zorlar.

    Bahşiş

    IL kırpma işlemi dağıtım boyutunu daha da küçültebilir.

  • .NET sürümünü güncelleştirmek daha zor
    .NET Çalışma Zamanı (uygulamanızla birlikte dağıtılır) yalnızca uygulamanızın yeni bir sürümü yayınlanarak yükseltilebilir.

Örnekler

Bağımsız bir uygulama yayımlama. macOS için 64-bit'lik bir yürütülebilir dosya oluşturulur.

dotnet publish -r osx-x64 --self-contained

Bağımsız bir uygulama yayımla. Bir Windows 64 bit yürütülebilir dosyası oluşturulur.

dotnet publish -r win-x64 --self-contained

ReadyToRun görüntüleriyle yayımlama

ReadyToRun görüntüleriyle yayımlamak, uygulamanızın boyutunu artırma maliyetiyle uygulamanızın başlangıç süresini geliştirir. Daha fazla bilgi için bkz. ReadyToRun.

Avantaj -ları

  • geliştirilmiş başlangıç süresi
    Uygulama, JIT'yi çalıştırmak için daha az zaman harcar.

Dezavantaj -ları

  • Daha büyük boyutlu
    Uygulama diskte daha büyüktür.

Örnekler

Bağımsız ve ReadyToRun bir uygulama yayımlayın. Bir macOS 64-bit yürütülebilir dosyası oluşturulur.

dotnet publish -c Release -r osx-x64 --self-contained -p:PublishReadyToRun=true

Kendi başına çalışabilen ve ReadyToRun durumda olan bir uygulama yayımlama. Bir Windows 64 bit yürütülebilir dosyası oluşturulur.

dotnet publish -c Release -r win-x64 --self-contained -p:PublishReadyToRun=true

Ayrıca bkz.