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' Den packages.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.dll ve Parser.dll kendi yararlıysa, her biri için bir paket oluşturun. Bunun yapılması Parser.dll , geliştiricilerin bağımsız olarak kullanmasını sağlar Utilities.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.dll yalnızca tarafından kullanılan kodu içeriyorsa Utilities.dll , aynı pakette tutulması iyi olur Parser.dll .

  • Benzer şekilde, Utilities.dll ne olursa Utilities.resources.dll yapı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:

  1. Paketin içeriğini açıklar ve pakete dahil edilmiştir.
  2. 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.
  3. 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 ( licenseUrl kullanım dışı, bunun yerine licenseUrl kullanın)
  • Bir simge dosyası ( iconUrl bunun yerine iconUrl kullanı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:

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.UsefulStuff veya yerine kullanın Contoso-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:

yükleme sonrasında bir NuGet paketi için benioku dosyası görüntüleme

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

    Bu 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.csproj dahil edilir.

    Başvurulan bir proje kendi dosyasını içerirse, NuGet bu başvurulan .nuspec projeyi 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=Release
    
  • Semboller: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:

  1. Dosyayı .nupkg yerel bir klasöre kopyalayın.
  2. 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.
  3. verilen kaynağın adıyla eşleşen bir yere kullanarak nuget install <packageID> -source <name><name> paketi bu kaynaktan nuget sources yükleyin. Kaynağın belirterek paketin yalnızca o kaynaktan yüklenmiş olması gerekir.
  4. 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:

Son olarak, dikkat etmek için ek paket türleri vardır: