【问题标题】:How to create a NuGet Package using NuGet.Core?如何使用 NuGet.Core 创建 NuGet 包?
【发布时间】:2011-10-12 03:20:35
【问题描述】:

我想创建一个使用 NuGet 包 NuGet.Core 的应用程序。 它有一个名为 PackageBuilder 的类,使之成为可能。是否有可用的示例/教程/文档?

【问题讨论】:

标签: c# .net visual-studio nuget


【解决方案1】:

一个非常简单的例子:

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

【讨论】:

  • 为什么这不是公认的答案?当前的答案似乎更像是评论。
  • 新的 NuGet.Packaging 包中的大部分功能都可以实现,因为 Nuget.Core 不再存在。
【解决方案2】:

基于 David 代码的改进示例。变化:

  • 文件夹中除 *.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);
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多