dotnet publish

Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler

Name

dotnet publish - Uygulamayı ve bağımlılıklarını barındırma sistemine dağıtım için bir klasöre yayımlar.

Özet

dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
    [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
    [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [--os <OS>] [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--sc|--self-contained [true|false]] [--no-self-contained]
    [-s|--source <SOURCE>] [--use-current-runtime, --ucr [true|false]]
    [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

dotnet publish -h|--help

Açıklama

dotnet publish uygulamayı derler, proje dosyasında belirtilen bağımlılıklarını okur ve sonuçta elde edilen dosya kümesini bir dizinde yayımlar. Çıktı aşağıdaki varlıkları içerir:

  • Dll uzantısına sahip bir derlemede Ara Dil (IL) kodu.
  • Projenin tüm bağımlılıklarını içeren bir .deps.json dosyası.
  • Uygulamanın beklediği paylaşılan çalışma zamanını ve çalışma zamanı için diğer yapılandırma seçeneklerini (örneğin, çöp toplama türü) belirten bir .runtimeconfig.json dosyası.
  • NuGet önbelleğinden çıkış klasörüne kopyalanan uygulamanın bağımlılıkları.

Komutun dotnet publish çıkışı, yürütme için bir barındırma sistemine (örneğin, sunucu, PC, Mac, dizüstü bilgisayar) dağıtım için hazırdır. Uygulamayı dağıtıma hazırlamanın resmi olarak desteklenen tek yoludur. Projenin belirttiği dağıtım türüne bağlı olarak, barındırma sisteminde .NET paylaşılan çalışma zamanı yüklü olabilir veya olmayabilir. Daha fazla bilgi için bkz . .NET uygulamalarını .NET CLI ile yayımlama.

Örtük geri yükleme

, ve dotnet packgibi dotnet builddotnet newdotnet runbir geri yüklemenin gerçekleşmesini gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığındandotnet publishdotnet test, komutunu çalıştırmanız dotnet restore gerekmez. Örtük geri yüklemeyi devre dışı bırakmak için seçeneğini kullanın --no-restore .

Komutdotnet restore, Azure DevOps Services veya geri yüklemenin ne zaman gerçekleştiğini açıkça denetlemesi gereken derleme sistemlerindeki sürekli tümleştirme derlemeleri gibi açıkça geri yüklemenin anlamlı olduğu bazı senaryolarda hala yararlıdır.

NuGet akışlarını yönetme hakkında bilgi için belgeleredotnet restore bakın.

MSBuild

dotnet publish komutu, hedefi çağıran MSBuild'i Publish çağırır. IsPublishable Özellik belirli bir proje için olarak ayarlandıysafalse, Publish hedef çağrılamıyor ve dotnet publish komut projede yalnızca örtük dotnet geri yüklemesini çalıştırır.

öğesine geçirilen dotnet publish tüm parametreler MSBuild'e geçirilir. -c ve -o parametreleri sırasıyla MSBuild'in Configuration ve PublishDir özellikleriyle eşler.

komutudotnet publish, özellikleri ayarlama ve -l günlükçü tanımlama gibi -p MSBuild seçeneklerini kabul eder. Örneğin, şu biçimi kullanarak bir MSBuild özelliği ayarlayabilirsiniz: -p:<NAME>=<VALUE>.

Bir .pubxml dosyasına başvurarak yayımlamayla ilgili özellikleri de ayarlayabilirsiniz. Örnek:

dotnet publish -p:PublishProfile=FolderProfile

Yukarıdaki örnek, project_folder>/Properties/PublishProfiles klasöründe bulunan<FolderProfile.pubxml dosyasını kullanır. Özelliği ayarlarken PublishProfile bir yol ve dosya uzantısı belirtirseniz, bunlar yoksayılır. MSBuild varsayılan olarak Properties/PublishProfiles klasörüne bakar ve pubxml dosya uzantısını varsayar. Uzantı da dahil olmak üzere yolu ve dosya adını belirtmek için özelliği yerine PublishProfile özelliğini ayarlayınPublishProfileFullPath.

Aşağıdaki MSBuild özellikleri çıktısını dotnet publishdeğiştirir.

  • PublishReadyToRun

    Uygulama derlemelerini ReadyToRun (R2R) biçimi olarak derler. R2R, önceden (AOT) derlemenin bir biçimidir. Daha fazla bilgi için bkz . ReadyToRun görüntüleri.

    Çalışma zamanı hatalarına neden olabilecek eksik bağımlılıklarla ilgili uyarıları görmek için kullanın PublishReadyToRunShowWarnings=true.

    Komut satırında değil yayımlama profilinde belirtmeniz PublishReadyToRun önerilir.

  • PublishSingleFile

    Uygulamayı platforma özgü tek dosyalı yürütülebilir dosyaya paketler. Tek dosyalı yayımlama hakkında daha fazla bilgi için tek dosyalı paketleyici tasarım belgesine bakın.

    Bu seçeneği komut satırında değil proje dosyasında belirtmenizi öneririz.

  • PublishTrimmed

    Kendi içinde yürütülebilir dosya yayımlarken uygulamanın dağıtım boyutunu azaltmak için kullanılmayan kitaplıkları kırpar. Daha fazla bilgi için bkz . Bağımsız dağıtımları ve yürütülebilir dosyaları kırpma. .NET 6 SDK'sı ile kullanılabilir.

    Bu seçeneği komut satırında değil proje dosyasında belirtmenizi öneririz.

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

İş yükü bildirimi indirmeleri

Bu komutu çalıştırdığınızda, iş yükleri için reklam bildirimlerini zaman uyumsuz bir arka plan indirme işlemi başlatır. Bu komut tamamlandığında indirme hala çalışıyorsa indirme durdurulur. Daha fazla bilgi için bkz . Reklam bildirimleri.

Bağımsız değişkenler

  • PROJECT|SOLUTION

    Yayımlayacak proje veya çözüm.

    • PROJECT C#, F# veya Visual Basic proje dosyasının yolu ve dosya adı ya da C#, F# veya Visual Basic proje dosyası içeren bir dizinin yoludur. Dizin belirtilmezse, varsayılan olarak geçerli dizine ayarlanır.

    • SOLUTION , bir çözüm dosyasının (.sln uzantısı) yolu ve dosya adı veya çözüm dosyası içeren bir dizinin yoludur. Dizin belirtilmezse, varsayılan olarak geçerli dizine ayarlanır.

Seçenekler

  • -a|--arch <ARCHITECTURE>

    Hedef mimariyi belirtir. Bu, sağlanan değerin varsayılan RID ile birleştirildiği Çalışma Zamanı Tanımlayıcısı'nı (RID) ayarlamak için bir kısaltma söz dizimidir. Örneğin, bir win-x64 makinede, belirterek --arch x86 RID değerini olarak win-x86ayarlar. Bu seçeneği kullanıyorsanız, seçeneğini kullanmayın -r|--runtime . .NET 6 Preview 7 sürümünden itibaren kullanılabilir.

  • -c|--configuration <CONFIGURATION>

    Derleme yapılandırmasını tanımlar. Çoğu proje için varsayılan değer şeklindedir Debug, ancak projenizdeki derleme yapılandırma ayarlarını geçersiz kılabilirsiniz.

  • -f|--framework <FRAMEWORK>

    Belirtilen hedef çerçeve için uygulamayı yayımlar. Proje dosyasında hedef çerçeveyi belirtmeniz gerekir.

  • --force

    Son geri yükleme başarılı olsa bile tüm bağımlılıkların çözümlenmesine zorlar. Bu bayrağı belirtmek project.assets.json dosyasını silmekle aynıdır.

  • -?|-h|--help

    komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.

  • --interactive

    Komutun durmasına ve kullanıcı girişini veya eylemini beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamak için. .NET Core 3.0 SDK'sı ile kullanılabilir.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Uygulamayla yayımlanan paket kümesini kırpmak için kullanılacak bir veya birden çok hedef bildirimi belirtir. Bildirim dosyası, komutun çıkışınındotnet store bir parçasıdır. Birden çok bildirim belirtmek için her bildirim için bir --manifest seçenek ekleyin.

  • --no-build

    Yayımlamadan önce projeyi oluşturmaz. Ayrıca bayrağı örtük olarak ayarlar --no-restore .

  • --no-dependencies

    Projeden projeye başvuruları yoksayar ve yalnızca kök projeyi geri yükler.

  • --nologo

    Başlangıç başlığını veya telif hakkı iletisini görüntülemez.

  • --no-restore

    Komutu çalıştırırken örtük bir geri yükleme yürütmez.

  • -o|--output <OUTPUT_DIRECTORY>

    Çıkış dizininin yolunu belirtir.

    Belirtilmezse, çerçeveye bağımlı yürütülebilir dosya ve platformlar arası ikili dosyalar için varsayılan olarak [project_file_folder]/bin/[configuration]/[framework]/publish/ olarak ayarlanır. Bağımsız bir yürütülebilir dosya için varsayılan olarak [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ olarak ayarlanır.

    Web projesinde, çıkış klasörü proje klasöründeyse, ardışık dotnet publish komutlar iç içe çıktı klasörleriyle sonuçlanır. Örneğin, proje klasörü myproject ve yayımlama çıkış klasörü myproject/publish ise ve iki kez çalıştırırsanız dotnet publish , ikinci çalıştırma .config ve .json dosyaları gibi içerik dosyalarını myproject/publish/publish içine yerleştirir. Yayımlama klasörlerinin iç içe olmasını önlemek için , doğrudan proje klasörünün altında olmayan bir yayımlama klasörü belirtin veya yayımlama klasörünü projeden hariç tutun. publishoutput adlı bir yayımlama klasörünü dışlamak için aşağıdaki öğeyi .csproj dosyasındaki bir PropertyGroup öğeye ekleyin:

    <DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
    
    • .NET Core 3.x SDK ve üzeri

      Projeyi yayımlarken göreli bir yol belirtirseniz, oluşturulan çıkış dizini proje dosyası konumuna değil geçerli çalışma dizinine göredir.

      Bir çözümü yayımlarken göreli bir yol belirtirseniz, tüm projeler için tüm çıkış geçerli çalışma dizinine göre belirtilen klasöre gider. Yayımlama çıkışının her proje için ayrı klasörlere gitmesini sağlamak için seçeneği yerine --output msbuild PublishDir özelliğini kullanarak göreli bir yol belirtin. Örneğin, dotnet publish -p:PublishDir=.\publish her proje için yayımlama çıktısını proje dosyasını içeren klasörün altındaki bir publish klasöre gönderir.

    • .NET Core 2.x SDK

      Projeyi yayımlarken göreli bir yol belirtirseniz, oluşturulan çıkış dizini geçerli çalışma dizinine değil proje dosyası konumuna göredir.

      Bir çözümü yayımlarken göreli bir yol belirtirseniz, her projenin çıkışı proje dosyası konumuna göre ayrı bir klasöre gider. Çözüm yayımlarken mutlak bir yol belirtirseniz, tüm projeler için tüm yayımlama çıktısı belirtilen klasöre gider.

  • --os <OS>

    Hedef işletim sistemini (OS) belirtir. Bu, sağlanan değerin varsayılan RID ile birleştirildiği Çalışma Zamanı Tanımlayıcısı'nı (RID) ayarlamaya yönelik bir kısaltma söz dizimidir. Örneğin, bir win-x64 makinede belirtilmesi --os linux RID değerini olarak linux-x64ayarlar. Bu seçeneği kullanırsanız, seçeneğini kullanmayın -r|--runtime . .NET 6'dan itibaren kullanılabilir.

  • --sc|--self-contained [true|false]

    Çalışma zamanının hedef makineye yüklenmesi gerekmemesi için .NET çalışma zamanını uygulamanızla yayımlar. Varsayılan değer, true çalışma zamanı tanımlayıcısının belirtilip projenin yürütülebilir bir proje (kitaplık projesi değil) olmasıdır. Daha fazla bilgi için bkz. .NET uygulaması yayımlama ve .NET CLI ile .NET uygulamaları yayımlama.

    Bu seçenek veya falsebelirtilmeden true kullanılıyorsa, varsayılan değer olurtrue. Bu durumda, çözüm veya proje bağımsız değişkenini hemen arkasına --self-containedkoymayın çünkü true veya false bu konumda olması beklenir.

  • --no-self-contained

    ile eşdeğerdir --self-contained false.

  • --source <SOURCE>

    Geri yükleme işlemi sırasında kullanılacak NuGet paket kaynağının URI'si.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Belirli bir çalışma zamanı için uygulamayı yayımlar. Çalışma Zamanı Tanımlayıcılarının (RID) listesi için RID kataloğuna bakın. Daha fazla bilgi için bkz. .NET uygulaması yayımlama ve .NET CLI ile .NET uygulamaları yayımlama. Bu seçeneği kullanıyorsanız veya --no-self-contained seçeneğini de kullanın--self-contained.

  • -v|--verbosity <LEVEL>

    Komutun ayrıntı düzeyini ayarlar. İzin verilen değerler , , m[inimal]n[ormal], d[etailed]ve diag[nostic]değerleridirq[uiet]. Varsayılan değer: minimal. Daha fazla bilgi için bkz. LoggerVerbosity.

  • --use-current-runtime, --ucr [true|false]

    öğesini RuntimeIdentifier makinenizden birine göre taşınabilir RuntimeIdentifier bir platforma ayarlar. Bu, ve gibi bir RuntimeIdentifiergerektiren özelliklerde örtük olarak SelfContainedPublishSelfContainedPublishAotPublishSingleFilegerçekleşir.PublishReadyToRun Özellik false olarak ayarlanırsa, bu örtük çözüm artık gerçekleşmez.

  • --version-suffix <VERSION_SUFFIX>

    Proje dosyasının sürüm alanındaki yıldız (*) yerine geçecek sürüm sonekini tanımlar.

Örnekler

  • Geçerli dizinde proje için çerçeveye bağımlı bir platformlar arası ikili dosyası oluşturun:

    dotnet publish
    

    .NET Core 3.0 SDK'sı ile başlayarak, bu örnek geçerli platform için çerçeveye bağımlı bir yürütülebilir dosya da oluşturur.

  • Belirli bir çalışma zamanı için geçerli dizindeki proje için bağımsız bir yürütülebilir dosya oluşturun:

    dotnet publish --runtime osx.10.11-x64
    

    RID proje dosyasında olmalıdır.

  • Belirli bir platform için geçerli dizindeki proje için çerçeveye bağımlı bir yürütülebilir dosya oluşturun:

    dotnet publish --runtime osx.10.11-x64 --self-contained false
    

    RID proje dosyasında olmalıdır. Bu örnek.NET Core 3.0 SDK ve sonraki sürümleri için geçerlidir.

  • Projeyi belirli bir çalışma zamanı ve hedef çerçeve için geçerli dizinde yayımlayın:

    dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
    
  • Belirtilen proje dosyasını yayımlayın:

    dotnet publish ~/projects/app1/app1.csproj
    
  • Geçerli uygulamayı yayımlayın ancak projeden projeye (P2P) başvurularını geri yüklemeyin; geri yükleme işlemi sırasında yalnızca kök projeyi:

    dotnet publish --no-dependencies
    

Ayrıca bkz.