.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 çalışma .dll platformlar arası bir dosya ü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 |
|
6.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 false dotnet publish -c Release |
5.0 | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
|
6.0 | dotnet publish -c Release -r <RID> --self-contained false dotnet 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 |
|
6.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 modudur dotnet publish
.
Not
parametresi -c Release
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 hedeftir dotnet publish
.
Birden fazla çerçeveyi hedeflemek için, ayarı <TargetFrameworks>
noktalı virgülle ayrılmış birden çok 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ış dizini dotnet publish
olur ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
. parametresiyle değiştirmediği sürece varsayılan BUILD-CONFIGURATION modu Hata Ayıklama'dır.-c
Örneğin, ' dotnet publish -c Release -f netcoreapp2.1
de yayımlar ./bin/Release/netcoreapp2.1/publish/
.
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, dotnet publish -r <RID>
yayımlamak istediğiniz hedef 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 veKendi 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
Program.vb
Konsol Program.cs
ş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ırarakdotnet 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 modudur dotnet publish
. 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 |
|
6.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 modudur dotnet publish
. 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 adlandırılmıştır <PROJECT-FILE>.exe
. Bu yürütülebilir dosyayı, yine de uygulamayı dotnet <PROJECT-FILE>.dll
çalıştırmanın kabul edilebilir bir yolu 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 false
Bu anahtar, kendi içinde dağıtım-r
(SCD) oluşturmak için olan anahtarı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 false dotnet publish -c Release |
5.0 | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
|
6.0 | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Anahtarı her kullandığınızda -r
, çıkış klasörü yolu şu şekilde değişir: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/
Örnek uygulamayıkullanıyorsanız, öğesini çalıştırın dotnet publish -f net6.0 -r win10-x64 --self-contained false
. Bu komut aşağıdaki yürütülebiliri oluşturur: ./bin/Debug/net6.0/win10-x64/publish/apptest1.exe
Not
Genelleştirme sabit modunuetkinleştirerek, dağıtımınızın toplam boyutunu azaltabilirsiniz. Bu mod, genel olarak kullanmayan ve sabit kültürünbiçimlendirme kurallarını, büyük/küçük harf kurallarını ve dize karşılaştırma ve sıralama düzenini kullanabilen uygulamalar için yararlıdır. Genelleştirme sabit modu ve nasıl etkinleştirileceği hakkında daha fazla bilgi için bkz. .NET Genelleştirme sabit modu.
Kendi kendine kapsanan dağıtım
Kendi kendine içerilen bir dağıtımı yayımladığınızda (SCD), .NET SDK, platforma özgü bir yürütülebilir dosya oluşturur. Bir SCD yayımlamak, uygulamanızı çalıştırmak için gerekli tüm .NET dosyalarını içerir, ancak bu, .net 'in yerel bağımlılıklarınıiçermez. Uygulamanın çalışması için önce bu bağımlılıkların sistemde mevcut olması gerekir.
Bir SCD yayımlandığında, en son kullanılabilir .NET güvenlik düzeltme ekine geri dönerek bir uygulama oluşturulur. 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.
Bir SCD yayımlamak için komutuyla aşağıdaki anahtarları dotnet publish
kullanmanız gerekir:
-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. Runtime Identifier (RID) Catalog.--self-contained true
Bu anahtar .NET SDK 'sına SCD olarak yürütülebilir bir dosya oluşturmasını söyler.
Yayımlama modu | SDK Sürümü | Komut |
---|---|---|
Kendi kendine kapsanan 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 |
|
6.0 | dotnet publish -c Release -r <RID> --self-contained true |
İpucu
.NET 6 ' da, yayınlamaile uyumlu olan bağımsız uygulamaların toplam boyutunu azaltabilirsiniz. Bu, kırpıcıyı çerçevenin parçalarını ve herhangi bir kod yolunda olmayan veya çalışma zamanı yansımasıylabaşvurulan bütünleştirilmiş kodların kaldırılmasına olanak sağlar. Kırpma uygulamanızın uygulamanız için anlamlı olup olmadığını anlamak için bkz. kırpma uyumsuzlukları .
Not
Genelleştirme sabit modunuetkinleştirerek, dağıtımınızın toplam boyutunu azaltabilirsiniz. Bu mod, genel olarak kullanmayan ve sabit kültürünbiçimlendirme kurallarını, büyük/küçük harf kurallarını ve dize karşılaştırma ve sıralama düzenini kullanabilen uygulamalar için yararlıdır. Genelleştirme sabit modu ve nasıl etkinleştirileceği hakkında daha fazla bilgi için bkz. .NET Core Genelleştirme sabit modu.