How to create a NuGet Package using NuGet.Core?

后端 未结 2 1968
时光取名叫无心
时光取名叫无心 2021-02-04 02:48

I would like to create a application which makes use of the NuGet Package NuGet.Core. It has a class called PackageBuilder that makes it possible. Is there any sample / tutorial

相关标签:
2条回答
  • 2021-02-04 03:32

    A really simple example:

    1. create a folder containing the files you want in your package.
    2. Write some code like this:

      
      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);
      }
      
    0 讨论(0)
  • 2021-02-04 03:47

    An improved example based on David's code. Changes:

    • 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);
      }
      
    0 讨论(0)
提交回复
热议问题