nuget.exe CLı kullanarak paket oluşturma
Paketinizin ne yaptığını veya hangi kodu içerdiğini bağımsız olarak, nuget.exe Bu işlevselliği bir veya daha fazla dotnet.exe Geliştirici tarafından kullanılabilen bir bileşene paketlemek için ya da CLI araçlarından birini kullanırsınız. NuGet clı araçları 'nı yüklemek için bkz. ınstall NuGet client tools. Visual Studio bir clı aracını otomatik olarak içermez.
SDK olmayan stil projeleri için genellikle projeleri .NET Framework, bir paket oluşturmak için bu makalede açıklanan adımları izleyin. Visual Studio ve clı kullanarak adım adım yönergeler için
nuget.exe, bkz.nuget.exe..net Core ve sdk stili biçiminikullanan projeleri ve diğer sdk stili projelerini .NET Standard için bkz. dotnet clı kullanarak NuGet paketi oluşturma.
packages.config' Denpackages.config'a geçirilen projeler için MSBuild-t:Packkullanın.
teknik olarak, bir NuGet paketi yalnızca uzantısıyla yeniden adlandırılan .nupkg ve içeriği belirli kurallara uyan bir ZIP dosyasıdır. Bu konuda, bu kuralları karşılayan bir paket oluşturmanın ayrıntılı süreci açıklanmaktadır.
Paketleme, derlenmiş kod (derlemeler), semboller ve/veya paket olarak teslim etmek istediğiniz diğer dosyaları (bkz. genel bakış ve iş akışı) ile başlar. Bu işlem, derlenmiş derlemeleri ve paketleri eşitlenmiş halde tutmak için bir proje dosyasındaki bilgilerden çizim yapabilmenize rağmen, derleme ' den bağımsız olan dosyaları derlemeden veya oluşturmadan bağımsızdır.
Önemli
bu konu SDK olmayan projeler için geçerlidir, genellikle .net Core dışındaki projeler ve Visual Studio 2017 ve daha yüksek sürümleri ve NuGet 4.0 + kullanan projeler .NET Standard.
Hangi derlemelerin paketlenecek olduğuna karar verin
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ı şartıyla NuGet paketi başına bir derlemeye sahip olmak en iyisidir. Örneğin, öğesine bağlı bir uygulamanız varsa
Utilities.dllParser.dllveParser.dllkendi yararlıysa, her biri için bir paket oluşturun. Bunun yapılmasıParser.dll, geliştiricilerin bağımsız olarak kullanmasını sağlarUtilities.dll.Kitaplığınız bağımsız olarak yararlı olmayan birden çok derlemeden oluşuyorsa, bunları tek bir pakette birleştirmek iyi olur. Önceki örneği kullanarak,
Parser.dllyalnızca tarafından kullanılan kodu içeriyorsaUtilities.dll, aynı pakette tutulması iyi olurParser.dll.Benzer şekilde,
Utilities.dllne olursaUtilities.resources.dllyapın, her ikisi de kendi üzerinde yararlı değildir ve her ikisini de aynı pakete koyun.
Kaynaklar aslında özel bir durumdur. bir paket bir projeye yüklendiğinde, NuGet, yerelleştirilmiş uydu bütünleştirilmiş kodları (bkz. yerelleştirilmiş paketler oluşturma) olduğu varsayılanlar dışında paketin dll 'lerine otomatik olarak derleme başvuruları ekler. Bu nedenle, .resources.dll başka bir şekilde temel paket kodu içeren dosyalar için kullanmaktan kaçının.
Kitaplığınız COM birlikte çalışma derlemelerini içeriyorsa, com birlikte çalışma Derlemeleriyle paket oluşturma' daki ek yönergeleri izleyin.
. Nuspec dosyasının rolü ve yapısı
Hangi dosyaları paketlemek istediğinizi öğrendikten sonra, bir sonraki adım bir XML dosyasında paket bildirimi oluşturuyor .nuspec .
Bildirim:
- Paketin içeriğini açıklar ve pakete dahil edilmiştir.
- hem paketin oluşturulmasını hem de paketin bir projeye nasıl yükleneceğini NuGet söyler. örneğin, bildirim diğer paket bağımlılıklarını tanımlar, bu da ana paket yüklendiğinde NuGet bu bağımlılıkları yükleyebilir.
- Aşağıda açıklandığı gibi hem gerekli hem de isteğe bağlı özellikleri içerir. Burada bahsedilen diğer özellikler dahil olmak üzere tam Ayrıntılar için bkz . nuspec başvurusu.
Gerekli Özellikler:
- Paketi barındıran Galeri genelinde benzersiz olması gereken paket tanımlayıcısı.
- Birincil. ikincil. Patch [-suffix] biçiminde belirli bir sürüm numarası; burada -suffixyayın öncesi sürümlerini tanımlar
- Paket başlığı konakta görüntülenecek şekilde (nuget.org gibi)
- Yazar ve sahip bilgileri.
- Paketin uzun açıklaması.
Ortak isteğe bağlı özellikler:
- Sürüm notları
- Telif hakkı bilgileri
- Visual Studio Paket Yöneticisi kullanıcı arabirimine yönelik kısa bir açıklama
- Yerel ayar KIMLIĞI
- Project URL 'si
- Bir ifade veya dosya olarak lisans (
licenseUrlkullanım dışı, bunun yerinelicenseUrlkullanın) - Bir simge dosyası (
iconUrlbunun yerineiconUrlkullanım dışı) - Bağımlılıklar ve başvuru listeleri
- Galeri aramalarında yardımcı olan Etiketler
Aşağıda, özellikleri açıklayan açıklamalar içeren tipik bir (ancak kurgusal) .nuspec Dosya verilmiştir:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Identifier that must be unique within the hosting gallery -->
<id>Contoso.Utility.UsefulStuff</id>
<!-- Package version number that is used when resolving dependencies -->
<version>1.8.3</version>
<!-- Authors contain text that appears directly on the gallery -->
<authors>Dejana Tesic, Rajeev Dey</authors>
<!--
Owners are typically nuget.org identities that allow gallery
users to easily find other packages by the same owners.
-->
<owners>dejanatc, rjdey</owners>
<!-- Project URL provides a link for the gallery -->
<projectUrl>http://github.com/contoso/UsefulStuff</projectUrl>
<!-- License information is displayed on the gallery -->
<license type="expression">Apache-2.0</license>
<!-- Icon is used in Visual Studio's package manager UI -->
<icon>icon.png</icon>
<!--
If true, this value prompts the user to accept the license when
installing the package.
-->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!-- Any details about this particular release -->
<releaseNotes>Bug fixes and performance improvements</releaseNotes>
<!--
The description can be used in package manager UI. Note that the
nuget.org gallery uses information you add in the portal.
-->
<description>Core utility functions for web applications</description>
<!-- Copyright information -->
<copyright>Copyright ©2016 Contoso Corporation</copyright>
<!-- Tags appear in the gallery and can be used for tag searches -->
<tags>web utility http json url parsing</tags>
<!-- Dependencies are automatically installed when the package is installed -->
<dependencies>
<dependency id="Newtonsoft.Json" version="9.0" />
</dependencies>
</metadata>
<!-- A readme.txt to display when the package is installed -->
<files>
<file src="readme.txt" target="" />
<file src="icon.png" target="" />
</files>
</package>
Bağımlılıkları bildirme ve sürüm numaralarını belirtme hakkında ayrıntılar için bkz. packages.config ve paket sürümü oluşturma. Ayrıca, include öğe üzerindeki ve özniteliklerini kullanarak doğrudan pakette bulunan bağımlılıklardan yüzeylerden yüzey mümkündür excludedependency . Bkz .. nuspec başvurusu-bağımlılıklar.
Bildirim bundan oluşturulan pakete eklendiğinden, var olan paketleri inceleyerek istediğiniz sayıda ek örnek bulabilirsiniz. İyi bir kaynak, bilgisayarınızdaki genel paketler klasörüdür ve aşağıdaki komut tarafından döndürülen konumudur:
nuget locals -list global-packages
Herhangi bir package\version klasörüne gidin, dosyayı bir .zip dosyaya kopyalayın, sonra dosyayı açın .zip ve .nuspec içinde inceleyin.
Not
bir .nuspec Visual Studio projesinden oluştururken, bildirim, paket oluşturulduğunda projedeki bilgilerle değiştirilmiş belirteçleri içerir. bkz . Visual Studio projesinden. nuspec oluşturma.
. Nuspec dosyası oluşturma
Komple bir bildirim oluşturmak .nuspec , genellikle aşağıdaki yöntemlerden biri kullanılarak oluşturulan temel bir dosya ile başlar:
- Kural tabanlı çalışma dizini
- Derleme DLL 'SI
- bir Visual Studio projesi
- Varsayılan değerlere sahip yeni dosya
Ardından dosyayı el ile düzenleyerek son pakette istediğiniz içeriğin tam olarak oluşturulmasını sağlayabilirsiniz.
Önemli
Oluşturulan .nuspec dosyalar, paketini komutuyla oluşturmadan önce değiştirilmesi gereken yer tutucuları içerir nuget pack . .nuspecHerhangi bir yer tutucu içeriyorsa, bu komut başarısız olur.
Kural tabanlı çalışma dizininden
bir NuGet paketi yalnızca uzantısıyla yeniden adlandırılmış bir zıp dosyası olduğundan .nupkg , yerel dosya sisteminizde istediğiniz klasör yapısını oluşturmak ve ardından .nuspec dosyayı doğrudan bu yapıyla oluşturmak daha kolay olur. nuget packKomut daha sonra bu klasör yapısındaki tüm dosyaları otomatik olarak ekler (ile başlayan tüm klasörler hariç . ) ve özel dosyaları aynı yapıda tutmanıza olanak sağlar.
Bu yaklaşımın avantajı, pakete dahil etmek istediğiniz dosyaları (Bu konunun ilerleyen kısımlarında açıklandığı gibi) belirtmeniz gerekmez. Yapı işleminizin pakete giden tam klasör yapısını oluşturması, aksi takdirde bir projenin parçası olmayan diğer dosyaları kolayca dahil edebilirsiniz:
- Hedef projeye eklenmesi gereken içerik ve kaynak kodu.
- PowerShell komut dosyaları
- Bir projedeki mevcut yapılandırma ve kaynak kod dosyalarına dönüşümler.
Klasör kuralları aşağıdaki gibidir:
| Klasör | Açıklama | Paket yüklendikten sonra gerçekleştirilecek eylem |
|---|---|---|
| Asıl | readme.txt konumu | Visual Studio, paket yüklendiği zaman paket kökünde bir readme.txt dosyası görüntüler. |
| LIB/{tfd} | .dll.xml.pdb Verilen hedef çerçeve bilinen adı (TFI) için bütünleştirilmiş kod (), belge () ve sembol () dosyaları |
Derlemeler derleme ve çalışma zamanı için başvurular olarak eklenir; .xml ve .pdb Proje klasörlerine kopyalanabilir. Bkz. çerçeve hedefine özgü alt klasörler oluşturmak için birden çok hedef çerçeve destekleme . |
| ref/{tfd} | .dll.pdb Verilen hedef çerçeve bilinen adı (TFI) için bütünleştirilmiş kod () ve sembol () dosyaları |
Derlemeler yalnızca derleme süresi için başvuru olarak eklenir; Bu nedenle proje bin klasörüne hiçbir şey kopyalanmayacak. |
| zamanları | Mimariye özgü bütünleştirilmiş kod ( .dll ), simge ( .pdb ) ve yerel kaynak ( .pri ) dosyaları |
Derlemeler yalnızca çalışma zamanı için başvuru olarak eklenir; diğer dosyalar proje klasörlerine kopyalanır. AnyCPU/ref/{tfm} Karşılık gelen derleme zamanı derlemesini sağlamak için klasörü altında her zaman karşılık gelen (TFE) özel bütünleştirilmiş kod olmalıdır. Bkz. birden çok hedef çerçeveyi destekleme. |
| içerik | Rastgele dosyalar | İçerikler proje köküne kopyalanır. İçerik klasörünü, son olarak paketi tüketen hedef uygulamanın kökü olarak düşünün. Paketin uygulamanın /Images klasörüne görüntü eklemesi için, paketin içerik/görüntüler klasörüne yerleştirin. |
| derleme | (3. x +) MSBuild ve .props dosyaları |
Projeye otomatik olarak ekleniyor. |
| Buildmultihedefleme | (4.0 +).props platformlar arası hedefleme için MSBuild ve dosyalar |
Projeye otomatik olarak ekleniyor. |
| buildTransitive | (5.0 +) MSBuild ve .props herhangi bir tüketen projeye geçişli olarak akan dosyalardır. Bkz. özellik sayfası. |
Projeye otomatik olarak ekleniyor. |
| araçlar | Paket Yöneticisi konsolundan erişilebilen Powershell betikleri ve programları | toolsklasör, PATH yalnızca Paket Yöneticisi konsolunun ortam değişkenine eklenir (özel olarak, toolsPATH proje derlerken MSBuild olarak ayarlanamaz). |
Klasör yapınız herhangi bir sayıda hedef çerçeve için herhangi bir sayıda derleme içerebildiğinden, bu yöntem birden çok çerçeveyi destekleyen paketler oluştururken gereklidir.
Herhangi bir durumda, istenen klasör yapısına sahip olduktan sonra dosyayı oluşturmak için bu klasörde aşağıdaki komutu çalıştırın .nuspec :
nuget spec
Yine, oluşturulan, .nuspec klasör yapısındaki dosyalara açık başvuru içermez. NuGet, paket oluşturulduğunda tüm dosyaları otomatik olarak ekler. Bununla birlikte, bildirimin diğer bölümlerinde yer tutucu değerlerini de düzenlemeniz gerekir.
Bir derleme DLL 'sinden
Derlemeden bir paket oluşturduğunuzda, .nuspec aşağıdaki komutu kullanarak derlemedeki meta verilerden bir dosya oluşturabilirsiniz:
nuget spec <assembly-name>.dll
Bu formun kullanılması, bildirimdeki bazı yer tutucuları derlemedeki belirli değerlerle değiştirir. Örneğin, <id> özelliği derleme adına ayarlanır ve <version> derleme sürümü olarak ayarlanır. Ancak bildirimde bulunan diğer özellikler, derlemede eşleşen değerlere sahip değildir ve bu nedenle yine de yer tutucu içerir.
Visual Studio projesinden
.nuspec.csproj.vbproj Bu projeye yüklenmiş olan diğer paketlere otomatik olarak bağımlılık olarak başvurulduğundan, veya dosyasından bir oluşturma işlemi kullanışlıdır. Aşağıdaki komutu, proje dosyasıyla aynı klasörde kullanmanız yeterlidir:
# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget spec
Elde edilen <project-name>.nuspec Dosya, zaten yüklenmiş olan diğer paketlere yönelik başvurular da dahil olmak üzere, paketleme sırasında değişen <project-name>.nuspec , projedeki değerlerle birlikte içerir.
. Nuspeciçine dahil edilecek paket bağımlılıklarınız varsa, kullanın ve . nuspec dosyasını oluşturulan . nupkg dosyasından alın. Örneğin, aşağıdaki komutu kullanın.
# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget pack myproject.csproj
Belirteç $ , proje özelliğinin her iki tarafında da semboller tarafından sınırlandırılır. Örneğin, <id> Bu şekilde oluşturulan bir bildirimin değeri, genellikle aşağıdaki gibi görünür:
<id>$id$</id>
Bu belirteç, AssemblyName paket zamanında proje dosyasındaki değerle değiştirilmiştir. Proje değerlerinin belirteçlere tam eşlemesi için .nuspec , .nuspecbakın.
Belirteçler, projeyi güncelleştirmediğiniz gibi önemli değerleri, içindeki sürüm numarası gibi güncelleştirmek zorunda kalduymasını sağlar .nuspec . (İsterseniz belirteçleri, her zaman değişmez değerlerle değiştirebilirsiniz).
Visual Studio bir projeden çalışırken, daha sonra . nupkg dosyasını oluşturmak için nuget paketini çalıştırma bölümünde açıklandığı gibi çeşitli ek paketleme seçeneklerinin kullanılabilir olduğunu unutmayın.
Çözüm düzeyi paketler
yalnızca 2. x NuGet. NuGet 3.0 + sürümünde kullanılamaz.
NuGet 2. x, Paket Yöneticisi konsolu için araçlar veya ek komutlar ( tools klasörün içeriği) yükleyen, ancak çözümdeki herhangi bir projeye başvuru, içerik veya yapılandırma özelleştirmeleri ekleyen çözüm düzeyindeki bir paket kavramını destekler. Bu tür paketler doğrudan lib , veya klasörlerinde hiçbir dosya içermez contentbuild ve bağımlılıklarından hiçbirinin ilgili lib , content veya klasörlerinde dosyaları yoktur build .
NuGet, yüklenen çözüm düzeyindeki paketleri packages.config.nuget proje dosyası yerine klasöründeki bir dosyada izler packages.config .
Varsayılan değerlere sahip yeni dosya
Aşağıdaki komut, uygun dosya yapısıyla başlayabilmenizi sağlayan yer tutucuları olan varsayılan bir bildirim oluşturur:
nuget spec [<package-name>]
<Paket adını atlarsanız > , elde edilen dosya olur Package.nuspec . Gibi bir ad sağlarsanız, Contoso.Utility.UsefulStuff dosya olur Contoso.Utility.UsefulStuff.nuspec .
Sonuç olarak .nuspec , gibi değerler için yer tutucular içerir projectUrl . Son dosyayı oluşturmak için dosyayı kullanmadan önce düzenlendiğinizden emin olun .nupkg .
Benzersiz bir paket tanımlayıcısı seçin ve sürüm numarasını ayarla
Paket tanımlayıcısı ( <id> öğe) ve sürüm numarası ( <version> öğe), pakette bulunan tam kodu benzersiz bir şekilde tanımladıklarından, bildirimdeki en önemli iki değerden oluşur.
Paket tanımlayıcısı için en iyi uygulamalar:
- Benzersizlik: tanımlayıcı, NuGet.org genelinde benzersiz olmalıdır veya paketi barındıran Galeri. Bir tanımlayıcıya karar vermeden önce, adın zaten kullanımda olup olmadığını denetlemek için ilgili galeride arama yapın. Çakışmaları önlemek için iyi bir model, tanımlayıcı ilk parçası olarak şirketinizin adını kullanmaktır
Contoso.. - Ad alanı benzeri adlar: kısa çizgi yerine nokta gösterimini kullanarak .net 'teki ad alanlarına benzer bir model izleyin. Örneğin,
Contoso.Utility.UsefulStuffveya yerine kullanınContoso-Utility-UsefulStuffContoso_Utility_UsefulStuff. Tüketiciler ayrıca, paket tanımlayıcısı kodda kullanılan ad alanları ile eşleştiğinde yararlı olduğunu bulur. - Örnek paketler: başka bir paketin nasıl kullanılacağını gösteren bir örnek kod paketi oluşturursanız, ' de olduğu gibi, tanımlayıcıda bir sonek olarak iliştirme
Contoso.Utility.UsefulStuff.Sample. (Örnek paketin, diğer pakete bağımlılığı vardır.) Örnek bir paket oluştururken, daha önce açıklanan kural tabanlı çalışma dizini yöntemini kullanın.contentKlasöründe, örnek kodu içinde olarak adlandırılan bir klasörde düzenleyin\Samples\<identifier>\Samples\Contoso.Utility.UsefulStuff.Sample.
Paket sürümü için en iyi uygulamalar:
- Genel olarak, paketin sürümünü kitaplıkla eşleşecek şekilde ayarlayın, ancak bu kesinlikle gerekli değildir. Bu, Hangi derlemelerin paketlenecek olduğuna karar verirkendaha önce açıklandığı gibi, bir paketi tek bir derlemeyle sınırlandırdığınızda bu basit bir işlemdir. genel olarak, derleme sürümlerini değil, bağımlılıklar çözümlenirken NuGet kendisinin paket sürümleriyle uğraşır olduğunu unutmayın.
- standart olmayan bir sürüm düzeni kullanırken, paket sürümü oluşturmabölümünde açıklandığı gibi NuGet sürüm oluşturma kurallarını dikkate aldığınızdan emin olun.
Aşağıdaki kısa blog gönderisi serisi, sürüm oluşturmayı anlamak için de yararlıdır:
Benioku dosyası ve diğer dosyaları ekleme
Pakete dahil edilecek dosyaları doğrudan belirtmek için, <files>.nuspec dosyasında etiketini <files> eden düğümünü kullanın <metadata> :
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Add a readme -->
<file src="readme.txt" target="" />
<!-- Add files from an arbitrary folder that's not necessarily in the project -->
<file src="..\..\SomeRoot\**\*.*" target="" />
</files>
</package>
İpucu
Kural tabanlı çalışma dizini yaklaşımını kullanırken, readme.txt paket köküne ve klasördeki diğer içeriklere yerleştirebilirsiniz content . <file>Bildirimde hiçbir öğe gerekli değildir.
paket kökünde adlı bir dosyayı eklediğinizde readme.txt Visual Studio, paketi doğrudan yükledikten hemen sonra bu dosyanın içeriğini düz metin olarak görüntüler. (Benioku dosyaları, bağımlılıklar olarak yüklenen paketler için gösterilmez). Örneğin, HtmlAgilityPack paketinin Benioku dosyası şöyle görünür:

