如何使用NuGet.Core创建NuGet包?

19

我想创建一个应用程序,使用NuGet包NuGet.Core。 它有一个称为PackageBuilder的类,可以实现这一点。 是否有任何可用的示例/教程/文档?


似乎唯一的文档是一个博客文章。这对于试图使用该库的人来说几乎是不够的。 - Colonel Panic
礼貌地请求文档 https://github.com/NuGet/Home/issues/2425 - Colonel Panic
2个回答

38

一个非常简单的例子:

  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);
}

1
为什么这不是被采纳的答案?当前的答案更像是一条评论。 - glopes
大部分都可以使用新的NuGet.Packaging包来完成,因为Nuget.Core已经不存在了。 - Exar666Kun

8
基于David的代码进行了改进的示例。改动如下:
  • All files in a folder except *.nuspec are added to package.
  • A row defining package file name.

    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);
    }
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接