.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.

Ayrıca bkz.