Как создать пакет NuGet с помощью NuGet.Core?
Я хотел бы создать приложение, которое использует пакет NuGet NuGet.Core.
У этого есть класс, названный PackageBuilder, который делает это возможным. Есть ли доступный образец/учебник/документация?
Ответы
Ответ 1
Я не знаю ни одного учебника или документации о том, как создать пакет NuGet с помощью NuGet.Core. Вместо этого я бы посмотрел исходный код для NuGet.exe. Он имеет команду pack, которая создает пакет из файла .nuspec. Класс PackCommand, который использует класс PackageBuilder, должен показать вам, что вам нужно делать.
Ответ 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);
}
Ответ 3
Улучшенный пример, основанный на коде Дэвида. Изменения:
- Все файлы в папке, кроме *.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);
}