Not
dosyada boş bir düğüm eklerseniz <files>.nuspec NuGet, pakette bulunan ve klasördeki diğer içerikleri içermez lib .
MSBuild props ve hedefleri bir pakete ekle
Bazı durumlarda, özel bir araç veya derleme sırasında işlem çalıştırma gibi paketinizi kullanan projelere özel yapı hedefleri veya özellikler eklemek isteyebilirsiniz. Bu, dosyaları forma <package_id>.targets veya <package_id>.props (gibi Contoso.Utility.UsefulStuff.targets ) \build projenin klasörü içine yerleştirerek yapabilirsiniz.
Kök \build klasördeki dosyalar tüm hedef çerçeveler için uygun kabul edilir. Çerçeveye özgü dosyalar sağlamak için, önce bunları aşağıdaki gibi uygun alt klasörlere yerleştirin:
\build
\netstandard1.4
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
\net462
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
Ardından .nuspec dosyada, düğümdeki bu dosyalara başvurduğunuzdan emin olun <files> :
<?xml version="1.0"?>
<package >
<metadata minClientVersion="2.5">
<!-- ... -->
</metadata>
<files>
<!-- Include everything in \build -->
<file src="build\**" target="build" />
<!-- Other files -->
<!-- ... -->
</files>
</package>
bir paketteki MSBuild props ve hedeflerin dahil edilmesi, NuGet 2,5 ile tanıtılmıştı. bu nedenle, metadata paketi kullanmak için gereken en düşük NuGet istemci sürümünü göstermek için özniteliğini öğesine eklemeniz önerilir.
NuGet dosyaları içeren bir paket yüklediğinde \build , <Import> ve dosyalarını gösteren proje dosyasına MSBuild öğeler ekler .targets.props . ( .props Proje dosyasının üst kısmına eklenir; .targets alt kısmına eklenir.) <Import>her hedef çerçeve için ayrı bir koşullu MSBuild öğesi eklenir.
MSBuild .props ve .targets platformlar arası hedefleme dosyaları \buildMultiTargeting klasöre yerleştirilebilir. paket yüklemesi sırasında NuGet, <Import> hedef framework ayarlanmamışsa (MSBuild özelliği boş olmalıdır) karşılık gelen öğeleri, koşulla birlikte proje dosyasına ekler $(TargetFramework) .
NuGet 3. x ile hedefler projeye eklenmez, ancak bunun yerine ve ile kullanılabilir hale getirilir {projectName}.nuget.g.targets{projectName}.nuget.g.props .
. Nupkg dosyasını oluşturmak için NuGet paketini çalıştırın
Bir bütünleştirilmiş kod veya kural tabanlı çalışma dizini kullanırken, nuget pack.nuspec dosyanıza çalıştırarak, <project-name> özel dosya adı ile değiştirerek bir paket oluşturun:
nuget pack <project-name>.nuspec
Bir Visual Studio projesini kullanırken proje dosyanız ile çalıştırın. Bu dosya, projenin dosyasını otomatik olarak yükler ve proje dosyasındaki değerleri kullanarak içindeki nuget pack.nuspec belirteçleri değiştirir:
nuget pack <project-name>.csproj
Not
Proje, belirteç değerlerinin kaynağı olduğundan, belirteç değiştirme için proje dosyasını doğrudan kullanmak gerekir. Bir dosyayla kullanırsanız belirteç nuget pack değiştirme .nuspec olmaz.
Her durumda, nuget pack veya gibi bir noktayla başlanan klasörleri .git.hg dışlar.
NuGet dosyasında düzeltmesi gereken hatalar olup olmadığını gösterir; örneğin, bildirimde yer tutucu .nuspec değerlerinin değişmesini unutma.
Başarılı nuget pack olduktan sonra, Paket Yayımlama konusunda açıklandığı gibi uygun .nupkg bir galeride yayımlayacak nuget pack
İpucu
Bir paketi oluşturduk sonra incelemenin yararlı bir yolu, paketi Paket Gezgini aracında açmaktır. Bu size paket içeriğinin ve bildiriminin grafik görünümünü sağlar. Ayrıca, sonuçta elde edilen dosyayı bir .nupkg dosya olarak yeniden .zip adlandırabilirsiniz ve dosyanın içeriğini doğrudan keşfedebilirsiniz.
Ek seçenekler
Dosyaları dışlamak, bildirimdeki sürüm numarasını geçersiz kılmak ve diğer özelliklerin yanında çıktı klasörünü değiştirmek için ile çeşitli komut nuget pack satırı anahtarları kullanabilirsiniz. Tam liste için paket komutu başvurusuna bakın.
Aşağıdaki seçenekler, projelerde yaygın olarak kullanılan Visual Studio şunlardır:
Başvurulan projeler:Proje diğer projelere başvurursa, seçeneğini kullanarak başvurulan projeleri paketin bir parçası olarak veya bağımlılıklar olarak eklersiniz:
nuget pack MyProject.csproj -IncludeReferencedProjectsBu ekleme işlemi yineli olduğu için B ve C projelerine başvurursa ve bu projeler D, E ve F'ye başvurursa B, C, D, E ve F'den gelen dosyalar pakete
MyProject.csprojdahil edilir.Başvurulan bir proje kendi dosyasını içerirse, NuGet bu başvurulan
.nuspecprojeyi bağımlılık olarak ekler. Bu projeyi ayrı olarak paketle ve yayımla.Derleme yapılandırması:Varsayılan olarak, NuGet proje dosyasında ayarlanmış varsayılan derleme yapılandırmasını kullanır, genellikle hata ayıklar. Sürüm gibi farklı bir derleme yapılandırmasından dosyalarıpaketlemek için, seçeneğini yapılandırmayla birlikte kullanın:
nuget pack MyProject.csproj -properties Configuration=ReleaseSemboller:Tüketicilerin hata ayıklayıcıda paket kodunuz boyunca adım atlarına izin verecek semboller eklemek için seçeneğini kullanın:
nuget pack MyProject.csproj -symbols
Test paketi yüklemesi
Bir paketi yayımlamadan önce genellikle bir projeye paket yükleme işlemini test etmek istersiniz. Testler, dosyaların projenin doğru yerlerinde olması gerekir.
Yüklemeleri normal paket yükleme adımlarını Visual Studio komut satırı üzerinde el ile test edebilirsiniz.
Otomatikleştirilmiş test için temel süreç aşağıdaki gibidir:
- Dosyayı
.nupkgyerel bir klasöre kopyalayın. - komutunu kullanarak klasörünü paket kaynaklarınıza ekleyin
nuget sources add -name <name> -source <path>(bkz.nuget sources add -name <name> -source <path>Bu yerel kaynağı herhangi bir bilgisayarda yalnızca bir kez ayarlamanız gerekir. - verilen kaynağın adıyla eşleşen bir yere kullanarak
nuget install <packageID> -source <name><name>paketi bu kaynaktannuget sourcesyükleyin. Kaynağın belirterek paketin yalnızca o kaynaktan yüklenmiş olması gerekir. - Dosyaların doğru yüklendiğinden emin olmak için dosya sisteminizi inceleme.
Sonraki Adımlar
Dosya olan bir paket oluşturduktan sonra, paketi Paketi Yayımlama konusunda açıklandığı .nupkg gibi istediğiniz .nupkg
Ayrıca, paketinizin özelliklerini genişletmek veya aşağıdaki konularda açıklandığı gibi diğer senaryoları desteklemek de istiyor olabilirsiniz:
- Paket sürümü oluşturma
- Birden çok hedef çerçeveyi destekleme
- Kaynak ve yapılandırma dosyalarının dönüşümleri
- Yerelleştirme
- Yayın öncesi sürümler
- Paket türünü ayarlama
- COM birlikte çalışma derlemeleriyle paket oluşturma
Son olarak, dikkat etmek için ek paket türleri vardır: