dotnet pack
Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler
Veri Akışı Adı
dotnet pack
- Kodu bir NuGet paketine paketler.
Özet
dotnet pack [<PROJECT>|<SOLUTION>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--force]
[--include-source] [--include-symbols] [--interactive]
[--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Açıklama
dotnet pack
komutu projeyi oluşturur ve NuGet paketleri oluşturur. Bu komutun sonucu bir NuGet paketidir (yani bir .nupkg dosyası).
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 birsrc
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.
Not
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.
Paketleme işlemi için komutuna dotnet pack
MSBuild özellikleri sağlayabilirsiniz. Daha fazla bilgi için bkz . NuGet paketi hedef özellikleri ve MSBuild Komut Satırı Başvurusu. Örnekler bölümünde, birkaç farklı senaryo için MSBuild -p
anahtarının nasıl kullanılacağı gösterilmektedir.
Not
Web projeleri paketlenemez.
Örtük geri yükleme
, , dotnet publish
ve dotnet pack
gibi dotnet test
dotnet run
dotnet build
dotnet new
geri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığından, 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
.
Komutudotnet restore
, Azure DevOps Services'teki sürekli tümleştirme derlemeleri veya geri yüklemenin ne zaman gerçekleştiğini açıkça denetlemesi gereken derleme sistemleri 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 belgelere dotnet restore
bakın.
Bu komut, uzun biçimde geçirildiğinde (örneğin, --source
) seçenekleri desteklerdotnet restore
. gibi -s
kı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.
Bağımsız değişkenler
PROJECT | SOLUTION
Paketlenmesi gereken proje veya çözüm. Csproj, vbproj veya fsproj dosyasının ya da çözüm dosyasının veya dizinin yoludur. Belirtilmezse, komut geçerli dizinde bir proje veya çözüm dosyası arar.
Seçenekler
--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 . Yapıt Çıktı Düzeni. .NET 8 SDK'sı ile kullanılabilir.
-c|--configuration <CONFIGURATION>
Derleme yapılandırmasını tanımlar. .NET 8 SDK'sı veya daha sonraki bir sürümle geliştiriyorsanız, bu komut TargetFramework veya sonraki bir sürüme
net8.0
ayarlanmış projeler için varsayılan olarak yapılandırmayı kullanırRelease
. Varsayılan derleme yapılandırması,Debug
SDK'nın önceki sürümleri ve önceki hedef çerçeveler içindir. 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 configuration.
--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.
-?|-h|--help
komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırı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. .NET Core 3.0 SDK'sı ile kullanılabilir.
--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.
--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 Blogu: .NET Framework 4.5.1 .NET NuGet Kitaplıkları için Microsoft Güvenlik Güncelleştirmeler Destekler.
--tl:[auto|on|off]
Derleme çıkışı için terminal günlükçüsunun 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 ,
m[inimal]
,n[ormal]
,d[etailed]
vediag[nostic]
değerleridirq[uiet]
. Daha fazla bilgi için bkz. LoggerVerbosity.
--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 veVersionPrefix
özelliklerinin değerlerineVersion
bağlıdır:Değerleri olan özellikler Paket sürümü Hiçbiri 1.0.0
Version
$(Version)
VersionPrefix
Sadece$(VersionPrefix)
VersionSuffix
Sadece1.0.0-$(VersionSuffix)
VersionPrefix
veVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
kullanmak
--version-suffix
istiyorsanız, proje dosyasında değilVersion
belirtinVersionPrefix
. Örneğin, iseVersionPrefix
0.1.2
ve adresinedotnet pack
geçirirseniz--version-suffix rc.1
paket sürümü olacaktır0.1.2-rc.1
.Bir değeri varsa
Version
ve öğesinedotnet pack
geçirirseniz--version-suffix
, için--version-suffix
belirtilen değer yoksayılı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 .csproj dosyasında olduğu gibi
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
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ğiylePackageVersion
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ını (Windows) kullanın:
dotnet pack --runtime win-x64
Projeyi bir .nuspec dosyası kullanarak paketleyin:
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
,
NuspecBasePath
veNuspecProperties
kullanma hakkındaNuspecFile
bilgi için aşağıdaki kaynaklara bakın: