dotnet publish

Bu makale şu şekilde geçerlidir: ✔️ .net Core 2,1 SDK ve sonraki sürümleri

Name

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

Özeti

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>]
    [--self-contained [true|false]] [--no-self-contained]
     [-s|--source <SOURCE>] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet publish -h|--help

Description

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

  • DLL uzantılı 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ı belirten . runtimeconfig. JSON dosyası ve çalışma zamanına yönelik diğer yapılandırma seçenekleri (örneğin, çöp toplama türü).
  • NuGet önbelleğinden çıkış klasörüne kopyalanmış olan uygulamanın bağımlılıkları.

dotnet publishKomutun çıktısı, yürütme için bir barındırma sistemine (örneğin, bir sunucu, PC, Mac, dizüstü bilgisayar) dağıtıma yöneliktir. Uygulamayı dağıtıma hazırlamak için tek resmi olarak desteklenen bir yoldur. Projenin belirttiği dağıtımın 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 CLI ile .NET uygulamalarını yayımlama.

Örtük geri yükleme

,,,, dotnet restore Ve gibi geri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığı için çalıştırmanız gerekmez dotnet new dotnet build dotnet run dotnet test dotnet publish dotnet pack . Örtük geri yüklemeyi devre dışı bırakmak için --no-restore seçeneğini kullanın.

dotnet restoreBu komut, açıkça geri yükleme işleminin, Azure DevOps Services veya derleme sistemlerindeki sürekli tümleştirme yapıları gibi, geri yüklemenin ne zaman gerçekleşeceğini açıkça denetmasının gerektiği bazı senaryolarda de yararlıdır.

NuGet beslemelerini yönetme hakkında daha fazla bilgi için dotnet restore belgelerinebakın.

MSBuild

dotnet publishkomutu, hedefi çağıran MSBuild çağırır Publish . IsPublishable Özelliği false belirli bir proje için olarak ayarlandıysa, Publish hedef çağrılamaz ve dotnet publish komut yalnızca proje üzerinde örtük DotNet restore çalıştırır.

Öğesine geçirilen parametreler dotnet publish MSBuild geçirilir. -cve -o parametreleri Configuration sırasıyla MSBuild ve özelliklerine eşlenir PublishDir .

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

Ayrıca, bir . pubxml dosyasına (.net Core 3,1 SDK sürümünden itibaren kullanılabilir) başvurarak, yayınla ilgili özellikleri de ayarlayabilirsiniz. Örnek:

dotnet publish -p:PublishProfile=FolderProfile

Önceki örnekte, <project_folder> /Properties/publishprofiles klasöründe bulunan folderprofile. pubxml dosyası kullanılmaktadır. Özelliği ayarlarken bir yol ve dosya uzantısı belirtirseniz PublishProfile , bunlar yoksayılır. varsayılan olarak MSBuild özellikler/publishprofiles klasörüne bakar ve pubxml dosya uzantısını varsayar. Uzantısı dahil yolunu ve dosya adını belirtmek için özelliği PublishProfileFullPath yerine özelliği ayarlayın PublishProfile .

aşağıdaki MSBuild özellikler çıktısını değiştirir dotnet publish .

  • PublishReadyToRun

    Uygulama derlemelerini ReadyToRun (R2R) biçimi olarak derler. R2R, bir süre öncesi (AOT) derleme biçimidir. Daha fazla bilgi için bkz. Readytorun görüntüleri. .NET Core 3,0 SDK 'dan beri kullanılabilir.

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

    PublishReadyToRunKomut satırı yerine bir yayımlama profilinde belirtmenizi öneririz.

  • PublishSingleFile

    Uygulamayı platforma özgü bir tek dosya yürütülebilir dosyasına paketler. Tek dosya yayınlama hakkında daha fazla bilgi için bkz. tek dosya paketcisi tasarım belgesi. .NET Core 3,0 SDK 'dan beri kullanılabilir.

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

  • PublishTrimmed

    Bağımsız bir 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. kendi kendine kapsanan dağıtımları ve yürütülebilir dosyaları kırpma. .NET 6 SDK bu yana kullanılabilir.

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

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

İş yükü bildirimi İndirmeleri

Bu komutu çalıştırdığınızda, iş yükleri için reklam bildirimlerinin zaman uyumsuz karşıdan yükleme işlemini başlatır. Bu komut tamamlandığında indirme çalışmaya devam ediyorsa, indirme durdurulur. Daha fazla bilgi için bkz. reklam bildirimleri.

Bağımsız değişkenler

  • PROJECT|SOLUTION

    Yayımlanacak proje veya çözüm.

    • PROJECTbir 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 belirtilmemişse, varsayılan olarak geçerli dizine ayarlanır.

    • SOLUTION , bir çözüm dosyasının (. sln uzantısının) yolu ve dosya adı veya çözüm dosyası içeren bir dizinin yoludur. Dizin belirtilmemişse, varsayılan olarak geçerli dizine ayarlanır. .NET Core 3,0 SDK 'dan beri kullanılabilir.

