Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Paketinizin ne yaptığı veya hangi kodu içerdiği fark etmez, ya da nuget.exedotnet.exekomut satırı arabirimi (CLI) araçlarından birini kullanarak bu işlevi diğer geliştiriciler tarafından paylaşılabilen ve kullanılabilecek bir bileşende paketleyebilirsiniz. NuGet CLI araçlarını yüklemek için bkz. NuGet istemci araçlarını yükleme. Visual Studio otomatik olarak bir CLI aracı içermez.
SDK stili olmayan projelerde, genellikle .NET Framework projelerinde, bir paket oluşturmak için bu makalede açıklanan adımları izleyin. Visual Studio ve
nuget.exeCLI kullanımına yönelik adım adım yönergeler sağlayan hızlı başlangıç için bkz. Quickstart: Visual Studio (.NET Framework, Windows) kullanarak paket oluşturma ve yayımlama.SDK stili biçimi kullanan .NET Core ve .NET Standard projeleri ve diğer SDK stilindeki projeler için bkz. Dotnet CLI ile NuGet paketi oluşturma.
packages.config'danPackageReference'e geçirilen projeler içinmsbuild -t:packkomutunu kullanın.
Teknik olarak, NuGet paketi .nupkg uzantısına sahip olarak yeniden adlandırılan ve içeriği belirli kurallarla eşleşen bir ZIP dosyasıdır. Bu makalede, bu kuralları karşılayan bir paket oluşturma işlemi ayrıntılı olarak açıklanmaktadır.
Paketleme, paket olarak teslim etmek istediğiniz derlenmiş kod (derlemeler), simgeler ve diğer dosyalarla başlar. Paketleme işlemine genel bakış için bkz. Paket oluşturma iş akışı. Bu işlem, pakete giden dosyaları derlemeden veya başka bir şekilde oluşturmaktan bağımsızdır. Ancak derlenmiş derlemeleri ve paketleri eşitlenmiş durumda tutmak için proje dosyasındaki bilgilerden çizim yapabilirsiniz.
Önemli
Bu makale SDK stili olmayan projeler, genellikle Visual Studio 2017 ve sonraki sürümleri ve NuGet 4.0+ kullanan .NET Core ve .NET Standard projeleri dışındaki projeler için geçerlidir.
Hangi derlemelerin paketleneceğine karar verme
Genel amaçlı paketlerin çoğu, diğer geliştiricilerin kendi projelerinde kullanabileceği bir veya daha fazla derleme içerir.
Genel olarak, her derlemenin bağımsız olarak yararlı olması koşuluyla NuGet paketi başına bir derlemeye sahip olmak en iyisidir. Örneğin,Parser.dll adlı bir derlemeye bağlı Utilities.dll adlı derlemeyi içeren aşağıdaki durumları göz önünde bulundurun:
Parser.dll kendi başına yararlıysa, Utilities.dll için bir paket ve Parser.dlliçin bir paket oluşturun. Bunun yapılması, geliştiricilerin Utilities.dll bağımsız olarak Parser.dllkullanmasına olanak tanır.
Parser.dll yalnızca Utilities.dlltarafından kullanılan kod içeriyorsa, Parser.dll aynı pakette tutmak normaldir. Genel olarak, kitaplığınız bağımsız olarak yararlı olmayan birden çok derlemeden oluşuyorsa, bunları tek bir pakette birleştirmek normaldir.
Utilities.dll da Utilities.resources.dllbağlıysa ve Utilities.resources.dll kendi başına yararlı değilse, her ikisini de aynı pakete koyun.
Önceki örnekteki Utilities.resources.dll derlemesi gibi kaynaklar özel bir durumlardır. Bir paket projeye yüklendiğinde, yerelleştirilmiş uydu derlemeleri olduğu varsayıldığı için, .resources.dll olarak adlandırılanlar hariç, NuGet otomatik olarak paketin DLL'lerine derleme başvuruları ekler. Kitaplığın yerelleştirilmiş sürümleri hakkında daha fazla bilgi için bkz. Yerelleştirilmiş NuGet paketleri oluşturma. Bu nedenle, temel paket kodu içeren dosyalar için .resources.dll kullanmaktan kaçının.
Kitaplığınız Bileşen Nesne Modeli (COM) birlikte çalışma derlemeleri içeriyorsa , COM birlikte çalışma derlemeleri içeren NuGet paketleri oluşturma bölümünde yer alan ek yönergeleri izleyin.
.nuspec dosyasının rolü ve yapısı
Hangi dosyaları paketlemek istediğinizi bildiğinizde, sonraki adım bir .nuspec XML dosyasında paket bildirimi oluşturmaktır.
Bildirim:
- Paketin içeriğini açıklar ve pakete dahil edilir.
- Paketin oluşturulmasını destekler ve NuGet'e paketin bir projeye nasıl yükleneceğini bildirir. Örneğin bildirim, ana paket yüklendiğinde NuGet'in de bu bağımlılıkları yükleyebilmesi için diğer paket bağımlılıklarını tanımlar.
- Bu bölümün geri kalanında açıklandığı gibi hem gerekli hem de isteğe bağlı özellikleri içerir. Burada belirtilmeyen diğer özellikler de dahil olmak üzere ayrıntılı bilgi için bkz. .nuspec başvurusu.
Bildirimde aşağıdaki özellikler gereklidir:
- Paketi barındıran galeride benzersiz olması gereken paket tanımlayıcısı
- Major.Minor.Patch[-Suffix] biçimindeki belirli bir sürüm numarası; burada -Suffixyayın öncesi sürümleri tanımlar
- Konakta görünmesi gereken paket başlığı (nuget.org gibi)
- Yazar bilgileri
- Paketin uzun açıklaması
Aşağıdaki özellikler yaygın isteğe bağlı özelliklerdir:
- Sürüm notları.
- Telif hakkı bilgileri.
- Visual Studio içindeki
Package Manager kullanıcı arabirimi için kısa bir açıklama. - Yerel ayar kimliği.
- Proje URL'si.
- Bir ifade veya dosya şeklinde lisans.
licenseUrlözelliği kullanım dışı bırakıldı.licenseBunun yerine nuspec meta veri öğesini kullanın. - Read-me dosyası.
- Simge dosyası.
iconUrlözelliği kullanım dışı bırakıldı.iconBunun yerine nuspec meta veri öğesini kullanın. - Bağımlılıkların ve referansların listeleri.
- Galeri aramalarına yardımcı olan etiketler.
Aşağıdaki kod, özellikleri açıklayan açıklamalara sahip tipik (ancak kurgusal) bir .nuspec dosyasıdır:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<!-- An identifier that must be unique within the hosting gallery -->
<id>Contoso.Utility.UsefulStuff</id>
<!-- A package version number that's used when resolving dependencies -->
<version>1.8.3</version>
<!-- A comma-separated list of package authors that sometimes appears directly on the gallery -->
<authors>Dejana Tesic, Rajeev Dey</authors>
<!-- A project URL that provides a link for the gallery -->
<projectUrl>http://github.com/contoso/UsefulStuff</projectUrl>
<!-- License information that's displayed on the gallery -->
<license type="expression">Apache-2.0</license>
<!-- The location of a read-me file that's displayed in the Visual Studio Package Manager UI -->
<readme>readme.md</readme>
<!-- An icon that's used in the Visual Studio Package Manager UI -->
<icon>icon.png</icon>
<!--
A property that when true, prompts the user to accept the license when
installing the package
-->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!-- Detailed information about a particular release -->
<releaseNotes>Bug fixes and performance improvements</releaseNotes>
<!--
A description that can be used in the Package Manager UI. The
nuget.org gallery uses information you add in the portal.
-->
<description>Core utility functions for web applications</description>
<!-- Copyright information -->
<copyright>Copyright ©2026 Contoso Corporation</copyright>
<!-- Tags that appear in the gallery and can be used for tag searches -->
<tags>web utility http json url parsing</tags>
<!-- Dependencies that are automatically installed when the package is installed -->
<dependencies>
<dependency id="Newtonsoft.Json" version="9.0" />
</dependencies>
</metadata>
<!-- A read-me Markdown file that's displayed in the Package Manager UI -->
<files>
<file src="readme.md" target="" />
<file src="icon.png" target="" />
</files>
</package>
Bağımlılıkları bildirme ve sürüm numaralarını belirtme hakkında ayrıntılı bilgi için bkz. packages.config ve Paket sürümü oluşturma. Pakete include dahil etmek veya hariç tutmak istediğiniz bağımlılık varlıklarını belirtmek için öğesindeki exclude ve dependency özniteliklerini de kullanabilirsiniz. Daha fazla bilgi için bkz .nuspec Başvuru - Bağımlılıklar öğesi.
Bildirim, ondan oluşturulan pakete eklendiğinden, mevcut paketleri inceleyerek örnekler bulabilirsiniz. İyi bir kaynak, bilgisayarınızdaki genel paketler klasörüdür. Konumunu bulmak için aşağıdaki komutu kullanın:
nuget locals -list global-packages
Genel paketler klasörünün konumunu belirledikten sonra, bildirim dosyasını bulmak için aşağıdaki adımları izleyin:
- Genel paketler klasörüne gidin.
- Bu klasörde, herhangi bir paketin alt klasörüne gidin ve ardından bu paketin herhangi bir sürümü için bir alt klasöre gidin.
- Sürüm alt klasöründe .nupkg dosyasının bir kopyasını yapın ve kopyanın uzantısını zip olarak değiştirin.
- .zip dosyasını açın ve içindeki .nuspec dosyasını inceleyin.
Uyarı
Visual Studio projesinden bir .nuspec dosyası oluşturduğunuzda, manifesto paket oluşturulurken projeden alınan bilgilerle değiştirilen belirteçler içerir. Daha fazla bilgi için bkz. .nuspec dosyasını Visual Studio projesinden oluşturma.
.nuspec dosyasını oluşturma
Tam bildirim oluşturma işlemi genellikle aşağıdaki yöntemlerden biri aracılığıyla oluşturulan temel bir .nuspec dosyasıyla başlar:
- Kural tabanlı çalışma dizini
- Bütünleştirilmiş DLL
- A Visual Studio projesi
- Varsayılan değerlere sahip yeni bir dosya
Ardından dosyayı el ile düzenleyerek son pakette istediğiniz içeriği tam olarak açıklarsınız.
Önemli
Oluşturulan .nuspec dosyaları, nuget pack komutunu kullanarak paketi oluşturmadan önce modifiye etmeniz gereken yer tutucular içerir.
.nuspec dosyasında yer tutucular varsa bu komut başarısız olur.
Konvansiyon tabanlı çalışma dizininden
NuGet paketi .nupkg uzantısıyla yeniden adlandırılmış bir ZIP dosyası olduğundan, yerel dosya sisteminizde istediğiniz klasör yapısını oluşturmak ve ardından .nuspec dosyasını doğrudan bu yapıdan oluşturmak genellikle en kolayıdır. Komut nuget pack daha sonra bu klasör yapısındaki tüm dosyaları otomatik olarak ekler, ancak noktayla başlayan klasörleri dışlar, böylece özel dosyaları aynı yapıda tutabilirsiniz.
Bu yaklaşımın avantajı, bu bölümün ilerleyen bölümlerinde açıklandığı gibi pakete hangi dosyaları eklemek istediğinizi bildirimde belirtmeniz gerekmeyecek olmasıdır. Bunun yerine, derleme işleminizin pakete giren tam klasör yapısını oluşturmasını sağlayabilirsiniz. Projenin parçası olmayabilecek diğer dosyaları da kolayca ekleyebilirsiniz, aksi takdirde:
- Hedef projeye eklenmesi gereken içerik ve kaynak kodu
- PowerShell betikleri
- Projedeki mevcut yapılandırma ve kaynak kod dosyalarına dönüştürmeler
Klasörler aşağıdaki kurallarla hizalanır:
| Klasör | İçeriği | Paket yüklendikten sonra eylem |
|---|---|---|
| (kök) | Paket bildirimi, üst düzey klasörler ve isteğe bağlı olarak, beni oku Markdown dosyası ve simge görüntüsü | Bu klasör, lib ve derleme gibi standartlaştırılmış alt klasörler için başlangıç noktası olarak kullanılır. |
| lib/<tfm> | Verilen hedef çerçeve adı (TFM) için Assembly (.dll), belgeleme (.xml) ve sembol (.pdb) dosyaları | Derlemeler, derleme zamanı ve çalışma zamanı için referans olarak eklenir. .xml ve .pdb dosyaları proje klasörlerine kopyalanır. Framework hedefe özgü alt klasörler oluşturma hakkında bilgi için bkz. Birden fazla .NET sürümünü destekleme. |
| başv/<tfm> | Verilen TFM için derleme (.dll) ve sembol (.pdb) dosyaları | Derlemeler yalnızca derleme süreci için başvuru olarak eklenir. Proje bin klasörüne hiçbir şey kopyalanmaz. |
| Çalışma Zamanı | Mimariye özgü derleme (.dll), sembol (.pdb) ve yerel kaynak (.pri) dosyaları | Derlemeler yalnızca çalışma zamanı için referans olarak eklenir. Diğer dosyalar proje klasörlerine kopyalanır. karşılık gelen derleme zamanı derlemesini sağlamak için AnyCPU) < özel bir derleme olmalıdır. Bkz. Support multiple .NET versions. |
| içerik | Rastgele dosyalar | İçerikler proje köküne kopyalanır. İçerik klasörünü, sonunda paketi kullanan hedef uygulamanın kökü olarak düşünün. Paketin uygulamanın /images klasörüne görüntü eklemesini sağlamak için paketin içerik/görüntüler klasörüne yerleştirin. |
| Oluşturmak | (3.x+) Microsoft Build Engine (MSBuild) .targets ve .props dosyaları | Bu dosyalar projeye otomatik olarak eklenir. |
| buildMultiTargeting | (4,0+) Çerçeveler arası hedefleme için MSBuild .targets ve .props dosyaları | Bu dosyalar projeye otomatik olarak eklenir. |
| buildTransitive | (5,0+)MSBuild.targets ve .props dosyaları, herhangi bir tüketen projeye geçişli olarak akıyor | Bu dosyalar projeye otomatik olarak eklenir. Özellik sayfasına bakın. |
| Araçlar | Package Manager Konsolu'ndan erişilebilen PowerShell betikleri ve programları |
tools klasörü yalnızca Package Manager Konsolu için PATH ortam değişkenine eklenir. MSBuild'in projeyi oluştururken kullandığı değere eklenmezPATH. |
Klasör yapınız birçok hedef çerçeve için derlemeler içerebileceğinden, birden çok çerçeveyi destekleyen paketler oluşturduğunuzda bu yöntem gereklidir.
İstediğiniz klasör yapısına sahip olduğunuzda, .nuspec dosyasını oluşturmak için bu klasörde aşağıdaki komutu çalıştırın:
nuget spec
Oluşturulan .nuspec dosyası, klasör yapısındaki dosyalara açık başvuru içermiyor. NuGet, paket oluşturulduğunda tüm dosyaları otomatik olarak içerir. Ancak yine de bildirimin diğer bölümlerinde yer tutucu değerlerini düzenlemeniz gerekir.
Derleme DLL'sinden
Bir derlemeden paket oluşturmanın temel örneğinde, aşağıdaki komutu kullanarak derlemedeki meta verilerden bir .nuspec dosyası oluşturabilirsiniz:
nuget spec <assembly-name>.dll
Bu formun kullanılması bildirimdeki birkaç yer tutucuyu derlemedeki belirli değerlerle değiştirir. Örneğin, <id> özelliği derleme adına ayarlanır ve <version> derleme sürümüne ayarlanır. Ancak bildirimdeki diğer özellikler, derlemede eşleşen değerlere sahip değildir. Bu özellikler, komut çalıştırıldıktan sonra da yer tutucular içerir.
Visual Studio projesinden
Bir .csproj veya .vbproj dosyasından .nuspec dosyası oluşturmak kullanışlıdır, çünkü projede yüklü olan diğer paketlere otomatik olarak bağımlılık olarak başvurulur. Proje dosyasından bildirim oluşturmak için, proje dosyasını içeren klasörde aşağıdaki komutu kullanın:
# Use in a folder that contains a project file, such as <project-name>.csproj or <project-name>.vbproj.
nuget spec
Sonuçta elde edilen <project-name.nuspec> dosyası, önceden yüklenmiş olan diğer paketlere başvurular da dahil olmak üzere paketleme zamanında projedeki değerlerle değiştirilen belirteçler içerir.
.nuspec dosyasına paket bağımlılıklarını eklemeniz gerekiyorsa, bunun yerine nuget pack kullanın. Ardından oluşturulan .nupkg dosyasının içinden .nuspec dosyasını alın. Örneğin, aşağıdaki komutu kullanın:
# Use in a folder that contains a project file, such as <project-name>.csproj or <project-name>.vbproj.
nuget pack myproject.csproj
Belirteç, proje özelliğinin her iki tarafındaki simgelerle $ sınırlandırılır. Örneğin, <id> bildirimde bu şekilde oluşturulan değer genellikle aşağıdaki satıra benzer:
<id>$id$</id>
Bu belirteç, paketleme zamanında proje dosyasındaki değerle AssemblyName değiştirilir. Proje değerlerinin .nuspec dosya belirteçleriyle tam eşlemesi için bkz . Değiştirme belirteçleri.
Belirteçler, projeyi güncelleştirirken .nuspec dosyasındaki sürüm numarası gibi önemli değerleri güncelleştirme gereksinimini hafifletir. Ancak belirteçleri sabit değerlerle de değiştirebilirsiniz.
Bu makalenin devamında açıkladığımız gibi, Visual Studio projesinde çalışırken çeşitli ekstra paketleme seçenekleri mevcuttur. Daha sonra nuget pack komutunu çalıştırarak .nupkg dosyasını oluşturabilirsiniz.
Çözüm düzeyinde paketler
Yalnızca NuGet 2.x. NuGet 3.0+ ile kullanılamaz.
NuGet 2.x, Package Manager Konsolu için araçlar veya ek komutlar (tools klasörünün içeriği) yükleyen, ancak çözümdeki herhangi bir proje için başvuru, içerik veya derleme özelleştirmeleri eklemeyen çözüm düzeyinde bir paketin gösterimini destekler. Bu tür paketler kendi doğrudan kitaplıklarında, içeriklerinde veya derleme klasörlerinde dosya içermez ve bağımlılıklarının hiçbirinde ilgili lib, içerik veya derleme klasörlerinde dosya yoktur.
NuGet, projeninpackages.configdosyası yerine .nuget klasöründeki packages.config dosyasında yüklü çözüm düzeyi paketleri izler.
Varsayılan değerlere sahip yeni bir dosyadan
Aşağıdaki komut, uygun dosya yapısıyla başlamanıza yardımcı olan yer tutucularla bir varsayılan bildirim oluşturur:
nuget spec [<package-name>]
atlarsanız <package-name>, sonuçta elde edilen dosya Package.nuspec olarak adlandırılır. gibi Contoso.Utility.UsefulStuffbir ad sağlarsanız, dosya Contoso.Utility.UsefulStuff.nuspec olarak adlandırılır.
Sonuçta elde edilen .nuspec dosyası, projectUrl gibi değerler için yer tutucular içerir. Son .nupkg dosyasını oluşturmak için dosyayı kullanmadan önce yer tutucuları uygun değerlerle değiştirin.
Benzersiz bir paket tanımlayıcısı seçin ve sürüm numarasını ayarlayın
Paket tanımlayıcısı (<id> öğesi) ve sürüm numarası (<version> öğesi) bildirimdeki en önemli iki değerdir, çünkü pakette yer alan kodu tam olarak tanımlarlar.
Paket tanımlayıcısı için en iyi yöntemler
-
Benzersizlik: Tanımlayıcı, paketi barındıran galeride benzersiz olmalıdır, örneğin nuget.org. Tanımlayıcıya karar vermeden önce, geçerli galeride arama yapıp adın kullanımda olup olmadığını denetleyin. Çakışmaları önlemek için, şirketinizin adını tanımlayıcının ilk parçası olarak kullanmak iyi bir desendir; örneğin
Contoso. -
Namespace benzeri adlar: Kısa çizgi yerine nokta gösterimini kullanarak .NET ad alanlarına benzer bir deseni takip edin. Örneğin
Contoso.Utility.UsefulStuffveyaContoso-Utility-UsefulStuffyerineContoso_Utility_UsefulStuffkullanın. Tüketiciler, paket tanımlayıcısı kodda kullanılan ad alanlarıyla eşleştiğinde de yararlı olur. -
Örnek paketler: Başka bir paketin nasıl kullanılacağını gösteren bir örnek kod paketi oluşturursanız, içinde olduğu gibi tanımlayıcıya sonek olarak
.SampleekleyinContoso.Utility.UsefulStuff.Sample. Bu türdeki bir örnek paketin, nasıl kullanılacağını gösterdiği pakete bağımlılığı vardır. Örnek bir paket oluşturduğunuzda, daha önce açıklanan kural tabanlı çalışma dizini yöntemini kullanın. İçerik klasöründe, örnek kodu \Samples\< klasöründeki gibi \Samples\>identifier adlı bir klasörde düzenleyin.
Paket sürümü için en iyi yöntemler
- Genel olarak, paketin sürümünü kitaplıkla eşleşecek şekilde ayarlayın. Bu kılavuz önerilir ancak kesinlikle gerekli değildir. Bu uygulama, daha önce Hangi derlemelerin paketlendiğine karar verme bölümünde açıklandığı gibi bir paketi tek bir derlemeyle sınırladığınızda basittir. Genel olarak, NuGet'in derleme sürümleriyle değil bağımlılıkları çözerken paket sürümleriyle uğraştığını unutmayın.
- Standart olmayan bir sürüm düzeni kullandığınızda, Paket sürümü oluşturma bölümünde açıklandığı gibi NuGet sürüm oluşturma kurallarını göz önünde bulundurun.
Sürüm oluşturmanın anlaşılmasına yardımcı olan diğer kaynaklar için aşağıdaki kısa blog gönderileri dizisine bakın:
- Bölüm 1: DLL Cehennemi ile Başa Çıkma
- Bölüm 2: Çekirdek algoritması
- Bölüm 3: Bağlama yeniden yönlendirmeleri aracılığıyla birleştirme
Readme dosyasını ve diğer dosyaları ekle
Pakete eklenecek dosyaları doğrudan belirtmek için <files> düğümünü .nuspec dosyasında, etiketini takip eden kısımda kullanın:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Add files from an arbitrary folder that's not necessarily in the project. -->
<file src="..\..\SomeRoot\**\*.*" target="" />
</files>
</package>
Tavsiye
Kural tabanlı çalışma dizini yaklaşımını kullandığınızda, readme.md dosyasını paket köküne ve diğer içeriği içerik klasörüne yerleştirebilirsiniz. Bildirimde hiçbir öğe gerekli değildir <file> .
Pakete bir benioku dosyası eklemek için, readme meta verisi öğesini kullanarak benioku dosyasının hedef yolunu belirtin. Ayrıca, benioku dosyasının kaynak yolunu ve hedef klasörünü belirtmek için bir file meta veri öğesi kullanın. Daha fazla bilgi için bkz. readme.
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<!-- ... -->
<readme>docs\readme.md</readme>
<!-- ... -->
</metadata>
<files>
<!-- Add a read-me file. -->
<file src="..\readme.md" target="docs\" />
</files>
</package>
Visual Studio, "read-me" dosyasının içeriğini Paket Yöneticisi kullanıcı arabiriminde görüntüler. Örneğin, aşağıdaki ekran görüntüsünde paketin read-me dosyası gösterilmektedir HtmlAgilityPack :
Visual Studio Paket Yöneticisi kullanıcı arabirimindeki paket ayrıntıları bölmesini gösteren ekran görüntüsü. README sekmesinde paketin HTML ayrıştırma özellikleri açıklanır.
Uyarı
<files> dosyasına boş bir düğüm eklerseniz, NuGet paketteki lib klasörünün içeriğini içerir ancak başka içerik içermez.
MSBuild props ve hedefleri bir pakete ekleyin
Bazı durumlarda, derleme sırasında özel bir araç veya işlem çalıştırma gibi paketinizi kullanan projelere özel derleme hedefleri veya özellikleri eklemek isteyebilirsiniz. Özel derleme hedefleri ve özellikleri hakkında daha fazla bilgi için bkz. Bir paketteki MSBuild .props ve .targets.
Projenin < klasörlerinde, > veya > gibi dosyalar oluşturun, örneğin Contoso.Utility.UsefulStuff.targets.
Ardından .nuspec dosyasında <files> düğümünde bu dosyalara referans verin:
<?xml version="1.0"?>
<package >
<metadata minClientVersion="2.5">
<!-- ... -->
</metadata>
<files>
<!-- In the package build folder, include everything that's in the local build folder. -->
<file src="build\**" target="build" />
<!-- Other files -->
<!-- ... -->
</files>
</package>
Paketler projeye eklendiğinde NuGet otomatik olarak bu özellikleri ve hedefleri içerir.
.nupkg dosyasını oluşturmak için nuget paketini çalıştırın
Bir bileşen veya kural tabanlı çalışma dizini kullandığınızda, nuget pack komutunu .nuspec dosyanızla çalıştırarak bir paket oluşturun. Projenizin adını, aşağıdaki komutta <project-name> yerinin yerine yazın:
nuget pack <project-name>.nuspec
Visual Studio proje kullandığınızda proje dosyanızla nuget pack çalıştırın. Bu komut projenin .nuspec dosyasını otomatik olarak yükler ve içindeki belirteçleri proje dosyasındaki karşılık gelen değerlerle değiştirir:
nuget pack <project-name>.csproj
Uyarı
Belirteç değiştirme için proje dosyasını doğrudan kullanmanız gerekir çünkü proje belirteç değerlerinin kaynağıdır.
nuget pack ile bir .nuspec dosyası kullanıyorsanız belirteç değişikliği başarılı olmaz.
Her durumda, nuget pack.git veya .hg gibi bir noktayla başlayan klasörleri dışlar.
NuGet, .nuspec dosyasında düzeltilmesi gereken herhangi bir hata olup olmadığını gösterir; örneğin bildirimdeki güncelleştirilmesi gereken yer tutucu değerler.
Başarılı olduktan sonranuget pack, NuGet paketlerini yayımlama bölümünde açıklandığı gibi uygun bir galeride yayımlayabileceğiniz bir .nupkg dosyanız olur.
Tavsiye
Bir paketi oluşturduktan sonra incelemenin yararlı bir yolu paketi Paket Gezgini aracında açmaktır. Bu araç, paket içeriğinin ve bildiriminin grafik görünümünü sağlar. Ayrıca elde edilen .nupkg dosyasını .zip bir dosya olarak yeniden adlandırabilir ve içeriğini doğrudan inceleyebilirsiniz.
Ek seçenekler
Dosyaları dışlamak, bildirimdeki sürüm numarasını geçersiz kılmak ve diğer özelliklerin yanı sıra çıkış klasörünü değiştirmek için ile nuget pack çeşitli komut satırı anahtarları kullanabilirsiniz. Tam liste için bkz. paket komutu (NuGet CLI).
Aşağıdaki seçenekler, Visual Studio projelerde yaygın olarak kullanılan seçeneklerden bazılarıdır:
Başvuruda bulunan projeler: Proje diğer projelere başvuruda bulunuyorsa, şu seçeneği kullanarak
-IncludeReferencedProjectsbaşvuruda bulunan projeleri paketin bir parçası olarak veya bağımlılıklar olarak ekleyebilirsiniz:nuget pack MyProject.csproj -IncludeReferencedProjectsBu ekleme işlemi özyinelemeli. Örneğin, MyProject.csproj B ve C projelerine başvuruda bulunuyorsa ve bu projeler D, E ve F'ye başvuruda bulunuyorsa, B, C, D, E ve F'deki dosyalar pakete eklenir.
Başvuruda bulunulan bir proje kendi .nuspec dosyasını içeriyorsa, NuGet bu başvuruda bulunulan projeyi bağımlılık olarak ekler. Bu projeyi ayrı ayrı paketlemeniz ve yayımlamanız gerekir.
Derleme yapılandırması: NuGet, varsayılan olarak proje dosyasında ayarlanan varsayılan derleme yapılandırmasını kullanır.
DebugDosyaları, örneğinReleasegibi farklı bir derleme yapılandırmasından paketlemek için, yapılandırma ile-propertiesseçeneğini kullanın.nuget pack MyProject.csproj -properties Configuration=ReleaseSimgeler: Tüketicilerin hata ayıklayıcıda paket kodunuzda adım adım ilerleyebilecekleri simgeleri eklemek için ve
-Symbolsseçeneklerini kullanın-SymbolPackageFormat.-SymbolPackageFormatseçeneği için birsnupkgbiçimi belirtin:nuget pack MyProject.csproj -symbols -SymbolPackageFormat snupkg
Paket yüklemesini test et
Bir paketi yayımlamadan önce genellikle paketi bir projeye yükleme işlemini test etmek istersiniz. Test, tüm gerekli dosyaların projede doğru yerde olmasını sağlamaya yardımcı olur.
Yüklemeleri standart package yükleme adımları kullanarak Visual Studio veya komut satırında el ile test edebilirsiniz.
Otomatik test için aşağıdaki temel işlemi kullanabilirsiniz:
- .nupkg dosyasını yerel bir klasöre kopyalayın.
- komutunu kullanarak
nuget sources add -name <name> -source <path>klasörü paket kaynaklarınıza ekleyin. Daha fazla bilgi için bkz. sources komutu (NuGet CLI). Bu yerel kaynağı belirli bir bilgisayarda yalnızca bir kez ayarlamanız gerekir. - Bu kaynaktan
nuget install <package-ID> -source <name>kullanarak paketi yükleyin. Bu komutta,<name>komutta kullandığınız kaynağın adıyla eşleşmelidirnuget sources. Kaynağın belirtilmesi NuGet'e paketi yalnızca bu kaynaktan yüklemesini söyler. - Dosyaların doğru yüklenip yüklenmediğini denetlemek için dosya sisteminizi inceleyin.
İlgili içerik
.nupkg dosyası olan bir paket oluşturduktan sonra, bunu istediğiniz galeride yayımlayabilirsiniz. Daha fazla bilgi için bkz. NuGet paketlerini yayımlama.
Ayrıca paketinizin özelliklerini genişletebilir veya diğer senaryoları destekleyebilirsiniz. Daha fazla bilgi için aşağıdaki makalelere bakın:
- Paket sürümü oluşturma
- Birden çok .NET sürümünü destekle
- Kaynak kodu ve yapılandırma dosyalarını dönüştürme
- Yerelleştirilmiş NuGet paketleri oluşturma
- Yayın öncesi paketler oluşturma
- NuGet paket türü ayarlama
- COM birlikte çalışma derlemeleri içeren NuGet paketleri oluşturma
Başka paket türlerini ele almak için aşağıdaki makalelere bakın: