.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
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
dotnet
yerine 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
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.
- .NET CLI ile .NET Uygulamaları Dağıtma.
- Visual Studio ile .NET Uygulamaları Dağıtma .
- .NET Runtime Tanımlayıcı (RID) kataloğu.
- Kullanılacak .NET sürümünü seçin.