dotnet pack komutu, .NET projelerinin paketlenmesini sağlar.

Bu makale: ✔️ .NET 6 SDK ve sonraki sürümler için geçerlidir

İsim

dotnet pack - Kodu bir NuGet paketine paketler.

Özet

dotnet pack [<PROJECT>|<SOLUTION>|<NUSPEC>|<FILE>]
    [--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
    [--disable-build-servers] [--force] [--include-source] [--include-symbols]
    [--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
    [-o|--output <OUTPUT_DIRECTORY>] [-p|--property:<PROPERTYNAME>=<VALUE>]
    [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
    [--version <VERSION>] [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

Description

dotnet pack komutu projeyi oluşturur ve NuGet paketleri oluşturur. Bu komutun sonucu bir NuGet paketidir (yani bir .nupkg dosyası).

.NET 10'dan başlayarak, .nuspec dosyasını veya dosya tabanlı bir uygulamayı (.cs dosyası) doğrudan bağımsız değişken olarak geçirebilirsiniz. Bir .nuspec dosyası geçirdiğinizde, dotnet pack bir proje dosyası gerektirmeden ve MSBuild çalıştırmadan .nuspec dosyasından paketi oluşturur. Dosya tabanlı bir uygulamayı geçirdiğinizde, dotnet pack bunu proje dosyası olmadan paketler.

Hata ayıklama simgelerini içeren bir paket oluşturmak istiyorsanız iki seçeneğiniz vardır:

  • --include-symbols - semboller paketini oluşturur.
  • --include-source - içinde kaynak dosyaları içeren bir src klasörle semboller paketini oluşturur.

Paketlenmiş projenin NuGet bağımlılıkları .nuspec dosyasına eklenir, bu nedenle paket yüklendiğinde düzgün şekilde çözümlenir. Paketlenmiş projenin diğer projelere başvuruları varsa, diğer projeler pakete dahil değildir. Projeden projeye bağımlılıklarınız varsa şu anda proje başına bir pakete sahip olmanız gerekir.

Varsayılan olarak, dotnet pack önce projeyi oluşturur. Bu davranıştan kaçınmak istiyorsanız, seçeneğini geçirin --no-build . Bu seçenek genellikle kodun daha önce derlenmiş olduğunu bildiğiniz Sürekli Tümleştirme (CI) derleme senaryolarında kullanışlıdır.

Uyarı

Bazı durumlarda örtük derleme gerçekleştirilemez. Bu durum, derleme ve paket hedefleri arasında döngüsel bir bağımlılığı önlemek için ayarlandığında ortaya çıkabilir GeneratePackageOnBuild . Kilitli bir dosya veya başka bir sorun varsa derleme de başarısız olabilir.

Uyarı

Web projeleri paketlenemez.

Örtük geri yükleme

, , dotnet restoreve dotnet newgibi dotnet builddotnet rundotnet testdotnet publishgeri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığından, komutunu çalıştırmanız dotnet pack gerekmez. Örtük geri yüklemeyi devre dışı bırakmak için seçeneğini kullanın --no-restore .

komutu, Azure DevOps Services veya geri yüklemenin ne zaman gerçekleştiğini açıkça denetlemesi gereken derleme sistemlerinde continuous tümleştirme derlemeleri gibi açıkça geri yüklemenin anlamlı olduğu bazı senaryolarda hala kullanışlıdır.

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

Bu komut, uzun biçimde geçirildiğinde (örneğin, dotnet restore) seçenekleri destekler--source. gibi -skısa form seçenekleri desteklenmez.

İş 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 işlemi hala çalışıyorsa indirme durdurulur. Daha fazla bilgi için bkz . Reklam bildirimleri.

Arguments

PROJECT | SOLUTION | NUSPEC | FILE

Paketlenmesi gereken proje, çözüm, .nuspec dosyası veya dosya tabanlı uygulama.

  • PROJECT, veya dosyasının ya da .csproj proje dosyasını içeren bir dizinin yoludur..vbproj.fsproj

  • SOLUTION , bir çözüm dosyasının (.sln veya .slnx uzantısının) veya çözüm dosyasını içeren bir dizinin yoludur.

  • NUSPEC bir dosyanın yoludur .nuspec . .NET 10'dan itibaren kullanılabilir.

  • FILE , dosya tabanlı bir uygulamanın (karşılık gelen proje dosyası olmayan bir C# dosyası) yoludur. .NET 10'dan itibaren kullanılabilir. Daha fazla bilgi için bkz. Dosya tabanlı C# uygulamaları oluşturma.

    Belirtilmezse, komut geçerli dizinde bir proje veya çözüm dosyası arar.

Options

  • --artifacts-path <ARTIFACTS_DIR>

    Yürütülen komuttaki tüm derleme çıktı dosyaları, projeyle ayrılmış olarak belirtilen yolun altındaki alt klasörlere gider. Daha fazla bilgi için bkz. Artifacts Output Layout. Bu seçenek ve sağlanan değer, ve kullanırken dotnet build --no-restoredotnet publish --no-buildbaşka bir komutun çıkışına bağlı olan herhangi bir dotnetdotnet komutta açıkça basamaklandırılmalıdır. .NET 8 SDK'dan itibaren kullanılabilir.

  • -c|--configuration <CONFIGURATION>

    Derleme yapılandırmasını tanımlar. .NET 8 SDK veya sonraki bir sürümle geliştiriyorsanız, TargetFramework değeri net8.0 veya sonraki bir sürüme ayarlanmış projeler için komut varsayılan olarak Release yapılandırmasını kullanır. Varsayılan derleme yapılandırması, SDK'nın önceki sürümleri ve önceki hedef çerçeveler için Debug. Proje ayarlarında veya bu seçeneği kullanarak varsayılanı geçersiz kılabilirsiniz. Daha fazla bilgi için bkz. 'dotnet publish' Release configuration ve 'dotnet pack' uses Release configurationkullanır.

  • --disable-build-servers

    Komutu kalıcı derleme sunucularını yoksaymaya zorlar. Bu seçenek, derleme önbelleğinin tüm kullanımını devre dışı bırakmak için tutarlı bir yol sağlar ve bu da bir derlemeyi sıfırdan zorlar. Önbelleklere güvenmeyen bir derleme, önbellekler herhangi bir nedenle bozulduğunda veya yanlış olduğunda kullanışlıdır. .NET 7 SDK'dan itibaren kullanılabilir.

  • --force

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

  • --include-source

    Çıkış dizinindeki normal NuGet paketlerine ek olarak NuGet paketlerinin hata ayıklama sembollerini içerir. Kaynak dosyaları semboller paketinin src içindeki klasöre eklenir.

  • --include-symbols

    Çıkış dizinindeki normal NuGet paketlerine ek olarak NuGet paketlerinin hata ayıklama sembollerini içerir.

  • --interactive

    Komutun durmasına ve kullanıcı girişini veya eylemini beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamak için.

  • --no-build

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

  • --no-restore

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

  • --nologo

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

  • -o|--output <OUTPUT_DIRECTORY>

    Oluşturulan paketleri belirtilen dizine yerleştirir.

    • .NET 7.0.200 SDK

      7.0.200 SDK'sında, bu komutu bir çözümde çalıştırırken seçeneği belirtirseniz --output , CLI bir hata yayar. Bu bir regresyondur ve .NET SDK'sının 7.0.201 ve sonraki sürümlerinde düzeltilmiştir.

  • -p|--property:<PROPERTYNAME>=<VALUE>

    Bir veya daha fazla MSBuild özelliği ayarlar. Bir .nuspec dosyasını doğrudan paketlerken, özellikler MSBuild özellikleri yerine .nuspec dosyasında belirteç değişimi için kullanılır. Noktalı virgülle sınırlandırılmış birden çok özellik belirtin veya şu seçeneği yineleyerek:

    --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    Daha fazla bilgi için bkz. NuGet paketi hedef özellikleri ve MSBuild komut satırı başvurusu.

  • --runtime <RUNTIME_IDENTIFIER>

    Paketlerinin geri yükleneceği hedef çalışma zamanını belirtir. Çalışma Zamanı Tanımlayıcılarının (RID) listesi için RID kataloğuna bakın.

  • -s|--serviceable

    Paketteki hizmetleştirilebilir bayrağını ayarlar. Daha fazla bilgi için bkz. .NET Blog: .NET Framework 4.5.1 .NET NuGet Kitaplıkları için Microsoft Güvenlik Güncelleştirmelerini Destekler.

  • --tl:[auto|on|off]

    Derleme çıkışı için Terminal Günlükçü'lerinin kullanılıp kullanılmayacağını belirtir. Varsayılan değer, terminal günlüğünü etkinleştirmeden önce ortamı doğrulayan değeridir auto. Ortam denetimi, terminalin modern çıkış özelliklerini kullanabileceğini ve yeni günlükçü'leri etkinleştirmeden önce yeniden yönlendirilmiş standart çıkış kullanmadığını doğrular. on ortam denetimini atlar ve terminal günlüğünü etkinleştirir. off ortam denetimini atlar ve varsayılan konsol günlükçüsüsü kullanır.

    Terminal Günlükçü, geri yükleme aşamasını ve ardından derleme aşamasını gösterir. Her aşamada, şu anda oluşturulan projeler terminalin en altında görünür. Derlemeye alınan her proje, hem şu anda derlenen MSBuild hedefini hem de bu hedefe harcanan süreyi oluşturur. Derleme hakkında daha fazla bilgi edinmek için bu bilgileri arayabilirsiniz. Bir projenin oluşturulması tamamlandığında, şunları yakalayan tek bir "derleme tamamlandı" bölümü yazılır:

    • Oluşturulan projenin adı.
    • Hedef çerçeve (çok hedefliyse).
    • Bu derlemenin durumu.
    • Bu derlemenin birincil çıkışı (köprüdür).
    • Bu proje için oluşturulan tüm tanılamalar.

    Bu seçenek .NET 8'den itibaren kullanılabilir.

  • -v|--verbosity <LEVEL>

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

  • --version <VERSION>

    Oluşturulacak paketin sürümü. Bir .nuspec dosyasını paketlerken, .nuspec dosyasındaki sürüm numarasını geçersiz kılar.

    Uyarı

    .NET 10'dan itibaren kullanılabilir.

  • --version-suffix <VERSION_SUFFIX>

    MSBuild özelliğinin VersionSuffix değerini tanımlar. Bu özelliğin paket sürümü üzerindeki etkisi, aşağıdaki tabloda gösterildiği gibi ve Version özelliklerinin değerlerine VersionPrefix bağlıdır:

    Değerleri olan özellikler Paket sürümü
    Hiç kimse 1.0.0
    Version $(Version)
    VersionPrefix sadece $(VersionPrefix)
    VersionSuffix sadece 1.0.0-$(VersionSuffix)
    VersionPrefix ve VersionSuffix $(VersionPrefix)-$(VersionSuffix)

    kullanmak --version-suffixistiyorsanız, proje dosyasında değil VersionPrefix belirtinVersion. Örneğin, ise VersionPrefix0.1.2 ve adresine --version-suffix rc.1geçirirseniz dotnet pack paket sürümü olacaktır0.1.2-rc.1.

    Bir değeri varsa Version ve öğesine --version-suffixgeçirirsenizdotnet pack, için --version-suffix belirtilen değer yoksayılır.

  • -?|-h|--help

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

Örnekler

  • Projeyi geçerli dizine paketleyin:

    dotnet pack
    
  • Projeyi paketleyin app1 :

    dotnet pack ~/projects/app1/project.csproj
    
  • Projeyi geçerli dizine paketleyin ve sonuçta elde edilen paketleri klasörüne nupkgs yerleştirin:

    dotnet pack --output nupkgs
    
  • Geçerli dizindeki projeyi klasörüne nupkgs paketleyin ve derleme adımını atlayın:

    dotnet pack --no-build --output nupkgs
    
  • Projenin sürüm soneki <VersionSuffix>$(VersionSuffix)</VersionSuffix> dosyasında olduğu gibi yapılandırıldığında, geçerli projeyi paketleyin ve sonuçta elde edilen paket sürümünü verilen sonekle güncelleştirin:

    dotnet pack --version-suffix "ci-1234"
    
  • PAKET sürümünü 2.1.0 MSBuild özelliğiyle PackageVersion olarak ayarlayın:

    dotnet pack -p:PackageVersion=2.1.0
    
  • Projeyi belirli bir hedef çerçeve için paketleyin:

    dotnet pack -p:TargetFrameworks=net45
    
  • Projeyi paketleyin ve geri yükleme işlemi için belirli bir çalışma zamanı (Windows) kullanın:

    dotnet pack --runtime win-x64
    
  • Projeyi bir .nuspec dosyası (MSBuild proje tabanlı yaklaşım) kullanarak paketleyin:

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
    

    , NuspecFileve NuspecBasePathkullanma hakkında NuspecPropertiesbilgi için aşağıdaki kaynaklara bakın:

  • .nuspec dosyasını proje dosyası olmadan (.NET 10 ve üzeri) doğrudan paketleyin:

    dotnet pack MyPackage.nuspec --output ./artifacts
    
    ```dotnetcli
    dotnet pack MyPackage.nuspec --version 1.2.3 --output ./artifacts
    
  • .nuspec dosyasını doğrudan paketleyin ve belirteç değiştirme (.NET 10 ve üzeri) kullanın:

    dotnet pack MyPackage.nuspec --property:Version=1.2.3 --property:Configuration=Release --output ./artifacts