.NET CLI ile .NET uygulamaları yayımlama
Bu makalede, .NET uygulamanızı komut satırına nasıl yayımlayabilirsiniz? .NET, uygulamalarınızı yayımlamak için üç yol sağlar. Çerçeveye bağımlı dağıtım, yerel olarak yüklenmiş .NET .dll platformlar arası bir derleme dosyası üretir. Çerçeveye bağımlı yürütülebilir dosya, yerel olarak yüklenmiş .NET çalışma zamanının kullandığı platforma özgü bir yürütülebilir dosya üretir. Kendi içinde yürütülebilir dosya, platforma özgü bir yürütülebilir dosya üretir ve .NET çalışma zamanının yerel bir kopyasını içerir.
Bu yayımlama modlarına genel bakış için bkz. .NET Uygulama Dağıtımı.
CLI kullanımıyla ilgili hızlı bir yardım mı gerekiyor? Aşağıdaki tabloda, uygulamanın nasıl yayımlanana bazı örnekleri verilmiştir. Hedef çerçeveyi parametresiyle veya -f <TFM> proje dosyasını düzenleyerek belirtebilirsiniz. Daha fazla bilgi için bkz. Yayımlamanın temelleri.
| Yayımlama Modu | SDK Sürümü | Komut |
|---|---|---|
| Çerçeveye bağımlı dağıtım | 2.1 | dotnet publish -c Release |
| 3,1 | dotnet publish -c Release -p:UseAppHost=false |
|
| 5.0 | dotnet publish -c Release -p:UseAppHost=false |
|
| Çerçeveye bağımlı yürütülebilir dosya | 3,1 | dotnet publish -c Release -r <RID> --self-contained falsedotnet publish -c Release |
| 5.0 | dotnet publish -c Release -r <RID> --self-contained falsedotnet publish -c Release |
|
| Kendi içinde dağıtım | 2.1 | dotnet publish -c Release -r <RID> --self-contained true |
| 3,1 | dotnet publish -c Release -r <RID> --self-contained true |
|
| 5.0 | dotnet publish -c Release -r <RID> --self-contained true |
* SDK sürüm 3.1 veya daha yenisini kullanırken, temel komut çalıştırılacaksa çerçeveye bağımlı yürütülebilir dosya varsayılan yayımlama dotnet publish modudur.
Not
-c Releaseparametresi gerekli değildir. Bu, uygulamanın Yayın derlemesi yayımlamak için bir anımsatıcı olarak sağlanır.
Yayımlamanın temelleri
Proje <TargetFramework> dosyasının ayarı, uygulamayı yayımlarken varsayılan hedef çerçeveyi belirtir. Hedef çerçeveyi herhangi bir geçerli Hedef Çerçeve Bilinen Adı (TFM) olarak değiştirebilirsiniz. Örneğin, projeniz kullanıyorsa <TargetFramework>netcoreapp2.1</TargetFramework> . NET Core 2.1'i hedef alan bir ikili oluşturulur. Bu ayarda belirtilen TFM, komutu tarafından kullanılan varsayılan dotnet publish hedeftir.
Birden fazla çerçeveyi hedeflemek için, ayarı noktalı virgülle ayrılmış birden çok <TargetFrameworks> TFM değerine ayarlayın. Uygulamalarınızı derlemeniz, her hedef çerçeve için bir derleme üretir. Ancak, uygulamayı yayımlarken, komutuyla hedef çerçeveyi belirtmeniz dotnet publish -f <TFM> gerekir.
Aksi belirtilmedikçe, komutun çıkış dotnet publish dizini ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/ olur. parametresiyle değiştirmediği sürece varsayılan BUILD-CONFIGURATION modu Hata -c Ayıklama'dır. Örneğin, dotnet publish -c Release -f netcoreapp2.1 'de ./bin/Release/netcoreapp2.1/publish/ yayımlar.
3.1 veya .NET Core SDK kullanırsanız varsayılan yayımlama modu çerçeveye bağımlı yürütülebilir moddur.
.NET Core SDK 2.1 kullanıyorsanız varsayılan yayımlama modu, çerçeveye bağımlı dağıtımdır.
Yerel bağımlılıklar
Uygulamanıza yerel bağımlılıklar varsa, farklı bir işletim sisteminde çalıştırılamayabilirsiniz. Örneğin, uygulamanız yerel Windows API kullanıyorsa macOS veya Linux üzerinde çalışmaz. Platforma özgü kod sağlamanız ve her platform için yürütülebilir dosya derlemeniz gerekir.
Ayrıca başvurulan bir kitaplığın yerel bir bağımlılığı varsa, uygulamanın her platformda çalıştırılamayacak olduğunu da göz önünde bulundurabilirsiniz. Ancak, başvurarak NuGet gerekli yerel bağımlılıkları işlemek için platforma özgü sürümler içeren bir paket olabilir.
Yerel bağımlılıklara sahip bir uygulamayı dağıtırken, yayımlamak istediğiniz hedef dotnet publish -r <RID> platformu belirtmek için anahtarını kullanmanız gerekir. Çalışma zamanı tanımlayıcılarının listesi için bkz. Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.
Platforma özgü ikili dosyalar hakkında daha fazla bilgi, Çerçeveye bağımlı yürütülebilir dosya ve Kendi içinde dağıtım bölümlerinde ele alındı.
Örnek uygulama
Yayımlama komutlarını keşfetmek için aşağıdaki uygulamayı kullanabilirsiniz. Uygulama, terminalde aşağıdaki komutlar çalıştırarak oluşturulur:
mkdir apptest1
cd apptest1
dotnet new console
dotnet add package Figgle
Konsol Program.cs Program.vb şablonu tarafından oluşturulan veya dosyasının aşağıdaki gibi değişmesi gerekir:
using System;
namespace apptest1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"));
}
}
}
Module Program
Sub Main(args As String())
Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"))
End Sub
End Module
Uygulamayı () çalıştırarak dotnet run aşağıdaki çıkış görüntülenir:
_ _ _ _ __ __ _ _ _
| | | | ___| | | ___ \ \ / /__ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Çerçeveye bağımlı dağıtım
.NET Core 2.1 SDK CLI için çerçeveye bağımlı dağıtım (FDD), temel komutun varsayılan dotnet publish modudur. Daha yeni SDK'lerde, Framework'e bağımlı yürütülebilir dosya varsayılandır.
Uygulamayı FDD olarak yayımlarsanız klasöründe <PROJECT-NAME>.dll bir dosya ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/ oluşturulur. Uygulamanızı çalıştırmak için çıkış klasörüne gidin ve komutunu dotnet <PROJECT-NAME>.dll kullanın.
Uygulamanız belirli bir .NET sürümünü hedefley için yapılandırılmış. Hedeflenen .NET çalışma zamanının, uygulamanın çalıştırıldı olduğu herhangi bir makinede olması gerekir. Örneğin, uygulamanız .NET Core 3.1'i hedeflese, uygulamanın üzerinde çalıştır olduğu herhangi bir makinede .NET Core 3.1 çalışma zamanı yüklü olmalıdır. Yayımlama temelleri bölümünde belirtildiği gibi, proje dosyanızı düzenerek varsayılan hedef çerçeveyi değiştirebilir veya birden fazla çerçeveyi hedefleyebilirsiniz.
FDD yayımlama, uygulamayı çalıştıran sistemde bulunan en son .NET güvenlik düzeltme ekini otomatik olarak ileri doğru ileten bir uygulama oluşturur. Derleme zamanında sürüm bağlama hakkında daha fazla bilgi için bkz. Kullanmak üzere .NET sürümünü seçme.
| Yayımlama Modu | SDK Sürümü | Komut |
|---|---|---|
| Çerçeveye bağımlı dağıtım | 2.1 | dotnet publish -c Release |
| 3,1 | dotnet publish -c Release -p:UseAppHost=false |
|
| 5.0 | dotnet publish -c Release -p:UseAppHost=false |
Çerçeveye bağımlı yürütülebilir dosya
.NET 5 (ve .NET Core 3.1) SDK CLI için çerçeveye bağımlı yürütülebilir dosya (FDE), temel komutun varsayılan dotnet publish modudur. Geçerli işletim sistemini hedeflemek istediğiniz sürece başka bir parametre belirtmenize gerek yok.
Bu modda, platformlar arası uygulamanızı barındırmak için platforma özgü yürütülebilir bir konak oluşturulur. FDD, komut şeklinde bir konak gerektirdiği için bu mod FDD'ye dotnet benzer. Konak yürütülebilir dosya adı platforma göre değişir ve olarak <PROJECT-FILE>.exe adlandırılmıştır. Bu yürütülebilir dosyayı, yine de uygulamayı çalıştırmanın kabul edilebilir bir yolu dotnet <PROJECT-FILE>.dll olan çağrısı yapmak yerine doğrudan çalıştırabilirsiniz.
Uygulamanız belirli bir .NET sürümünü hedefley için yapılandırılmış. Hedeflenen .NET çalışma zamanının, uygulamanın çalıştırıldı olduğu herhangi bir makinede olması gerekir. Örneğin, uygulamanız .NET Core 3.1'i hedeflese, uygulamanın üzerinde çalıştır olduğu herhangi bir makinede .NET Core 3.1 çalışma zamanı yüklü olmalıdır. Yayımlama temelleri bölümünde belirtildiği gibi, proje dosyanızı düzenerek varsayılan hedef çerçeveyi değiştirebilir veya birden fazla çerçeveyi hedefleyebilirsiniz.
FDE yayımlama, uygulamayı çalıştıran sistemde mevcut olan en son .NET güvenlik düzeltme ekini otomatik olarak ileri doğru ileten bir uygulama oluşturur. Derleme zamanında sürüm bağlama hakkında daha fazla bilgi için bkz. Kullanmak üzere .NET sürümünü seçme.
.NET 2.1 için, FDE yayımlamak için komutuyla dotnet publish aşağıdaki anahtarları kullanabilirsiniz:
-r <RID>Bu anahtar, hedef platformu belirtmek için bir tanımlayıcı (RID) kullanır. Ç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 falseBu anahtar, kendi içinde dağıtım (SCD) oluşturmak için olan-ranahtarın varsayılan davranışını devre dışı bırakmaktır. Bu anahtar bir FDE oluşturur.
| Yayımlama Modu | SDK Sürümü | Komut |
|---|---|---|
| Çerçeveye bağımlı yürütülebilir dosya | 3,1 | dotnet publish -c Release -r <RID> --self-contained falsedotnet publish -c Release |
| 5.0 | dotnet publish -c Release -r <RID> --self-contained falsedotnet publish -c Release |
anahtarını her -r kullansanız, çıkış klasörü yolu şu şekilde değişir: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/
Örnek uygulamayı kullanıyorsanız dotnet publish -f net5.0 -r win10-x64 --self-contained false çalıştırın. Bu komut aşağıdaki yürütülebilir dosyayı oluşturur: ./bin/Debug/net5.0/win10-x64/publish/apptest1.exe
Not
Genelleştirme sabit modunu etkinleştirerek dağıtım toplam boyutunu azaltabilirsiniz. Bu mod, genel olarak farkında olunan ve sabit kültürün biçimlendirme kuralları, büyük/küçük/küçük/ küçük ve dize karşılaştırması ile sıralama sıralamasını kullana uygulamalar için kullanışlıdır. Globalleştirme sabit modu ve nasıl etkinleştirildi hakkında daha fazla bilgi için bkz. .NET Globalleştirme Sabit Modu.
Kendi içinde dağıtım
Kendi içinde bir dağıtım (SCD) yayımlarsanız, .NET SDK platforma özgü bir yürütülebilir dosya oluşturur. BIR SCD yayımlamak, uygulamanızı çalıştırmak için gereken tüm .NET dosyalarını içerir, ancak .NET'in yerel bağımlılıklarını içermez. Uygulama çalıştırılamadan önce bu bağımlılıkların sistemde mevcut olması gerekir.
SCD yayımlamak, kullanılabilir en son .NET güvenlik düzeltme ekini iletmeden bir uygulama oluşturur. Derleme zamanında sürüm bağlama hakkında daha fazla bilgi için bkz. Kullanmak üzere .NET sürümünü seçme.
SCD yayımlamak için komutuyla dotnet publish aşağıdaki anahtarları kullanabilirsiniz:
-r <RID>Bu anahtar, hedef platformu belirtmek için bir tanımlayıcı (RID) kullanır. Ç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 trueBu anahtar .NET SDK'ya SCD olarak yürütülebilir dosya oluşturması söyler.
| Yayımlama Modu | SDK Sürümü | Komut |
|---|---|---|
| Kendi içinde dağıtım | 2.1 | dotnet publish -c Release -r <RID> --self-contained true |
| 3,1 | dotnet publish -c Release -r <RID> --self-contained true |
|
| 5.0 | dotnet publish -c Release -r <RID> --self-contained true |
Not
Genelleştirme sabit modunu etkinleştirerek dağıtım toplam boyutunu azaltabilirsiniz. Bu mod, genel olarak farkında olunan ve sabit kültürün biçimlendirme kuralları, büyük/küçük/küçük/ küçük ve dize karşılaştırması ile sıralama sıralamasını kullana uygulamalar için kullanışlıdır. Globalleştirme sabit modu ve nasıl etkinleştirildi hakkında daha fazla bilgi için bkz. .NET Core Globalleştirme Sabit Modu.