Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, .NET uygulamanızı komut satırından nasıl yayımlayabileceğiniz gösterilmektedir. .NET, uygulamalarınızı yayımlamak için üç yol sağlar. Çerçeveye bağımlı dağıtım, yerel olarak yüklenen .NET çalışma zamanını kullanan platformlar arası bir .dll dosyası oluşturur. Çerçeveye bağımlı yürütülebilir dosya, yerel olarak yüklenen .NET çalışma zamanını kullanan platforma özgü bir yürütülebilir dosya oluşturur. Bağımsız yürütülebilir dosya, platforma özgü bir yürütülebilir dosya oluşturur ve .NET çalışma zamanının yerel bir kopyasını içerir.
Bu yayımlama modlarının genel bakışı için bkz . .NET Uygulama Dağıtımı.
CLI'yi kullanma konusunda hızlı yardım mı arıyorsunuz? Aşağıdaki tabloda uygulamanızı yayımlamaya ilişkin bazı örnekler gösterilmektedir. Hedef çerçeveyi parametresiyle -f <TFM>
veya proje dosyasını düzenleyerek belirtebilirsiniz. Daha fazla bilgi için bkz . Yayımlama temel bilgileri.
Yayımlama Modu | Komut |
---|---|
Çerçeveye bağımlı dağıtım | dotnet publish -c Release -p:UseAppHost=false |
Çerçeveye bağımlı yürütülebilir dosya | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Bağımsız dağıtım | dotnet publish -c Release -r <RID> --self-contained true |
Not
-
-c Release
parametresi gerekli değildir. Uygulamanızın Yayın derlemesini yayımlamanız için hatırlatma amacıyla sağlanmıştır. -
.NET SDK 3.1 veya daha üst sürümlerde, temel
dotnet publish
komutu çalıştırıldığında çerçeveye bağımlı çalıştırılabilir dosya varsayılan yayımlama modudur.
Yayımlamayla ilgili temel bilgiler
<TargetFramework>
Proje dosyasının ayarı, uygulamanızı yayımladığınızda varsayılan hedef çerçeveyi belirtir. Hedef çerçeveyi geçerli herhangi bir Hedef Çerçeve Tanımlayıcısı (TFM) ile değiştirebilirsiniz. Örneğin, projeniz <TargetFramework>net9.0</TargetFramework>
kullanıyorsa, .NET 9'u hedefleyen bir çalıştırılabilir dosya oluşturulur. Bu ayarda belirtilen TFM, dotnet publish
komutu tarafından kullanılan varsayılan hedeftir.
Birden fazla çerçeveyi hedeflemek istiyorsanız, <TargetFrameworks>
ayarını noktalı virgülle ayrılmış birden çok TFM değerine ayarlayabilirsiniz. Uygulamanızı oluşturduğunuzda, her hedef çerçeve için bir derleme oluşturulur. Ancak, uygulamanızı yayımladığınızda, hedef çerçeveyi komutuyla dotnet publish -f <TFM>
belirtmeniz gerekir.
Varsayılan BUILD-CONFIGURATION modu, parametresiyle değiştirilmediği sürece Yayın'dır-c
.
Komutun dotnet publish
varsayılan çıkış dizinidir ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
. Örneğin, dotnet publish -c Release -f net9.0
./bin/Release/net9.0/publish/
'ye yayımlar. Ancak, tüm derleme çıkışları için basitleştirilmiş bir çıkış yolu ve klasör yapısı seçebilirsiniz. Daha fazla bilgi için bkz. Yapıt çıktı düzeni.
Yerel bağımlılıklar
Uygulamanızın yerel bağımlılıkları varsa farklı bir işletim sisteminde çalışmayabilir. Örneğin, uygulamanız yerel Windows API'sini kullanıyorsa macOS veya Linux üzerinde çalışmaz. Platforma özgü kod sağlamanız ve her platform için bir yürütülebilir dosya derlemeniz gerekir.
Ayrıca başvurmuş olduğunuz bir kitaplığın yerel bağımlılığı varsa uygulamanızın her platformda çalışmayabileceğini de göz önünde bulundurun. Ancak, başvurabileceğiniz bir NuGet paketinin sizin için gerekli yerel bağımlılıkları işlemek için platforma özgü sürümler içeriyor olması mümkündür.
Yerel bağımlılıkları olan bir uygulamayı dağıtırken, yayımlamak istediğiniz hedef platformu belirtmek için dotnet publish -r <RID>
komut anahtarını kullanmanız gerekebilir. Ç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ğlı yürütülebilir dosya ve Bağımsız dağıtım bölümlerinde ele alınmıştır.
Örnek uygulama
Yayımlama komutlarını keşfetmek için aşağıdaki uygulamayı kullanabilirsiniz. Uygulama, terminalinizde aşağıdaki komutlar çalıştırılarak oluşturulur:
mkdir apptest1
cd apptest1
dotnet new console
dotnet add package Figgle
Program.cs
veya Program.vb
dosyası, konsol şablonu tarafından oluşturulduktan sonra aşağıdaki şekilde değiştirilmelidir:
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ıdotnet run
() çalıştırdığınızda aşağıdaki çıkış görüntülenir:
_ _ _ _ __ __ _ _ _
| | | | ___| | | ___ \ \ / /__ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Çerçeveye bağımlı dağıtım
Uygulamanızı FDD olarak yayımladığınızda, <PROJECT-NAME>.dll
dosyası ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
klasöründe oluşturulur. Uygulamanızı çalıştırmak için çıkış klasörüne gidin ve komutunu kullanın dotnet <PROJECT-NAME>.dll
.
Uygulamanız belirli bir .NET sürümünü hedeflemek üzere yapılandırılmıştır. Hedeflenen .NET çalışma zamanının, uygulamanızın çalıştığı herhangi bir makinede olması gerekir. Örneğin, uygulamanız .NET 9'u hedef alıyorsa, uygulamanızın üzerinde çalıştığı tüm makinelerde .NET 9 çalışma zamanı yüklü olmalıdır. Yayımlama temel bilgileri bölümünde belirtildiği gibi, proje dosyanızı düzenleyerek varsayılan hedef çerçeveyi değiştirebilir veya birden fazla çerçeveyi hedefleyebilirsiniz.
FDD yayımlamak, uygulamayı çalıştıran sistemde mevcut olan en son .NET güvenlik düzeltme ekine ileri yönlü bir güncellemeyle otomatik olarak güncellenen bir uygulama oluşturur. 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.
Yayımlama Modu | Komut |
---|---|
Çerçeveye bağımlı dağıtım | dotnet publish -c Release -p:UseAppHost=false |
Çerçeveye bağımlı yürütülebilir dosya
Çerçeve bağımlı yürütülebilir program (FDE), temel dotnet publish
komut için varsayılan moddur. Geçerli işletim sistemini hedeflemek istediğiniz sürece başka parametre belirtmeniz gerekmez.
Bu modda, platformlar arası uygulamanızı barındırmak için platforma özel bir çalıştırılabilir ana bilgisayar oluşturulur. FDD komutu biçiminde dotnet
bir konak gerektirdiğinden bu mod FDD'ye benzer. Ana yürütülebilir dosya adı platforma göre değişir ve <PROJECT-FILE>.exe
benzeri bir adla adlandırılır. Bu yürütülebilir dosyayı çağırmak dotnet <PROJECT-FILE>.dll
yerine doğrudan çalıştırabilirsiniz. Bu, uygulamayı çalıştırmanın hala kabul edilebilir bir yoludur.
Uygulamanız belirli bir .NET sürümünü hedeflemek üzere yapılandırılmıştır. Hedeflenen .NET çalışma zamanının, uygulamanızın çalıştığı herhangi bir makinede olması gerekir. Örneğin, uygulamanız .NET 9'u hedef alıyorsa, uygulamanızın üzerinde çalıştığı tüm makinelerde .NET 9 çalışma zamanı yüklü olmalıdır. Yayımlama temel bilgileri bölümünde belirtildiği gibi, proje dosyanızı düzenleyerek varsayılan hedef çerçeveyi değiştirebilir veya birden fazla çerçeveyi hedefleyebilirsiniz.
Bir FDE yayımlamak, uygulamayı çalıştıran sistemde kullanılabilen en son .NET güvenlik düzeltme yamasına otomatik olarak güncellenen bir uygulama oluşturur. 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.
Yayımlama Modu | Komut |
---|---|
Çerçeveye bağımlı yürütülebilir dosya | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Her -r
anahtarını kullandığınızda, çıkış klasörü yolu şu şekilde değişir: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/
Örnek uygulamayı kullanıyorsanız komutunu çalıştırındotnet publish -f net9.0 -r win-x64 --self-contained false
. Bu komut aşağıdaki yürütülebilir dosyayı oluşturur: ./bin/Debug/net9.0/win-x64/publish/apptest1.exe
Not
Genelleştirme sabit modunu etkinleştirerek dağıtımınızın toplam boyutunu küçültebilirsiniz. Bu mod, genel olarak farkında olmayan ve sabit kültürün biçimlendirme kurallarını, büyük/küçük harf kurallarını ve dize karşılaştırmasını ve sıralama düzenini kullanabilen uygulamalar için kullanışlı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.
.NET arama yükleme davranışını yapılandırma
.NET 9 ve sonraki sürümlerinde, yayımlanan yürütülebilir dosya için .NET yüklemesinin arama yollarını AppHostDotNetSearch
ve AppHostRelativeDotNet
özellikleri ile yapılandırabilirsiniz.
AppHostDotNetSearch
yürütülebilir dosyanın bir .NET yüklemesini arayacağı bir veya daha fazla konumun belirtilmesine izin verir:
-
AppLocal
: uygulama yürütülebilir dosyasının klasörü -
AppRelative
: uygulama yürütülebilir dosyasıyla ilgili yol -
EnvironmentVariables
: ortam değişkenlerininDOTNET_ROOT[_<arch>]
değeri -
Global
: kayıtlı ve varsayılan genel yükleme konumları
AppHostRelativeDotNet
AppHostDotNetSearch
içerdiğinde aranacak olan yürütülebilir dosya yolunu AppRelative
belirtir.
Daha fazla bilgi için AppHostDotNetSearch
, AppHostRelativeDotNet
ve apphost'ta yükleme konum seçeneklerini görmek üzere bakınız.
Bağımsız dağıtım
Bağımsız bir dağıtım (SCD) yayımladığınızda ,NET SDK'sı platforma özgü bir yürütülebilir dosya oluşturur. SCD yayımlama, uygulamanızı çalıştırmak için gerekli tüm .NET dosyalarını içerir, ancak .NET'in yerel bağımlılıklarını içermez (örneğin, Linux üzerinde .NET 8 için). Uygulama çalışmadan önce bu bağımlılıkların sistemde mevcut olması gerekir.
SCD yayımlamak, en son .NET güvenlik düzeltme ekine güncellenmeyen bir uygulama oluşturur. 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.
SCD'yi yayınlamak için dotnet publish
komutuyla birlikte aşağıdaki anahtarları 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 . Çalışma Zamanı Tanımlayıcısı (RID) kataloğu.
--self-contained true
Bu anahtar , .NET SDK'sına SCD olarak yürütülebilir dosya oluşturmasını söyler.
Yayımlama Modu | Komut |
---|---|
Bağımsız dağıtım | dotnet publish -c Release -r <RID> --self-contained true |
İpucu
- .NET 6 ve sonraki sürümlerde, kırpılmış olarak yayımlayarak uyumlu kendi içinde bulunan uygulamaların toplam boyutunu küçültebilirsiniz. Bu, düzelticinin herhangi bir kod yolunda bulunmayan veya çalışma zamanı yansıması sırasında potansiyel olarak referans alınabilecek çerçevenin ve referanslı derlemelerin bölümlerini kaldırmasını sağlar. Kırpmanın uygulamanız için anlamlı olup olmadığını belirlemek için bkz. kırpma uyumsuzlukları.
- Genelleştirme sabit modunu etkinleştirerek dağıtımınızın toplam boyutunu küçültebilirsiniz. Bu mod, genel olarak farkında olmayan ve sabit kültürün biçimlendirme kurallarını, büyük/küçük harf kurallarını ve dize karşılaştırmasını ve sıralama düzenini kullanabilen uygulamalar için kullanışlıdır. Genelleştirme sabit modu ve bunun nasıl etkinleştirileceği hakkında daha fazla bilgi için bkz. .NET Core Genelleştirme Sabit Modu.