.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:

Project türü uyumluluğu

  • kullanan .nuspecnuget.exe pack SDK stili olmayan projeler için ile packages.config kullanın.

  • SDK stili projeler (genellikle .NET Core ve SDK özniteliğini kullanan .NET Standard .nuspec projeleri) için bir dosya gerekli değildir..nuspec (Paketi .nuspec oluş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 etmek msbuild pack targetdotnet.exe pack.nuspec öneririz. Ancak, bunun yerine veya kullanarak paketlemek için bir dosya kullanmayı dotnet.exe seçebilirsiniz. msbuild pack target

  • paketinden packages.configpackages.configgeçirilen projeler .nuspec iç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.xsd açık Visual Studio Şema Gezgini

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

Paket Simgesi nuspec örneği.

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.

(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 , vbfsany veya 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