.nuspec başvurusu
Dosya, .nuspec paket meta verilerini içeren bir XML bildirimidir. Bu bildirim hem paketi oluşturmak hem de tüketicilere bilgi sağlamak için kullanılır. Bildirim her zaman bir pakete dahil edilir.
Bu konuda:
- Genel form ve şema
- Değiştirme belirteçleri (yeni bir Visual Studio kullanılır)
- Bağımlılıklar
- Açık derleme başvuruları
- Çerçeve derleme başvuruları
- Derleme dosyalarını dahil
- İçerik dosyalarını dahil
- Örnek nuspec dosyaları
Project türü uyumluluğu
kullanan
.nuspecnuget.exe packSDK stili olmayan projeler için ilepackages.configkullanın.SDK stili projeler (genellikle .NET Core ve SDK özniteliğini kullanan .NET Standard
.nuspecprojeleri) için bir dosya gerekli değildir..nuspec(Paketi.nuspecoluşturmadan önce bir oluşturulur.)veya kullanarak bir paket oluşturuyorsanız, bunun yerine genellikle dosyada bulunan tüm
dotnet.exe packözellikleri proje dosyasına dahil etmekmsbuild pack targetdotnet.exe pack.nuspecöneririz. Ancak, bunun yerine veya kullanarak paketlemek için bir dosya kullanmayıdotnet.exeseçebilirsiniz.msbuild pack targetpaketinden
packages.configpackages.configgeçirilen projeler.nuspeciçin, paketi oluşturmak için bir dosya gerekli değildir. Bunun yerine, msbuild -t:pack kullanın.
Genel form ve şema
Geçerli nuspec.xsd şema dosyası, NuGet GitHub nuspec.xsd
Bu şemada bir .nuspec dosya aşağıdaki genel biçime sahip olur:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Required elements-->
<id></id>
<version></version>
<description></description>
<authors></authors>
<!-- Optional elements -->
<!-- ... -->
</metadata>
<!-- Optional 'files' node -->
</package>
Şemanın net bir görsel gösterimi için şema dosyasını Tasarım Visual Studio'da açın ve XML Şema Gezgini bağlantısına tıklayın. Alternatif olarak, dosyayı kod olarak açın, düzenleyicide sağ tıklayın ve XML Şema Gezginini Göster'i seçin. Her iki şekilde de aşağıdakine benzer bir görünüm elde edebilirsiniz (çoğunlukla genişletilmiş olduğunda):

.nuspec dosyasındaki tüm XML öğesi adları büyük/büyük/büyük harfe duyarlıdır, genel olarak XML için de böyledir. Örneğin, meta veri öğesinin <description> kullanımı doğrudur ve doğru <Description> değildir. Her öğe adı için uygun büyük/büyük/altta belgelenmiştir.
Gerekli meta veri öğeleri
Aşağıdaki öğeler bir paket için en düşük gereksinimler olsa da, geliştiricilerin paketiniz üzerinde sahip olduğu genel deneyimi geliştirmek için isteğe bağlı meta veri öğelerini eklemeyi göz önünde bulundurabilirsiniz.
Bu öğelerin bir öğe içinde görünmesi <metadata> gerekir.
kimlik
Büyük/nuget.org içinde benzersiz olması gereken büyük/nuget.org duyarlı olmayan paket tanımlayıcısı. Kimlikler URL için geçerli olan boşluklar veya karakterler içeremez ve genellikle .NET ad alanı kurallarına uygun olabilir. Rehberlik için bkz. Benzersiz bir paket tanımlayıcısı seçme.
Bir paketi nuget.org alanı id 128 karakterle sınırlıdır.
sürüm
Paketin major.minor.patch desenini takip eden sürümü. Sürüm numaraları, Paket sürümü sürümünde açıklandığı gibi bir yayın öncesi soneki içerebilir.
Bir paketi nuget.org alanı version 64 karakterle sınırlıdır.
açıklama
Kullanıcı arabirimi görüntüsü için paketin açıklaması.
Bir paketi nuget.org alanı description 4000 karakterle sınırlıdır.
Yazar
Paket yazarlarının, nuget.org'da profil adlarını eşleştiren, virgülle ayrılmış bir listesi. Bunlar, NuGet Galerisi'nde nuget.org ve aynı yazarların paketlerine çapraz başvuru yapmak için kullanılır.
Bir paketi nuget.org alanı authors 4000 karakterle sınırlıdır.
İsteğe bağlı meta veri öğeleri
Sahipleri
Önemli
sahipler kullanım dışıdır. Bunun yerine yazarları kullanın.
Uygulamanın profil adlarını kullanan paket oluşturucularının virgülle ayrılmış nuget.org. Bu genellikle ile aynı listedir ve paketi bir authors nuget.org. Bkz. authors
projectUrl
Paketin giriş sayfasının URL'si, genellikle kullanıcı arabiriminde ve kullanıcı arabiriminde nuget.org.
Bir paketi nuget.org alanı projectUrl 4000 karakterle sınırlıdır.
licenseUrl
Önemli
licenseUrl kullanım dışıdır. Bunun yerine lisansı kullanın.
Paketin lisansının URL'si, genellikle kullanıcı adı gibi KULLANıCı nuget.org.
Bir paketi nuget.org alanı licenseUrl 4000 karakterle sınırlıdır.
lisans
4.9.0 ve üzeri NuGet ile desteklenen
SpDX lisans ifadesi veya paket içindeki bir lisans dosyasının yolu, genellikle kullanıcı adı gibi UI'lerde nuget.org. Paketi MIT veya BSD-2-Clause gibi ortak bir lisans altında lisansıyorsanız, ilişkili SPDX lisans tanımlayıcısını kullanın. Örnek:
<license type="expression">MIT</license>
Not
NuGet.org, yalnızca Açık Kaynak Girişimi veya Ücretsiz Yazılım Temeli tarafından onaylanan lisans ifadelerini kabul eder.
Paketiniz birden çok ortak lisans altında lisanslanıyorsa, SPDX ifadesi söz dizimi sürüm 2.0'ı kullanarakbileşik lisans belirtebilirsiniz. Örnek:
<license type="expression">BSD-2-Clause OR MIT</license>
Lisans ifadeleri tarafından desteklenen özel bir lisans kullanırsanız, bir veya dosyasını lisansın .txt.md metniyle paket oluşturabilirsiniz. Örnek:
<package>
<metadata>
...
<license type="file">LICENSE.txt</license>
...
</metadata>
<files>
...
<file src="licenses\LICENSE.txt" target="" />
...
</files>
</package>
Eşdeğer MSBuild için, Lisans ifadesi paketleme veya lisans dosyası' dosyasına göz atabilirsiniz.
NuGet ifadelerinin tam söz dizimi AŞAĞıDA ABNF'de açıklanmıştır.
license-id = <short form license identifier from https://spdx.org/spdx-specification-21-web-version#h.luq9dgcle9mo>
license-exception-id = <short form license exception identifier from https://spdx.org/spdx-specification-21-web-version#h.ruv3yl8g6czd>
simple-expression = license-id / license-id”+”
compound-expression = 1*1(simple-expression /
simple-expression "WITH" license-exception-id /
compound-expression "AND" compound-expression /
compound-expression "OR" compound-expression ) /
"(" compound-expression ")" )
license-expression = 1*1(simple-expression / compound-expression / UNLICENSED)
iconUrl
Önemli
iconUrl kullanım dışıdır. Bunun yerine simgesini kullanın.
Ui görüntüsünde paketin simgesi olarak kullanmak üzere saydam arka planı olan 128x128 görüntüsünün URL'si. Bu öğenin, görüntüyü içeren bir web sayfasının URL'sini değil doğrudan görüntü URL'sini içerdiğine emin olun. Örneğin, kullanıcı adı / depo /raw/ dal / GitHub gibi ham dosya URL'sini kullanarak dosyasından > bir görüntü <><><logo.png. >
Bir paketi nuget.org alanı iconUrl 4000 karakterle sınırlıdır.
Simge
5.3.0 ve üzeri NuGet ile desteklenen
Bu, paket içindeki bir görüntü dosyasının yoludur ve genellikle paket simgesi olarak nuget.org UI'lerde gösterilir. Görüntü dosyası boyutu 1 MB ile sınırlıdır. Desteklenen dosya biçimleri JPEG ve PNG'tir. 128x128 görüntü çözünürlüğü önerilir.
Örneğin, aşağıdakini kullanarak bir paket oluştururken nuspec'inize nuget.exe:
<package>
<metadata>
...
<icon>images\icon.png</icon>
...
</metadata>
<files>
...
<file src="..\icon.png" target="images\" />
...
</files>
</package>
Eşdeğer MSBuild için Bir simge görüntü dosyasını paketleme'ye göz atabilirsiniz.
İpucu
desteklemeen icon kaynaklarla iconUrl geriye dönük uyumluluğu korumak için ve'nin ikisini de icon belirtsiniz. Visual Studio, gelecek icon bir sürümde klasör tabanlı bir kaynaktan gelen paketleri destekleyecektir.
Benioku
NuGet 5.10.0 preview 2 ve üzeri ile destek
Beni oku dosyasını paketlerken, paketin köküne göre paket readme yolunu belirtmek için öğesini kullansanız gerekir. Buna ek olarak, dosyanın pakete dahil olduğundan emin olun. Desteklenen dosya biçimleri yalnızca Markdown (.md ) içerir.
Örneğin, projenize bir beni okuma dosyası paketlemek için nuspec dosyanıza aşağıdakini eklersiniz:
<package>
<metadata>
...
<readme>docs\readme.md</readme>
...
</metadata>
<files>
...
<file src="..\readme.md" target="docs\" />
...
</files>
</package>
Eşdeğer MSBuild için Beni okundu dosyasını paketleme'ye göz atabilirsiniz.
requireLicenseAcceptance
İstemcinin paketi yüklemeden önce tüketiciden paket lisansını kabul etmelerini isteyip istemesi gerekip gerek olmadığını belirten Boole değeri.
developmentDependency
(2.8+) Paketin yalnızca geliştirme bağımlılığı olarak işaretlenir ve bu da paketin diğer paketlere bağımlılık olarak dahil 1. PackageReference (NuGet 4.8+ ) ile bu bayrak, derleme zamanı varlıklarını derlemenin dışında tutacak anlamına da gelir. Bkz. PackageReference için GeliştirmeDependency desteği
Özet
Önemli
summary kullanım dışı. Bunun yerine description kullanın.
Kullanıcı arabirimi görüntüsü için paketin kısa açıklaması. Atlanırsa, kısaltılmış bir sürümü description kullanılır.
Bir paketi nuget.org alanı summary 4000 karakterle sınırlıdır.
releaseNotes
(1,5+) Paketin bu yayında yapılan değişikliklerin açıklaması; genellikle paket açıklamasının yerine uygulamanın Güncelleştirmeler sekmesi Visual Studio Paket Yöneticisi kullanıcı arabiriminde kullanılır.
Bir paketi nuget.org alanı releaseNotes 35.000 karakterle sınırlıdır.
telif hakkı
(1,5+) Paketin telif hakkı ayrıntıları.
Bir paketi nuget.org alanı copyright 4000 karakterle sınırlıdır.
language
Paketin yerel kimlik. Bkz. Yerelleştirilmiş paketler oluşturma.
etiketler
Paketi açıklayan ve arama ve filtreleme aracılığıyla paketlerin keşfedilebilirliğini yardımcı olan, boşlukla ayrılmış etiket ve anahtar sözcükler listesi.
Bir paketi nuget.org alanı tags 4000 karakterle sınırlıdır.
Hizmete
(3.3+) İç NuGet kullanın.
depo
Dört isteğe bağlı öznitelikden oluşan depo meta verileri: type ve urltypeve branchcommiturl. Bu öznitelikler, paketin tek tek dal adı ve / veya paketin içinde yer alan SHA-1 karması kadar ayrıntılı bir şekilde elde etme potansiyeline sahip olan depoyu bu depoyla eşlemeye .nupkg olanak sağlar. Bu, doğrudan bir sürüm denetimi yazılımı tarafından çağrılarak genel kullanıma açık bir URL olmalıdır. Bu, bilgisayar için hazır olduğu için bir html sayfası değildir. Proje sayfasına bağlantı için bunun yerine projectUrl alanını kullanın.
Örnek:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
...
<repository type="git" url="https://github.com/NuGet/NuGet.Client.git" branch="dev" commit="e1c65e4524cd70ee6e22abe33e6cb6ec73938cb3" />
...
</metadata>
</package>
Bir paketi nuget.org, özniteliği 100 karakterle, öznitelik type ise url 4000 karakterle sınırlıdır.
başlık
Bazı kullanıcı arabirimi ekranlarında kullanılmaktadır ve paketin kolay bir başlığı. (nuget.org ve Paket Yöneticisi Visual Studio başlığı gösterme)
Bir paketi nuget.org alanı 256 karakterle sınırlıdır ancak herhangi title bir görüntüleme amacıyla kullanılamaz.
Koleksiyon öğeleri
packageTypes
(3,5+) Geleneksel bağımlılık paketi dışında bir paketin türünü belirten sıfır veya daha fazla öğe koleksiyonu. Her packageType, ad ve sürüm özniteliklerinesahip olur. Bkz. Paket türü ayarlama.
bağımlılıklar
Paket için bağımlılıkları <dependency> belirten sıfır veya daha fazla öğe koleksiyonu. Her bağımlılığın id ,version , include(3.x+) ve exclude (3.x+) öznitelikleri vardır. Aşağıdaki Bağımlılıklar'a bakın.
frameworkAssemblies
(1.2+) Bu paketin gerektirdiği derleme başvurularını .NET Framework sıfır veya daha fazla öğe koleksiyonu. Bu koleksiyon, paketi tüketen projelere başvurular eklendi. Her frameworkAssembly'nin assemblyName vetargetFramework öznitelikleri vardır. Aşağıdaki Çerçeve derleme başvurularını belirtme GAC'ye bakın.
başvurular
(1,5+) Proje başvuruları olarak eklenen, paketin klasöründeki derlemeleri adlandıran sıfır veya lib daha fazla öğe koleksiyonu. Her başvuru bir dosya özniteliğine sahip. <references> ayrıca <group><references> özniteliğine sahip olan ve daha sonra öğeleri içeren bir öğe <reference> içerebilir. Atlanırsa, içinde tüm lib başvurular dahil edilir. Aşağıdaki Açık derleme başvurularını belirtmeye bakın.
contentFiles
(3.3+) Tüketen projeye dahil etmek için içerik dosyalarını tanımlamaya sahip öğeler koleksiyonu. Bu dosyalar, proje sistemi içinde nasıl kullanılmaları gerektiğini açıklayan bir öznitelik kümesiyle belirtilir. Aşağıdaki pakete dahil etmek için dosyaları belirtme'ye bakın.
files
Düğüm, pakete dahil etmek istediğiniz derleme ve içerik dosyalarını belirtmek için , ve altındaki bir alt düğüm olarak <package><files> bir düğüm <metadata><contentFiles><metadata> içerebilir. Ayrıntılar için bu konunun devamlarında Derleme dosyalarını ve İçerik dosyalarını dahil edin'e bakın.
meta veri öznitelikleri
minClientVersion
nuget.exe ve Visual Studio Paket Yöneticisi tarafından zorlanan, bu paketi yük NuGet istemcinin en düşük sürümünü Visual Studio Paket Yöneticisi. Paket, dosyanın istemcinin belirli bir sürümünde eklenen belirli özelliklerine bağlı olduğunda .nuspec NuGet kullanılır. Örneğin özniteliğini kullanan bir developmentDependency paketin için "2.8" belirtmesi minClientVersion gerekir. Benzer şekilde, öğesini kullanan bir contentFiles paket (sonraki bölüme bakın) minClientVersion "3.3" olarak ayarlanıyor. Ayrıca, 2.5'NuGet önceki istemciler bu bayrağı tanımayacakları için, ne olursa olsun paketin yüklemesi her zaman reddeder.
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata minClientVersion="100.0.0.1">
<id>dasdas</id>
<version>2.0.0</version>
<title />
<authors>dsadas</authors>
<owners />
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>My package description.</description>
</metadata>
<files>
<file src="content\one.txt" target="content\one.txt" />
</files>
</package>
Değiştirme belirteçleri
Paket oluştururken, komut dosyanın düğümünde $-sınırlandırılmış belirteçleri bir proje dosyasından veya komutun anahtarından gelen .nuspec<metadata>pack değerlerle -properties değiştirir.
Komut satırda, ile belirteç değerlerini nuget pack -properties <name>=<value>;<name>=<value> belirtirsiniz. Örneğin, ve gibi bir belirteç kullanabilir ve paketleme $owners$ zamanında değerleri aşağıdaki gibi $desc$.nuspec sebilirsiniz:
nuget pack MyProject.csproj -properties
owners=janedoe,harikm,kimo,xiaop;desc="Awesome app logger utility"
Bir projeden değerleri kullanmak için aşağıdaki tabloda açıklanan belirteçleri belirtin (AssemblyInfo, veya gibi Properties dosyasındaki dosyasına AssemblyInfo.csAssemblyInfo.vb başvurur).
Bu belirteçleri kullanmak için yalnızca nuget pack yerine proje dosyasıyla .nuspec çalıştırın. Örneğin, aşağıdaki komut kullanılırken, bir dosyada ve belirteçleri projenin ve $id$$version$.nuspecAssemblyName değerleriyle AssemblyVersion değiştirilir:
nuget pack MyProject.csproj
Genellikle, bir projeniz olduğunda, başlangıçta bu standart belirteçlerden bazılarının .nuspec otomatik olarak dahil olduğu bir kullanılarak nuget spec MyProject.csproj oluşturulur. Ancak, bir proje gerekli öğeler için değerlerden .nuspec eksikse başarısız nuget pack olur. Ayrıca proje değerlerini değiştirirsiniz, paketi oluşturmadan önce yeniden oluşturmayı da emin olun; Bu, paket komutunun anahtarıyla rahatça build yapılabilir.
dışında, proje değerleri komut satırı üzerinde aynı $configuration$ belirteci atanmış olan değerler için kullanılır.
| Belirteç | Değer kaynağı | Değer |
|---|---|---|
| $id$ | Project dosyası | Proje dosyasından AssemblyName (başlık) |
| $version$ | Assemblyınfo | Varsa AssemblyInformationalVersion, aksi takdirde AssemblyVersion |
| $author$ | Assemblyınfo | AssemblyCompany |
| $title$ | Assemblyınfo | AssemblyTitle |
| $description$ | Assemblyınfo | AssemblyDescription |
| $copyright$ | Assemblyınfo | AssemblyCopyright |
| $configuration$ | Derleme DLL'si | Derlemeyi derlemek için kullanılan yapılandırma, varsayılan olarak Hata Ayıklama'dır. Sürüm yapılandırması kullanarak paket oluşturmak için her zaman komut -properties Configuration=Release satırına bakabilirsiniz. |
Belirteçler, derleme dosyalarını ve içerik dosyalarını dahil etmek için yolları çözümlemekiçin de kullanılabilir. Belirteçler, MSBuild özellikleriyle aynı adlara sahiptir ve bu da geçerli derleme yapılandırmasına bağlı olarak dahil edilecek dosyaları seçmeyi mümkün hale sağlar. Örneğin, dosyasında aşağıdaki belirteçleri .nuspec kullanırsanız:
<files>
<file src="bin\$configuration$\$id$.pdb" target="lib\net40" />
</files>
Ayrıca derlemede yapılandırma ile olan bir derleme MSBuild, paket dosyasında sonuçta elde edilen AssemblyNameLoggingLibraryRelease.nuspec satırlar aşağıdaki gibidir:
<files>
<file src="bin\Release\LoggingLibrary.pdb" target="lib\net40" />
</files>
Dependencies öğesi
içindeki <dependencies><metadata> öğesi, üst düzey <dependency> paketin bağlı olduğu diğer paketleri belirleyen herhangi bir sayıda öğe içerir. Her biri için <dependency> öznitelikler aşağıdaki gibidir:
| Öznitelik | Açıklama |
|---|---|
id |
(Gerekli) Bağımlılığın paket kimliği (örneğin, "EntityFramework" ve "NUnit"). Bu, paket sayfasında nuget.org paketin adıdır. |
version |
(Gerekli) Bağımlılık olarak kabul edilebilir sürüm aralığı. Tam söz dizimi için bkz. Paket sürümü uygulama. Kayan sürümler desteklenmiyor. |
| include | Son pakete dahil etmek için bağımlılığı gösteren ekleme/dışlama etiketlerinin virgülle ayrılmış listesi (aşağıya bakın). all varsayılan değerdir. |
| dışlama | Son pakette dışlama bağımlılığını gösteren, ekleme/dışlama etiketlerinin virgülle ayrılmış listesi (aşağıya bakın). Varsayılan build,analyzers değer, üzerine yazıldığı değerdir. Ancak, content/ ContentFiles aşırı yazılamayacak son pakette de örtülü olarak dışlanmış olur. ile belirtilen etiketler exclude ile belirtilenlerden önceliklidir. include Örneğin, include="runtime, compile" exclude="compile" ile include="runtime" aynıdır. |
Bir paketi nuget.org, her bağımlılığın özniteliği 128 karakterle, öznitelik ise idversion 256 karakterle sınırlıdır.
| Ekle/Dışla etiketi | Hedefin etkilenen klasörleri |
|---|---|
| contentFiles | Content |
| çalışma zamanı | Çalışma Zamanı, Kaynaklar ve FrameworkAssemblies |
| derle | Lib |
| derleme | derleme (MSBuild ve hedefler) |
| yerel | yerel |
| yok | Klasör yok |
| tümü | Tüm klasörler |
Örneğin, aşağıdaki satırlar sürüm PackageA 1.1.0 veya sonraki sürümlere ve sürüm PackageB 1.x'e bağımlılıkları gösteriyor.
<dependencies>
<dependency id="PackageA" version="1.1.0" />
<dependency id="PackageB" version="[1,2)" />
</dependencies>
Aşağıdaki satırlar aynı paketlere bağımlılıkları belirtir, ancak ve klasörlerini ve ve klasörlerinin ve klasörlerinin dahil contentFilesbuild etmek için PackageAnativecompilePackageB "
<dependencies>
<dependency id="PackageA" version="1.1.0" include="contentFiles, build" />
<dependency id="PackageB" version="[1,2)" exclude="native, compile" />
</dependencies>
Önemli
kullanarak bir .nuspec projeden nuget spec oluşturulurken, bu projede mevcut olan bağımlılıklar sonuçta elde edilen dosyaya otomatik olarak dahil .nuspec olmaz. Bunun yerine, nuget pack myproject.csproj kullanın ve nuget pack myproject.csproj dosyasını oluşturulan .nupkg dosyasından elde etmek. Bu .nuspec bağımlılıkları içerir.
Bağımlılık grupları
Sürüm 2.0+
Tek bir düz listeye alternatif olarak, bağımlılıklar içindeki öğeler kullanılarak hedef projenin çerçeve profiline <group> göre <dependencies> belirtilebilir.
Her grubun adlı bir özniteliği vardır targetFramework ve sıfır veya daha fazla öğe <dependency> içerir. Hedef çerçeve projenin çerçeve profiliyle uyumlu olduğunda bu bağımlılıklar birlikte yüklenir.
Özniteliği <group> olmayan targetFramework öğesi, bağımlılıkların varsayılan veya geri dönüş listesi olarak kullanılır. Tam çerçeve tanımlayıcıları için bkz. Hedef çerçeveler.
Önemli
Grup biçimi düz bir liste ile kesiştiri olamaz.
Not
klasöründe kullanılan Hedef Çerçeve Bilinen Adı (TFM) biçimi, içinde kullanılan TFM ile karşılaştırıldığında dependency groups farklıdır. ve dosya klasöründe bildirilen hedef çerçevelerin tam eşleşmeleri yoksa, komut uyarı dependencies grouplib/ref.nuspecpackdependencies group
Aşağıdaki örnek, öğesinin farklı varyasyonlarını <group> gösterir:
<dependencies>
<group>
<dependency id="RouteMagic" version="1.1.0" />
</group>
<group targetFramework=".NETFramework4.7.2">
<dependency id="jQuery" version="1.6.2" />
<dependency id="WebActivator" version="1.4.4" />
</group>
<group targetFramework="netcoreapp3.1">
</group>
</dependencies>
Açık derleme başvuruları
öğesi, hedef projenin paket kullanırken başvurması gereken derlemeleri açıkça <references> belirtmek için kullanan projeler tarafından packages.config kullanılır. Açık başvurular genellikle yalnızca tasarım zamanı derlemeleri için kullanılır. Daha fazla bilgi için projeler tarafından başvurulan derlemeleri seçme sayfasına bakın.
Örneğin, aşağıdaki öğe, NuGet ve pakette ek derlemeler olsa bile yalnızca başvurular <references>xunit.dllxunit.extensions.dll eklemesi için aşağıdaki öğeye talimat verir:
<references>
<reference file="xunit.dll" />
<reference file="xunit.extensions.dll" />
</references>
Başvuru grupları
Tek bir düz listeye alternatif olarak, içindeki öğeler kullanılarak hedef projenin çerçeve profiline göre <group> başvurular <references> belirtilebilir.
Her grubun adlı bir özniteliği vardır targetFramework ve sıfır veya daha fazla öğe <reference> içerir. Hedef çerçeve projenin çerçeve profiliyle uyumlu olduğunda bu başvurular projeye eklenir.
Özniteliği <group> olmayan targetFramework öğesi, başvurular için varsayılan veya geri dönüş listesi olarak kullanılır. Tam çerçeve tanımlayıcıları için bkz. Hedef çerçeveler.
Önemli
Grup biçimi düz bir liste ile kesiştiri olamaz.
Aşağıdaki örnek, öğesinin farklı varyasyonlarını <group> gösterir:
<references>
<group>
<reference file="a.dll" />
</group>
<group targetFramework="net45">
<reference file="b45.dll" />
</group>
<group targetFramework="netcore45">
<reference file="bcore45.dll" />
</group>
</references>
Çerçeve derleme başvuruları
Çerçeve derlemeleri, .NET çerçevesinin bir parçası olan ve herhangi bir makine için genel derleme önbelleğinde (GAC) olması gereken derlemelerdir. Bir paket, öğesinde bu derlemeleri tanımerek, projenin böyle başvurulara sahip olması durumunda bir projeye gerekli başvuruların <frameworkAssemblies> eklendiklerini doğrular. Elbette bu tür derlemeler doğrudan pakete dahil değildir.
öğesi, <frameworkAssemblies> her biri aşağıdaki öznitelikleri belirten sıfır veya daha fazla öğe <frameworkAssembly> içerir:
| Öznitelik | Açıklama |
|---|---|
| Assemblyname | (Gerekli) Tam derleme adı. |
| targetFramework | (İsteğe bağlı) Bu başvuru için geçerli olan hedef çerçeveyi belirtir. Atlanırsa, başvuru tüm çerçeveler için geçerli olduğunu gösterir. Tam çerçeve tanımlayıcıları için bkz. Hedef çerçeveler. |
Aşağıdaki örnekte, tüm hedef çerçeveler için bir başvurusu ve yalnızca .NET Framework System.NetSystem.ServiceModel 4.0 için başvurusu gösterir:
<frameworkAssemblies>
<frameworkAssembly assemblyName="System.Net" />
<frameworkAssembly assemblyName="System.ServiceModel" targetFramework="net40" />
</frameworkAssemblies>
Derleme dosyalarını dahil
Paket oluşturmabölümünde açıklanan kuralları izlerseniz, dosyadaki dosyaların listesini açıkça belirtmeniz gerekmez . nuget packKomut, gerekli dosyaları otomatik olarak seçer.
Önemli
bir paket bir projeye yüklendiğinde, NuGet, yerelleştirilmiş uydu derlemeleri oldukları varsayılanlar hariç , bu, otomatik olarak paketin dll 'lerine derleme başvurularını ekler . Bu nedenle, .resources.dll başka bir şekilde temel paket kodu içeren dosyalar için kullanmaktan kaçının.
Bu otomatik davranışı atlamak ve bir pakete hangi dosyaların ekleneceğini açıkça denetlemek için, bir <files> öğeyi bir alt öğesi <package> (ve eşdüzey) olarak yerleştirin ve <metadata> her bir dosyayı ayrı bir <file> öğeyle tanımlayarak. Örnek:
<files>
<file src="bin\Debug\*.dll" target="lib" />
<file src="bin\Debug\*.pdb" target="lib" />
<file src="tools\**\*.*" exclude="**\*.log" />
</files>
NuGet 2. x ve öncesiyle ve kullanan projelerde, packages.config<files> bir paket yüklendiğinde değişmez içerik dosyalarını dahil etmek için de kullanılır. NuGet 3.3 + ve projeler packagereference ile, <contentFiles> bunun yerine öğesi kullanılır. Ayrıntılar için aşağıdaki içerik dosyalarını ekleme bölümüne bakın.
Dosya öğesi öznitelikleri
Her <file> öğe aşağıdaki öznitelikleri belirtir:
| Öznitelik | Açıklama |
|---|---|
| src | Özniteliği tarafından belirtilen Dışlamalar ile ilgili olarak içerilecek dosyanın veya dosyaların konumu exclude . .nuspecMutlak bir yol belirtilmediği takdirde yol dosyayla ilişkilidir. Joker karaktere * izin verilir ve çift joker karakter ** özyinelemeli bir klasör aramasını ifade etmenizi gerektirir. |
| hedef | Kaynak dosyaların yerleştirildiği,,, veya ile başlaması gereken paket içindeki klasörün göreli yolu libcontentbuildtools . Bkz. kural tabanlı çalışma dizininden. nuspec oluşturma. |
| dışlama | Konumdan hariç tutulacak dosyaların veya dosya desenlerinin noktalı virgülle ayrılmış listesi src . Joker karaktere * izin verilir ve çift joker karakter ** özyinelemeli bir klasör aramasını ifade etmenizi gerektirir. |
Örnekler
Tek derleme
Source file:
library.dll
.nuspec entry:
<file src="library.dll" target="lib" />
Packaged result:
lib\library.dll
Hedef çerçeveye özgü tek bütünleştirilmiş kod
Source file:
library.dll
.nuspec entry:
<file src="assemblies\net40\library.dll" target="lib\net40" />
Packaged result:
lib\net40\library.dll
Joker karakter kullanan DLL 'Ler kümesi
Source files:
bin\release\libraryA.dll
bin\release\libraryB.dll
.nuspec entry:
<file src="bin\release\*.dll" target="lib" />
Packaged result:
lib\libraryA.dll
lib\libraryB.dll
Farklı çerçeveler için dll 'Ler
Source files:
lib\net40\library.dll
lib\net20\library.dll
.nuspec entry (using ** recursive search):
<file src="lib\**" target="lib" />
Packaged result:
lib\net40\library.dll
lib\net20\library.dll
Dosyaları dışlama
Source files:
\tools\fileA.bak
\tools\fileB.bak
\tools\fileA.log
\tools\build\fileB.log
.nuspec entries:
<file src="tools\*.*" target="tools" exclude="tools\*.bak" />
<file src="tools\**\*.*" target="tools" exclude="**\*.log" />
Package result:
(no files)
İçerik dosyalarını dahil etme
İçerik dosyaları, bir paketin bir projeye eklemesi gereken sabit dosyalardır. Sabit olması, tüketim projesi tarafından değiştirilmeleri amaçlanmamıştır. Örnek içerik dosyaları şunlardır:
- Kaynak olarak gömülü görüntüler
- Zaten derlenmiş kaynak dosyaları
- Projenin derleme çıktısına dahil olması gereken betikler
- Projeye dahil olması gereken ancak projeye özgü değişikliklere gerek gerektirmeyen paket için yapılandırma dosyaları
İçerik dosyaları, <files> özniteliğinde klasörü belirtilerek öğesini kullanarak bir pakete dahil edilir contenttarget . Ancak, bu tür dosyalar, bir paket bir projeye yüklendiğinde, bunun yerine öğesini kullanarak yok sayılır <contentFiles> .
Tüketen projelerle maksimum uyumluluk için, her iki öğe içinde içerik dosyalarını ideal bir paket belirler.
İçerik dosyaları için Files öğesini kullanma
İçerik dosyaları için yalnızca derleme dosyaları için aynı biçimi kullanın, ancak contenttarget Aşağıdaki örneklerde gösterildiği gibi özniteliğinde temel klasör olarak belirtin.
Temel içerik dosyaları
Source files:
css\mobile\style1.css
css\mobile\style2.css
.nuspec entry:
<file src="css\mobile\*.css" target="content\css\mobile" />
Packaged result:
content\css\mobile\style1.css
content\css\mobile\style2.css
Dizin yapısıyla içerik dosyaları
Source files:
css\mobile\style.css
css\mobile\wp7\style.css
css\browser\style.css
.nuspec entry:
<file src="css\**\*.css" target="content\css" />
Packaged result:
content\css\mobile\style.css
content\css\mobile\wp7\style.css
content\css\browser\style.css
Hedef çerçeveye özgü içerik dosyası
Source file:
css\cool\style.css
.nuspec entry
<file src="css\cool\style.css" target="Content" />
Packaged result:
content\style.css
İçerik dosyası ada sahip bir klasöre kopyalanmış
bu durumda NuGet, içindeki uzantının target içindeki uzantıyla eşleşmediği src ve bu nedenle adın bu bölümünü target bir klasör olarak değerlendirmiş olduğunu görür:
Source file:
images\picture.png
.nuspec entry:
<file src="images\picture.png" target="Content\images\package.icons" />
Packaged result:
content\images\package.icons\picture.png
Uzantısız içerik dosyaları
Uzantısı olmayan dosyaları dahil etmek için, * veya ** joker karakterleri kullanın:
Source file:
flags\installed
.nuspec entry:
<file src="flags\**" target="flags" />
Packaged result:
flags\installed
Derin yolu ve derin hedefi olan içerik dosyaları
bu durumda, kaynak ve hedef eşleşmesi için dosya uzantıları NuGet, hedefin bir klasör değil bir dosya adı olduğunu varsayar:
Source file:
css\cool\style.css
.nuspec entry:
<file src="css\cool\style.css" target="Content\css\cool" />
or:
<file src="css\cool\style.css" target="Content\css\cool\style.css" />
Packaged result:
content\css\cool\style.css
Paketteki bir içerik dosyasını yeniden adlandırma
Source file:
ie\css\style.css
.nuspec entry:
<file src="ie\css\style.css" target="Content\css\ie.css" />
Packaged result:
content\css\ie.css
Dosyaları dışlama
Source file:
docs\*.txt (multiple files)
.nuspec entry:
<file src="docs\*.txt" target="content\docs" exclude="docs\admin.txt" />
or
<file src="*.txt" target="content\docs" exclude="admin.txt;log.txt" />
Packaged result:
All .txt files from docs except admin.txt (first example)
All .txt files from docs except admin.txt and log.txt (second example)
İçerik dosyaları için contentFiles öğesini kullanma
NuGet 4.0 +, packagereference ile
Varsayılan olarak, bir paket içeriği bir klasöre koyar contentFiles (aşağıya bakın) ve nuget pack varsayılan öznitelikleri kullanarak bu klasördeki tüm dosyaları içerir. Bu durumda, ' a bir düğüm eklemek gerekli değildir contentFiles.nuspec .
Hangi dosyaların ekleneceğini denetlemek için, öğesi, <contentFiles><files> tam dosyaları içeren öğelerin bir koleksiyonu olduğunu belirler.
Bu dosyalar, proje sistemi içinde nasıl kullanılması gerektiğini betimleyen bir öznitelikler kümesiyle belirtilir:
| Öznitelik | Açıklama |
|---|---|
| içeriyor | Istenir Özniteliği tarafından belirtilen Dışlamalar ile ilgili olarak içerilecek dosyanın veya dosyaların konumu exclude . contentFilesMutlak bir yol belirtilmediği takdirde yol klasöre göre değişir. Joker karaktere * izin verilir ve çift joker karakter ** özyinelemeli bir klasör aramasını ifade etmenizi gerektirir. |
| dışlama | Konumdan hariç tutulacak dosyaların veya dosya desenlerinin noktalı virgülle ayrılmış listesi src . Joker karaktere * izin verilir ve çift joker karakter ** özyinelemeli bir klasör aramasını ifade etmenizi gerektirir. |
| buildAction | ,,, ContentNoneEmbedded Resource vb. MSBuild için içerik öğesine atanacak yapı eylemi Compile . Varsayılan değer Compile . |
| copyToOutput | İçerik öğelerinin derleme (veya yayımlama) çıkış klasörüne kopyalanıp kopyalanmayacağını gösteren bir Boole değeri. Varsayılan değer false. |
| leştirebilir | İçerik öğelerinin derleme çıkışında tek bir klasöre mi kopyalanacağını (true) veya paketteki klasör yapısını korumayı (false) gösteren bir Boole değeri. Bu bayrak yalnızca copyToOutput bayrağı true olarak ayarlandığında kullanılabilir. Varsayılan değer false. |
bir paket yüklenirken NuGet alt öğelerini <contentFiles> yukarıdan aşağıya doğru uygular. Aynı dosyayla birden çok giriş eşleşiyorsa, tüm girişler uygulanır. Aynı öznitelik için bir çakışma varsa en üstteki girdi alt girişleri geçersiz kılar.
Paket klasörü yapısı
Paket projesi, aşağıdaki kalıbı kullanarak içerik yapısını almalıdır:
/contentFiles/{codeLanguage}/{TxM}/{any?}
codeLanguages,,cs,vbfsanyveya belirli bir$(ProjectLanguage)TxMNuGet desteklediği geçerli bir hedef çerçeve adıdır (bkz.TxM).- Bu söz dizimi sonuna herhangi bir klasör yapısı eklenebilir.
Örnek:
Language- and framework-agnostic:
/contentFiles/any/any/config.xml
net45 content for all languages
/contentFiles/any/net45/config.xml
C#-specific content for net45 and up
/contentFiles/cs/net45/sample.cs
Boş klasörler . , belirli dil birleşimleri ve TxM için içerik sağlamayı devre dışı bırakmak için kullanılabilir. Örneğin:
/contentFiles/vb/any/code.vb
/contentFiles/cs/any/.
Örnek contentFiles bölümü
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
...
<contentFiles>
<!-- Embed image resources -->
<files include="any/any/images/dnf.png" buildAction="EmbeddedResource" />
<files include="any/any/images/ui.png" buildAction="EmbeddedResource" />
<!-- Embed all image resources under contentFiles/cs/ -->
<files include="cs/**/*.png" buildAction="EmbeddedResource" />
<!-- Copy config.xml to the root of the output folder -->
<files include="cs/uap/config/config.xml" buildAction="None" copyToOutput="true" flatten="true" />
<!-- Copy run.cmd to the output folder and keep the directory structure -->
<files include="cs/commands/run.cmd" buildAction="None" copyToOutput="true" flatten="false" />
<!-- Include everything in the scripts folder except exe files -->
<files include="cs/net45/scripts/*" exclude="**/*.exe" buildAction="None" copyToOutput="true" />
</contentFiles>
</metadata>
</package>
Framework başvuru grupları
Sürüm 5.1 + wih PackageReference
Framework başvuruları, WPF veya Windows Forms gibi paylaşılan çerçeveleri temsil eden bir .net Core kavramıdır. Paket, paylaşılan bir çerçeve belirterek, tüm çerçeve bağımlılıklarının başvuru projesine dahil edilmesini sağlar.
Her <group> öğe için bir targetFramework öznitelik ve sıfır veya daha fazla <frameworkReference> öğe gereklidir.
Aşağıdaki örnek, bir .NET Core WPF projesi için oluşturulan bir nuspec gösterir. Çerçeve başvurularını içeren nusö 'lerin birlikte yazılması önerilmediğini unutmayın. Bunun yerine, bunları projeden otomatik olarak çıkarmayacak olan hedefler paketini kullanmayı düşünün.
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<dependencies>
<group targetFramework=".NETCoreApp3.1" />
</dependencies>
<frameworkReferences>
<group targetFramework=".NETCoreApp3.1">
<frameworkReference name="Microsoft.WindowsDesktop.App.WPF" />
</group>
</frameworkReferences>
</metadata>
</package>
Örnek nuspec dosyaları
Bağımlılıklar veya dosyalar belirtmeyen bir basit
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>sample</id>
<version>1.2.3</version>
<authors>Kim Abercrombie, Franck Halmaert</authors>
<description>Sample exists only to show a sample .nuspec file.</description>
<language>en-US</language>
<projectUrl>http://xunit.codeplex.com/</projectUrl>
<license type="expression">MIT</license>
</metadata>
</package>
Bağımlılıkları olan A
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>sample</id>
<version>1.0.0</version>
<authors>Microsoft</authors>
<dependencies>
<dependency id="another-package" version="3.0.0" />
<dependency id="yet-another-package" version="1.0.0" />
</dependencies>
</metadata>
</package>
Dosyaları olan bir
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>routedebugger</id>
<version>1.0.0</version>
<authors>Jay Hamlin</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Route Debugger is a little utility I wrote...</description>
</metadata>
<files>
<file src="bin\Debug\*.dll" target="lib" />
</files>
</package>
Çerçeve derlemeleri olan bir
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>PackageWithGacReferences</id>
<version>1.0</version>
<authors>Author here</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>
A package that has framework assemblyReferences depending
on the target framework.
</description>
<frameworkAssemblies>
<frameworkAssembly assemblyName="System.Web" targetFramework="net40" />
<frameworkAssembly assemblyName="System.Net" targetFramework="net40-client, net40" />
<frameworkAssembly assemblyName="Microsoft.Devices.Sensors" targetFramework="sl4-wp" />
<frameworkAssembly assemblyName="System.Json" targetFramework="sl3" />
</frameworkAssemblies>
</metadata>
</package>
Bu örnekte, belirli proje hedefleri için aşağıdakiler yüklenir:
- . NET4 - >
System.Web,System.Net - . NET4 İstemci Profili ->
System.Net - Silverlight 3 ->
System.Json - WindowsPhone ->
Microsoft.Devices.Sensors