Seçenekler

  • -a|--arch <ARCHITECTURE>

    Hedef mimariyi belirtir. Bu, belirtilen değerin varsayılan RID ile birleştirileceği çalışma zamanı tanımlayıcısı 'nı (RID)ayarlamaya yönelik bir toplu sözdizimidir. Örneğin, bir win-x64 makinede, --arch x86 RID öğesini olarak belirler win-x86 . Bu seçeneği kullanırsanız, -r|--runtime seçeneğini kullanmayın. .NET 6 Preview 7 ' den beri kullanılabilir.

  • -c|--configuration <CONFIGURATION>

    Yapı yapılandırmasını tanımlar. Çoğu proje için varsayılandır Debug , ancak projenizde derleme yapılandırma ayarlarını geçersiz kılabilirsiniz.

  • -f|--framework <FRAMEWORK>

    Belirtilen hedef çerçeveiçin uygulamayı yayımlar. Hedef çerçeveyi proje dosyasında belirtmeniz gerekir.

  • --force

    Son geri yükleme başarılı olsa bile tüm bağımlılıkların çözülmesini zorlar. Bu bayrağın belirtilmesi, Project. varlıklar. JSON dosyasını silme ile aynıdır.

  • -?|-h|--help

    Komutunun nasıl kullanıla ilgili bir açıklama yazdırır.

  • --interactive

    Komutun Kullanıcı girişini veya eylemini durdurmasına ve beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamaya yönelik. .NET Core 3,0 SDK 'dan beri kullanılabilir.

  • --manifest <PATH_TO_MANIFEST_FILE>

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

  • --no-build

    Yayımlamadan önce projeyi oluşturmaz. Ayrıca bayrağı örtülü 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. .NET Core 3,0 SDK 'dan beri kullanılabilir.

  • --no-restore

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

  • -o|--output <OUTPUT_DIRECTORY>

    Çıkış dizini için yolu belirtir.

    Belirtilmemişse, çerçeveye bağlı bir yürütülebilir dosya ve platformlar arası ikili dosyalar için [project_file_folder]/bin/[Configuration]/[Framework]/Publish/ varsayılan değeri. Bu, kendi içinde bulunan yürütülebilir dosya için [project_file_folder]/bin/[yapılandırma]/[Framework]/[Runtime]/Publish/ varsayılan değerini alır.

    Bir Web projesinde, çıkış klasörü proje klasöründe ise, birbirini izleyen dotnet publish Komutlar iç içe geçmiş çıkış klasörlerine neden olur. Örneğin, proje klasörü projem ise ve yayımlama çıkış klasörü myprojem/Publish ise ve dotnet publish iki kez çalıştırırsanız ikinci çalıştırma, MyProject/Publish/Publish içindeki .config ve . JSON dosyaları gibi içerik dosyalarını koyar. Yayımlama klasörlerinin iç içe geçirilmesi önlemek için, proje klasörünün altında olmayan bir yayımlama klasörü belirtin veya Yayımla klasörünü projeden dışlayın. Publishoutput adlı bir yayımlama klasörünü dışlamak için, PropertyGroup . csproj dosyasındaki bir öğeye aşağıdaki öğeyi ekleyin:

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

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

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

    • .NET Core 2. x SDK

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

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

  • --os <OS>

    Hedef işletim sistemini (OS) belirtir. Bu, belirtilen değerin varsayılan RID ile birleştirileceği çalışma zamanı tanımlayıcısı 'nı (RID)ayarlamaya yönelik bir toplu sözdizimidir. Örneğin, bir win-x64 makinede, --os os RID öğesini olarak belirler os-x64 . Bu seçeneği kullanırsanız, -r|--runtime seçeneğini kullanmayın. .NET 6 Preview 7 ' den beri kullanılabilir.

  • --self-contained [true|false]

    .NET çalışma zamanını uygulamanızla yayımlar, böylece çalışma zamanının hedef makinede yüklü olması gerekmez. Varsayılan olarak, true bir çalışma zamanı tanımlayıcısı belirtilirse ve proje yürütülebilir bir projem ise (kitaplık projesi değil). Daha fazla bilgi için bkz. .net uygulama yayımlama ve .net CLI Ile .NET uygulamaları yayımlama.

    Bu seçenek veya belirtilmeden kullanılırsa, true false varsayılan olur true . Bu durumda, çözüm veya proje bağımsız değişkenini hemen sonra yerleştirmeyin --self-contained , çünkü true veya false Bu konumda beklenmez.

  • --no-self-contained

    İle eşdeğerdir --self-contained false . .NET Core 3,0 SDK 'dan beri kullanılabilir.

  • --source <SOURCE>

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

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Uygulamayı belirli bir çalışma zamanı için yayımlar. Çalışma zamanı tanımlayıcıları (RID 'Ler) listesi için bkz. RID kataloğu. Daha fazla bilgi için bkz. .net uygulama yayımlama ve .net CLI Ile .NET uygulamaları yayımlama. Bu seçeneği kullanırsanız, --self-contained veya --no-self-contained de kullanın.

  • -v|--verbosity <LEVEL>

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

  • --version-suffix <VERSION_SUFFIX>

    Proje dosyasının sürüm alanındaki yıldız işaretini () değiştirecek olan sürüm sonekini tanımlar * .

Örnekler

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

    dotnet publish
    

    .NET Core 3,0 SDK ile başlayarak bu örnek ayrıca geçerli platform için çerçeveye bağlı bir yürütülebilir dosya oluşturur.

  • Belirli bir çalışma zamanı için geçerli dizindeki proje için kendi kendine içerilen 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ğlı 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ımla:

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

    dotnet publish --no-dependencies
    

Ayrıca bkz.