Как создать пакет NuGet с помощью NuGet.Core? - PullRequest
19 голосов
/ 24 июля 2011

Я хотел бы создать приложение, которое использует пакет NuGet NuGet.Core. У него есть класс PackageBuilder, который делает это возможным. Есть ли образец / учебник / документация?

Ответы [ 3 ]

35 голосов
/ 02 ноября 2012

Действительно простой пример:

  1. создайте папку, содержащую нужные файлы в вашем пакете.
  2. Напишите такой код:

    
    ManifestMetadata metadata = new ManifestMetadata()
        {
            Authors = "mauvo",
            Version = "1.0.0.0",
            Id =  "myPackageIdentifier",
            Description = "A description",
        };
    
    PackageBuilder builder = new PackageBuilder();
    builder.PopulateFiles("folderPath/", new[] {new ManifestFile() {Source = "**"}});
    builder.Populate(metadata);
    using(FileStream stream = File.Open(packagePath, FileMode.OpenOrCreate))
    {
        builder.Save(stream);
    }
    
7 голосов
/ 02 сентября 2015

Улучшенный пример, основанный на коде Дэвида. Изменения:

  • Все файлы в папке, кроме * .nuspec, добавляются в пакет.
  • Строка, определяющая имя файла пакета.

    ManifestMetadata metadata = new ManifestMetadata()
    {
        Authors = "mauvo",
        Version = "1.0.0.0",
        Id =  "myPackageIdentifier",
        Description = "A description",
    };
    
    PackageBuilder builder = new PackageBuilder();
    var files = Directory.GetFiles(packagePath, "*", SearchOption.AllDirectories)
        .Where(f => !f.EndsWith(".nuspec"))
        .Select(f => new ManifestFile { Source = f, Target = f.Replace(path, "") })
        .ToList();
    builder.PopulateFiles("", files);
    builder.Populate(metadata);
    string packageFile = Path.Combine(packagePath, builder.GetFullName()) + ".nupkg";
    using(FileStream stream = File.Open(packageFile, FileMode.OpenOrCreate))
    {
        builder.Save(stream);
    }
    
2 голосов
/ 26 июля 2011

Я не знаю ни одного учебного пособия или документации о том, как создать пакет NuGet с использованием NuGet.Core.Вместо этого я бы взглянул на исходный код NuGet.exe.Он имеет команду pack , которая создает пакет из файла .nuspec.Класс PackCommand , который использует класс PackageBuilder, должен показать вам, что вам нужно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...