.nuspec başvurusu
.nuspec
Dosya, 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 eklenir.
Bu konuda:
- Genel form ve şema
- Değiştirme belirteçleri (Visual Studio projesiyle kullanıldığında)
- 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ı
kullanan
.nuspec
SDK stili olmayan projeler için ilenuget.exe pack
kullanınpackages.config
..nuspec
SDK stili projeler (genellikle SDK özniteliğini kullanan .NET Core ve .NET Standard projeleri) için paketler oluşturmak için dosya gerekmez. (Paketi oluşturduğunuzda bir.nuspec
oluşturulduğunu unutmayın.)veya kullanarak
dotnet.exe pack
bir paket oluşturuyorsanız, bunun yerine genellikle dosyadaki.nuspec
tüm özellikleri proje dosyasına eklemenizimsbuild pack target
öneririz. Ancak, veyamsbuild pack target
kullanarakdotnet.exe
paketlemek için bir.nuspec
dosya kullanmayı seçebilirsiniz.'den
packages.config
PackageReference'a geçirilen projelerde, paketi oluşturmak için bir.nuspec
dosya gerekmez. Bunun yerine msbuild -t:pack kullanın.
NuGet nuspec.xsd
GitHub deposunda bir şema dosyası bulunabilir.
Bu dosyanın yalnızca bir .nuspec
dosya için en son şemayı temsil ettiğini unutmayın.
Resmi olarak yayımlanmış sürüm yoktur ve bu dosyanın herhangi bir sürümü belirli bir NuGet sürümüne karşılık gelir.
Bu şemada, bir .nuspec
dosya aşağıdaki genel forma sahiptir:
<?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, Visual Studio'daki şema dosyasını Tasarım modunda açın ve XML Şema Gezgini bağlantısına tıklayın. Alternatif olarak, dosyayı kod olarak açın, düzenleyiciye 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 edersiniz (çoğunlukla genişletildiğinde):
.nuspec dosyasındaki tüm XML öğesi adları, genel olarak XML için olduğu gibi büyük/küçük harfe duyarlıdır. Örneğin, meta veri öğesinin <description>
kullanılması doğrudur ve <Description>
doğru değildir. Her öğe adı için uygun büyük/küçük harf aşağıda belgelenmiştir.
Önemli
.nuspec
Dosya bir şemaya ()xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
başvuru içerse de, NuGet-Team otomatik şema doğrulaması için kullanılabilecek bir şema dosyasını yayımlamadı.
Aşağıdaki öğeler bir paket için en düşük gereksinimler olsa da, geliştiricilerin paketinizle ilgili genel deneyimini geliştirmek için isteğe bağlı meta veri öğelerini eklemeyi düşünmelisiniz.
Bu öğeler bir <metadata>
öğenin içinde görünmelidir.
Nuget.org veya paketin bulunduğu galeride benzersiz olması gereken büyük/küçük harfe duyarlı olmayan paket tanımlayıcısı. Kimlikler, URL için geçerli olmayan boşluklar veya karakterler içermeyebilir ve genellikle .NET ad alanı kurallarına uyar. Yönergeler için bkz . Benzersiz paket tanımlayıcısı seçme.
Paketi nuget.org karşıya yüklerken, id
alan 128 karakterle sınırlıdır.
major.minor.patch desenini izleyen paketin sürümü. Sürüm numaraları, Paket sürümü oluşturma bölümünde açıklandığı gibi bir yayın öncesi son eki içerebilir.
Paketi nuget.org yüklerken, version
alan 64 karakterle sınırlıdır.
Kullanıcı arabirimi görüntüleme paketinin açıklaması.
Paketi nuget.org yüklerken, description
alan 4000 karakterle sınırlıdır.
Paket yazarlarının virgülle ayrılmış listesi.
authors
paket nuget.org yüklenirken nuspec'ten ve owners
değerleri yoksayılır. nuget.org paket sahipliğini ayarlamak için bkz. nuget.org'de paket sahiplerini yönetme.
Önemli
sahipleri kullanım dışı bırakıldı. Bunun yerine yazarları kullanın.
Paket sahiplerinin virgülle ayrılmış listesi.
owners
paketi nuget.org yüklenirken nuspec'ten gelen yok sayılır. nuget.org paket sahipliğini ayarlamak için bkz. nuget.org'da paket sahiplerini yönetme.
Paketin giriş sayfasının URL'si, genellikle kullanıcı arabiriminde ve nuget.org görüntülenir.
Paketi nuget.org yüklerken, projectUrl
alan 4000 karakterle sınırlıdır.
Önemli
licenseUrl kullanım dışı bırakıldı. Bunun yerine lisans kullanın.
Genellikle nuget.org gibi UI'lerde gösterilen paket lisansının URL'si.
Paketi nuget.org yüklerken, licenseUrl
alan 4000 karakterle sınırlıdır.
NuGet 4.9.0 ve üzeri ile desteklenir
SpDX lisans ifadesi veya paket içindeki bir lisans dosyasının yolu; genellikle nuget.org gibi UI'lerde gösterilir. Paketi MIT veya BSD-2-Clause gibi ortak bir lisans kapsamında lisanslarsanız, ilişkili SPDX lisans tanımlayıcısını kullanın. Örneğin:
<license type="expression">MIT</license>
Not
NuGet.org yalnızca Açık Kaynak Girişimi veya Free Software Foundation tarafından onaylanan lisans ifadelerini kabul eder.
Paketiniz birden çok ortak lisans kapsamında lisanslanmışsa SPDX ifade söz dizimi sürüm 2.0'ı kullanarak bileşik lisans belirtebilirsiniz. Örneğin:
<license type="expression">BSD-2-Clause OR MIT</license>
Lisans ifadeleri tarafından desteklenmeyen bir özel lisans kullanıyorsanız, bir veya .md
dosyasını lisansın metniyle paketleyebilirsiniz.txt
. Örneğin:
<package>
<metadata>
...
<license type="file">LICENSE.txt</license>
...
</metadata>
<files>
...
<file src="licenses\LICENSE.txt" target="" />
...
</files>
</package>
MSBuild eşdeğeri için Lisans ifadesini veya lisans dosyasını paketleme bölümüne bakın.
NuGet'in lisans 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)
Önemli
iconUrl kullanım dışı bırakıldı. Bunun yerine simgesini kullanın.
Kullanıcı arabirimi ekranında paketin simgesi olarak kullanılacak saydamlık arka planına sahip 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ğinden emin olun. Örneğin, GitHub'dan bir görüntü kullanmak için kullanıcı adı/depo>/ham</dal>/<<logo.png> gibi https://github.com/<ham dosya URL'sini kullanın.>
Paketi nuget.org yüklerken, iconUrl
alan 4000 karakterle sınırlıdır.
NuGet 5.3.0 ve üzeri ile desteklenir
Genellikle paket simgesi olarak nuget.org gibi UI'lerde gösterilen paket içindeki bir görüntü dosyasının yoludur. Görüntü dosyası boyutu 1 MB ile sınırlıdır. Desteklenen dosya biçimleri JPEG ve PNG'dir. 128x128 görüntü çözünürlüğü öneririz.
Örneğin, nuget.exe kullanarak paket oluştururken nuspec'inize aşağıdakileri ekleyebilirsiniz:
<package>
<metadata>
...
<icon>images\icon.png</icon>
...
</metadata>
<files>
...
<file src="..\icon.png" target="images\" />
...
</files>
</package>
MSBuild eşdeğeri için Simge görüntü dosyasını paketleme bölümüne bakın.
İpucu
henüz desteklemeyen icon
istemciler ve kaynaklarla geriye dönük uyumluluğu korumak için hem hem iconUrl
de icon
değerini belirtin. Visual Studio, klasör tabanlı bir kaynaktan gelen paketleri destekler icon
.
NuGet 5.10.0 önizleme 2 ve üzeri ile desteklenir
Benioku dosyasını paketlerken, paketin readme
köküne göre paket yolunu belirtmek için öğesini kullanmanız gerekir. Buna ek olarak, dosyanın pakete eklendiğinden emin olmanız gerekir. Desteklenen dosya biçimleri yalnızca Markdown (.md) içerir.
Örneğin, projenizle bir benioku dosyasını paketlemek için nuspec'inize aşağıdakileri ekleyebilirsiniz:
<package>
<metadata>
...
<readme>docs\readme.md</readme>
...
</metadata>
<files>
...
<file src="..\readme.md" target="docs\" />
...
</files>
</package>
MSBuild eşdeğeri için Benioku dosyasını paketleme bölümüne bakın.
İstemcinin paketi yüklemeden önce tüketiciden paket lisansını kabul etmesi isteyip istemediğinizi belirten boole değeri.
(2,8+) Paketin yalnızca geliştirme bağımlılığı olarak işaretlenip işaretlenmediğini belirten boole değeri, paketin diğer paketlere bağımlılık olarak eklenmesini önler. PackageReference (NuGet 4.8+) ile bu bayrak, derleme zamanı varlıklarını derlemenin dışında tutacağı anlamına da gelir. Bkz . PackageReference için DevelopmentDependency desteği
Önemli
summary
kullanım dışı bırakılıyor. Bunun yerine description
kullanın.
Kullanıcı arabirimi görüntüleme paketinin kısa bir açıklaması. Atlanırsa, kesilmiş sürümü description
kullanılır.
Paketi nuget.org yüklerken, summary
alan 4000 karakterle sınırlıdır.
(1,5+) Paketin bu sürümünde yapılan değişikliklerin açıklaması, genellikle paket açıklaması yerine Visual Studio Paket Yöneticisi Güncelleştirmeler sekmesi gibi kullanıcı arabiriminde kullanılır.
Paketi nuget.org yüklerken, releaseNotes
alan 35.000 karakterle sınırlıdır.
(1,5+) Paket için telif hakkı ayrıntıları.
Paketi nuget.org yüklerken, copyright
alan 4000 karakterle sınırlıdır.
Paketin yerel ayar kimliği. Bkz. Yerelleştirilmiş paketler oluşturma.
Paketi açıklayan ve arama ve filtreleme yoluyla paketlerin bulunabilirliğine yardımcı olan, boşlukla ayrılmış etiketler ve anahtar sözcükler listesi.
Paketi nuget.org yüklerken, tags
alan 4000 karakterle sınırlıdır.
(3,3+) Yalnızca iç NuGet kullanımı için.
Dört isteğe bağlı öznitelik içeren depo meta verileri: type
ve url
(4.0+) ve commit
branch
(4.6+). Bu öznitelikler, öğesini, onu oluşturan depoyla eşlemenize .nupkg
olanak sağlar ve tek tek dal adı ve / veya paketi oluşturan SHA-1 karması kadar ayrıntılı bilgi alma potansiyeli sunar. Bu, bir sürüm denetimi yazılımı tarafından doğrudan çağrılabilen genel kullanıma açık bir URL olmalıdır. Bu, bilgisayar için tasarlandığı için bir html sayfası olmamalıdır. Proje sayfasına bağlanmak için bunun yerine alanını kullanın projectUrl
.
Örneğin:
<?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>
Paketi nuget.org'a yüklerken, type
öznitelik 100 karakterle ve url
öznitelik 4000 karakterle sınırlıdır.
Bazı kullanıcı arabirimi ekranlarında kullanılabilecek paketin insan dostu başlığı. (nuget.org ve Visual Studio'daki Paket Yöneticisi başlığı göstermiyor)
Bir paketi nuget.org'a yüklerken, title
alan 256 karakterle sınırlıdır, ancak herhangi bir görüntüleme amacıyla kullanılmaz.
(3,5+) Geleneksel bağımlılık paketi dışında bir paket türünü belirten sıfır veya daha fazla <packageType>
öğeden oluşan bir koleksiyon. Her packageType'ın ad ve sürüm öznitelikleri vardır. Bkz . Paket türünü ayarlama.
Paket için bağımlılıkları belirten sıfır veya daha fazla <dependency>
öğeden oluşan bir koleksiyon. Her bağımlılığın id, version, include (3.x+) ve exclude (3.x+) öznitelikleri vardır. Aşağıdaki Bağımlılıklar bölümüne bakın.
(1,2+) Bu paketin gerektirdiği .NET Framework derleme başvurularını tanımlayan, paketi kullanan projelere başvuru eklenmesini sağlayan sıfır veya daha fazla <frameworkAssembly>
öğeden oluşan bir koleksiyon. Her frameworkAssembly,assemblyName ve targetFramework özniteliklerine sahiptir. Aşağıdaki GaC çerçeve derleme başvurularını belirtme bölümüne bakın.
(1,5+) Paketin lib
klasöründe proje başvurusu olarak eklenen derlemeleri adlandıran sıfır veya daha fazla <reference>
öğe koleksiyonu. Her başvuru bir dosya özniteliğine sahiptir. <references>
daha sonra öğeleri içeren <group>
targetFramework özniteliğine sahip bir öğe de içerebilir<reference>
. Atlanırsa içindeki tüm başvurular lib
eklenir. Aşağıdaki Açık derleme başvurularını belirtme bölümüne bakın.
(3,3+) Tüketen projeye eklenecek içerik dosyalarını tanımlayan öğeler koleksiyonu <files>
. Bu dosyalar, proje sisteminde nasıl kullanılmaları gerektiğini açıklayan bir öznitelik kümesiyle belirtilir. Aşağıdaki pakete eklenecek dosyaları belirtme bölümüne bakın.
Düğüm, <package>
paketine hangi derleme ve içerik dosyalarının dahilleneceğini belirtmek için <metadata>
ile eşdüzey bir düğüm ve altında <metadata>
bir <contentFiles>
alt öğe içerebilir<files>
. Ayrıntılar için bu konunun devamında Derleme dosyalarını dahil ve İçerik dosyalarını dahil edin bölümüne bakın.
NuGet istemcisinin, nuget.exe ve Visual Studio Paket Yöneticisi tarafından zorlanan, bu paketi yükleyebilen en düşük sürümünü belirtir. Bu, paket dosyanın NuGet istemcisinin belirli bir sürümüne .nuspec
eklenen belirli özelliklerine bağlı olduğunda kullanılır. Örneğin, özniteliğini developmentDependency
kullanan bir paket için minClientVersion
"2.8" belirtmelidir. Benzer şekilde, öğesini kullanan contentFiles
bir paket (sonraki bölüme bakın) "3.3" olarak ayarlanmalıdır minClientVersion
. Ayrıca, 2.5'in öncesinde NuGet istemcileri bu bayrağı tanımadığından, ne minClientVersion
içerse de paketi yüklemeyi her zaman reddettiklerini unutmayın.
<?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>
Paket oluştururken, komut dosyanın ve düğümlerindeki .nuspec
$-delimited belirteçlerini bir proje dosyasından veya pack
komutun -properties
anahtarından gelen değerlerle değiştirir.<files>
<metadata>
nuget pack
Komut satırında, ile nuget pack -properties <name>=<value>;<name>=<value>
belirteç değerlerini belirtirsiniz. Örneğin, ve $desc$
.nuspec
gibi $owners$
bir belirteç kullanabilir ve paketleme zamanındaki değerleri aşağıdaki gibi sağlayabilirsiniz:
nuget pack MyProject.csproj -properties
owners=janedoe,harikm,kimo,xiaop;desc="Awesome app logger utility"
Bir projedeki değerleri kullanmak için aşağıdaki tabloda açıklanan belirteçleri belirtin (AssemblyInfo, veya AssemblyInfo.vb
gibi AssemblyInfo.cs
dosyasındaki Properties
dosyaya başvurur).
Bu belirteçleri kullanmak için yalnızca .nuspec
yerine proje dosyasıyla komutunu çalıştırınnuget pack
. Örneğin, aşağıdaki komutu kullanırken, $id$
bir .nuspec
dosyadaki ve $version$
belirteçleri projenin AssemblyName
ve AssemblyVersion
değerleriyle değiştirilir:
nuget pack MyProject.csproj
Genellikle, bir projeniz olduğunda, başlangıçta nuget spec MyProject.csproj
bu standart belirteçlerden bazılarını otomatik olarak içeren öğesini oluşturursunuz.nuspec
. Ancak, bir proje gerekli .nuspec
öğeler için değerlerden yoksunsa başarısız nuget pack
olur. Ayrıca, proje değerlerini değiştirirseniz paketi oluşturmadan önce yeniden derlemeyi unutmayın; bu, paket komutunun build
anahtarıyla rahatça yapılabilir.
dışında $configuration$
, projedeki değerler, komut satırında aynı belirteç için atanan herhangi bir tercihe göre kullanılır.
Belirteç | Değer kaynağı | Değer |
---|---|---|
$id$ | Proje dosyası | Proje dosyasından AssemblyName (başlık) |
$version$ | AssemblyInfo | Varsa AssemblyInformationalVersion, aksi takdirde AssemblyVersion |
$author$ | AssemblyInfo | AssemblyCompany |
$title$ | AssemblyInfo | AssemblyTitle |
$description$ | AssemblyInfo | AssemblyDescription |
$copyright$ | AssemblyInfo | AssemblyCopyright |
$configuration$ | Derleme DLL'i | Derlemeyi derlemek için kullanılan yapılandırma, hata ayıklama olarak varsayılan olarak kullanılır. Yayın yapılandırması kullanarak bir paket oluşturmak için her zaman komut satırında kullandığınızı -properties Configuration=Release unutmayın. |
Belirteçler, derleme dosyalarını ve içerik dosyalarını eklediğinizde yolları çözümlemek için de kullanılabilir. Belirteçler MSBuild özellikleriyle aynı adlara sahip olduğundan, geçerli derleme yapılandırmasına bağlı olarak dahil edilecek dosyaları seçebilirsiniz. Ö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 MSBuild'deki yapılandırmayla birlikte Release
olan AssemblyName
LoggingLibrary
bir derleme oluşturursunuz; paketteki dosyada .nuspec
elde edilen satırlar aşağıdaki gibidir:
<files>
<file src="bin\Release\LoggingLibrary.pdb" target="lib\net40" />
</files>
içindeki <dependencies>
<metadata>
öğesi, en üst düzey paketin <dependency>
bağımlı olduğu diğer paketleri tanımlayan herhangi bir sayıda öğe içerir. Her <dependency>
birinin öznitelikleri aşağıdaki gibidir:
Öznitelik | Açıklama |
---|---|
id |
(Gerekli) Bir paket sayfasında nuget.org paketin adı olan "EntityFramework" ve "NUnit" gibi bağımlılığın paket kimliği. |
version |
(Gerekli) Bağımlılık olarak kabul edilebilir sürüm aralığı. Tam söz dizimi için bkz . Paket sürümü oluşturma . Kayan sürümler desteklenmez. |
ekle | Son pakete eklenecek bağımlılığı gösteren, ekleme/hariç tutma etiketlerinin virgülle ayrılmış listesi (aşağıya bakın). Varsayılan değer şudur: all . |
dışlama | Son pakette hariç tutulacak bağımlılığı gösteren, ekleme/hariç tutma etiketlerinin virgülle ayrılmış listesi (aşağıya bakın). Varsayılan değer, build,analyzers üzerine yazılabilir. Ancak content/ ContentFiles , aşırı yazılamayan son pakette örtük olarak dışlanır. ile belirtilen etiketler ile exclude include belirtilenlerden önceliklidir. Örneğin include="runtime, compile" exclude="compile" ile include="runtime" aynıdır. |
Bir paketi nuget.org karşıya yüklerken, her bağımlılığın id
özniteliği 128 karakterle ve version
öznitelik 256 karakterle sınırlıdır.
Etiketi dahil et/hariç tut | Hedefin etkilenen klasörleri |
---|---|
contentFiles | Content |
çalışma zamanı | Çalışma Zamanı, Kaynaklar ve FrameworkAssemblies |
derle | Lib |
derleme | build (MSBuild props ve targets) |
yerel | yerel |
yok | Klasör yok |
tümü | Tüm klasörler |
Örneğin, aşağıdaki satırlar sürüm 1.1.0 veya üzeri ile PackageB
sürüm 1.x'e PackageA
bağımlılıkları gösterir.
<dependencies>
<dependency id="PackageA" version="1.1.0" />
<dependency id="PackageB" version="[1,2)" />
</dependencies>
Aşağıdaki satırlar aynı paketlerde bağımlılıkları gösterir, ancak ve klasörlerini ve ve klasörleri PackageB
PackageA
dışında compile
native
her şeyi dahil contentFiles
build
etmek için belirtin"
<dependencies>
<dependency id="PackageA" version="1.1.0" include="contentFiles, build" />
<dependency id="PackageB" version="[1,2)" exclude="native, compile" />
</dependencies>
Önemli
kullanarak nuget spec
bir projeden oluştururken.nuspec
, bu projede var olan bağımlılıklar otomatik olarak sonuçta .nuspec
elde edilen dosyaya eklenmez. Bunun yerine kullanın nuget pack myproject.csproj
ve oluşturulan .nupkg dosyasının içinden .nuspec dosyasını alın. Bu .nuspec bağımlılıkları içerir.
Sürüm 2.0+
Tek bir düz listeye alternatif olarak, bağımlılıklar içindeki <dependencies>
öğeler kullanılarak <group>
hedef projenin çerçeve profiline göre belirtilebilir.
Her grubun adlı targetFramework
bir özniteliği vardır ve sıfır veya daha fazla <dependency>
öğe içerir. Hedef çerçeve projenin çerçeve profiliyle uyumlu olduğunda bu bağımlılıklar birlikte yüklenir.
<group>
Özniteliği 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 listeyle karıştırılamaz.
Not
klasöründe kullanılan Hedef Çerçeve Takma Adı'nın (TFM) biçimi, içinde lib/ref
dependency groups
kullanılan TFM ile karşılaştırıldığında farklıdır. ve lib/ref
.nuspec
dosyasında bildirilen dependencies group
hedef çerçeveler tam eşleşmelere pack
sahip değilse, komut NuGet Uyarısı NU5128'i tetikler.
Aşağıdaki örnek, öğesinin <group>
farklı çeşitlemelerini 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>
<references>
öğesi, paketi kullanırken hedef projenin başvurması gereken derlemeleri açıkça belirtmek için kullanan packages.config
projeler tarafından 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şvuruda bulunan derlemeleri seçme sayfasına bakın.
Örneğin, aşağıdaki <references>
öğe NuGet'e yalnızca xunit.dll
ve xunit.extensions.dll
pakette ek derlemeler olsa bile başvuru eklemesini sağlar:
<references>
<reference file="xunit.dll" />
<reference file="xunit.extensions.dll" />
</references>
Tek bir düz listeye alternatif olarak, içindeki öğeler <references>
kullanılarak <group>
hedef projenin çerçeve profiline göre başvurular belirtilebilir.
Her grubun adlı targetFramework
bir özniteliği vardır ve sıfır veya daha fazla <reference>
öğe içerir. Hedef çerçeve projenin çerçeve profiliyle uyumlu olduğunda bu başvurular projeye eklenir.
<group>
Özniteliği olmayan targetFramework
öğe, başvuruları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 listeyle karıştırılamaz.
Aşağıdaki örnek, öğesinin <group>
farklı çeşitlemelerini 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 derlemeleri, .NET çerçevesinin parçası olan ve belirli bir makine için genel derleme önbelleğinde (GAC) bulunması gereken derlemelerdir. Bir paket, öğesi içindeki <frameworkAssemblies>
bu derlemeleri tanımlayarak, projenin bu tür başvurulara sahip olmaması durumunda bir projeye gerekli başvuruların eklenmesini sağlayabilir. Bu tür derlemeler elbette bir pakete doğrudan dahil değildir.
<frameworkAssemblies>
öğesi, her biri aşağıdaki öznitelikleri belirten sıfır veya daha fazla <frameworkAssembly>
öğe içerir:
Öznitelik | Açıklama |
---|---|
assemblyName | (Gerekli) Tam derleme adı. |
targetFramework | (İsteğe bağlı) Bu başvurunun uygulandığı hedef çerçeveyi belirtir. Atlanırsa, başvurunun 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şvuru System.Net
ve yalnızca .NET Framework 4.0 için başvuru System.ServiceModel
gösterilmektedir:
<frameworkAssemblies>
<frameworkAssembly assemblyName="System.Net" />
<frameworkAssembly assemblyName="System.ServiceModel" targetFramework="net40" />
</frameworkAssemblies>
Paket Oluşturma bölümünde açıklanan kuralları izlerseniz, dosyadaki .nuspec
dosyaların listesini açıkça belirtmeniz gerekmez. nuget pack
komutu gerekli dosyaları otomatik olarak alır.
Önemli
Bir paket projeye yüklendiğinde NuGet, yerelleştirilmiş uydu derlemeleri olduğu varsayıldığından adlandırılmış .resources.dll
olanlar hariç olmak üzere paketin DLL'lerine otomatik olarak derleme başvuruları ekler. Bu nedenle, aksi takdirde temel paket kodu içeren dosyalar için kullanmaktan .resources.dll
kaçının.
Bu otomatik davranışı atlamak ve bir pakete hangi dosyaların dahil olduğunu açıkça denetlemek için, bir <files>
öğeyi öğesini öğesinin <package>
alt öğesi (ve eşdüzey öğesi <metadata>
) olarak yerleştirin ve her dosyayı ayrı <file>
bir öğeyle tanımlayın. Örneğin:
<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 önceki sürümleriyle ve kullanan packages.config
<files>
projelerle, bir paket yüklendiğinde sabit içerik dosyalarını eklemek için öğesi de kullanılır. NuGet 3.3+ ve PackageReference projeleriyle bunun <contentFiles>
yerine öğesi kullanılır. Ayrıntılar için aşağıdaki İçerik dosyalarını dahil edin bölümüne bakın.
Her <file>
öğe aşağıdaki öznitelikleri belirtir:
Öznitelik | Açıklama |
---|---|
Src | Özniteliği tarafından exclude belirtilen dışlamalara tabi olarak, eklenecek dosyanın veya dosyaların konumu. Mutlak bir yol belirtilmediği sürece yol dosyaya .nuspec göre belirlenir. Joker karaktere izin verilir ve çift joker karakter * ** özyinelemeli klasör araması anlamına gelir. |
hedef | Kaynak dosyaların yerleştirildiği paketin içindeki klasörün göreli yolu, , content , build veya tools ile lib başlamalıdır. Bkz . Kural tabanlı bir çalışma dizininden .nuspec oluşturma. |
Dışlamak | Konumdan hariç tutulacak src dosyaların veya dosya desenlerinin noktalı virgülle ayrılmış listesi. Joker karaktere izin verilir ve çift joker karakter * ** özyinelemeli klasör araması anlamına gelir. |
Tek bütünleştirilmiş kod
Source file:
library.dll
.nuspec entry:
<file src="library.dll" target="lib" />
Packaged result:
lib\library.dll
Hedef çerçeveye özgü tek derleme
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 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ı, bir paketin projeye dahil etmesi gereken sabit dosyalardır. Sabit olduklarından, tüketen proje tarafından değiştirilmesi amaçlanmamıştır. Örnek içerik dosyaları şunlardır:
- Kaynak olarak eklenmiş görüntüler
- Zaten derlenmiş kaynak dosyalar
- Projenin derleme çıkışına eklenmesi gereken betikler
- Projeye eklenmesi gereken ancak projeye özgü herhangi bir değişikliğe ihtiyaç duymayan paket için yapılandırma dosyaları
İçerik dosyaları, özniteliğindeki klasörü belirterek content
öğesi kullanılarak <files>
bir pakete target
eklenir. Ancak paket PackageReference kullanılarak bir projeye yüklendiğinde bu tür dosyalar yoksayılır ve bunun yerine öğesini kullanır <contentFiles>
.
Projelerin tüketilmesiyle en yüksek uyumluluk için, bir paket her iki öğedeki içerik dosyalarını ideal olarak belirtir.
İçerik dosyaları için, derleme dosyalarıyla aynı biçimi kullanın, ancak aşağıdaki örneklerde gösterildiği gibi özniteliğinde target
temel klasör olarak belirtincontent
.
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ına sahip 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
adında nokta bulunan bir klasöre kopyalanan içerik dosyası
Bu durumda, NuGet içindeki target
uzantısının içindeki src
uzantıyla eşleşmediğini görür ve bu nedenle içinde adın target
bu kısmını bir klasör olarak ele yapar:
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ı içermeyen içerik dosyaları
Uzantı içermeyen dosyaları eklemek için veya **
joker karakterlerini kullanın*
:
Source file:
flags\installed
.nuspec entry:
<file src="flags\**" target="flags" />
Packaged result:
flags\installed
Derin yol ve derin hedef içeren içerik dosyaları
Bu durumda, kaynak ve hedef dosya uzantıları eşleştiğinden, NuGet hedefin klasör değil 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 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)
PackageReference ile NuGet 4.0+
Varsayılan olarak, bir paket içeriği bir contentFiles
klasöre yerleştirir (aşağıya bakın) ve nuget pack
varsayılan öznitelikleri kullanarak bu klasöre tüm dosyaları ekler. Bu durumda bir düğümün .nuspec
dahil contentFiles
edilmesi gerekmez.
Hangi dosyaların dahil olduğunu denetlemek için öğesini belirtir, <contentFiles>
tam dosyaları tanımlayan bir öğe koleksiyonudur <files>
.
Bu dosyalar, proje sisteminde nasıl kullanılmaları gerektiğini açıklayan bir öznitelik kümesiyle belirtilir:
Öznitelik | Açıklama |
---|---|
include | (Gerekli) Özniteliği tarafından exclude belirtilen dışlamalara tabi olarak, eklenecek dosyanın veya dosyaların konumu. Mutlak bir yol belirtilmediği sürece yol klasöre göre contentFiles belirlenir. Joker karaktere izin verilir ve çift joker karakter * ** özyinelemeli klasör araması anlamına gelir. |
Dışlamak | Konumdan hariç tutulacak src dosyaların veya dosya desenlerinin noktalı virgülle ayrılmış listesi. Joker karaktere izin verilir ve çift joker karakter * ** özyinelemeli klasör araması anlamına gelir. |
buildAction | MSBuild içerik öğesine atanacak derleme eylemi, örneğinContent , , None Embedded Resource , , Compile vb. Varsayılan değerdirCompile . |
copyToOutput | İçerik öğelerinin derleme (veya yayımlama) çıkış klasörüne kopyalanıp kopyalanmayacağını gösteren Boole değeri. Varsayılan değer false. |
Düzleştir | İçerik öğelerinin derleme çıktısında tek bir klasöre kopyalanıp kopyalanmayacağını (true) veya paketteki klasör yapısının (false) korunup korunmayacağını gösteren boole değeri. Bu bayrak yalnızca copyToOutput bayrağı true olarak ayarlandığında çalışır. Varsayılan değer false. |
Bir paketi yüklerken NuGet alt öğelerini <contentFiles>
yukarıdan aşağıya uygular. Aynı dosyayla eşleşen birden çok girdi varsa, tüm girişler uygulanır. En üstteki girdi, aynı öznitelik için çakışma varsa alt girdileri geçersiz kılar.
Paket projesi aşağıdaki deseni kullanarak içeriği yapılandırmalıdır:
/contentFiles/{codeLanguage}/{TxM}/{any?}
codeLanguages
cs
, ,vb
,fs
,any
veya belirli bir değerin küçük harfle eşdeğeri olabilir$(ProjectLanguage)
TxM
NuGet'in desteklediği herhangi bir yasal hedef çerçeve adıdır (bkz . Hedef çerçeveler).- Bu söz diziminin sonuna herhangi bir klasör yapısı eklenebilir.
Örneğin:
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 ve TxM bileşimleri için içerik sağlamayı geri çevirmek için kullanabilir _._
, örneğin:
/contentFiles/vb/any/code.vb
/contentFiles/cs/any/_._
<?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>
Sürüm 5.1+ wih PackageReference yalnızca
Çerçeve Başvuruları, WPF veya Windows Forms gibi paylaşılan çerçeveleri temsil eden bir .NET Core kavramıdır. Paylaşılan bir çerçeve belirterek paket, tüm çerçeve bağımlılıklarının başvuran projeye dahil edilmesini sağlar.
Her <group>
öğe için bir targetFramework
öznitelik ve sıfır veya daha fazla <frameworkReference>
öğe gerekir.
Aşağıdaki örnekte bir .NET Core WPF projesi için oluşturulan bir nuspec gösterilmektedir. Çerçeve başvuruları içeren el yazma nuspecs önerilmez. Bunun yerine, bunları projeden otomatik olarak çıkaracak olan hedef paketini kullanmayı göz önünde bulundurun.
<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>
Bağımlılıkları veya dosyaları belirtmeyen basit .nuspec
bir
<?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 .nuspec
<?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>
Dosya içeren A .nuspec
<?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 ile A .nuspec
<?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