Domanda

Vorrei creare un'applicazione che fa uso del pacchetto NuGet NuGet.Core. Ha una classe chiamata PackageBuilder che rende possibile. C'è qualche / tutorial / documentazione campione disponibili?

È stato utile?

Soluzione

Non sono a conoscenza di alcun tutorial o documentazione su come costruire un pacchetto di NuGet utilizzando NuGet.Core. Invece vorrei prendere uno sguardo al codice sorgente per NuGet.exe. Ha un il comando pacchetto che costruisce un pacchetto da un file .nuspec. La classe PackCommand, che utilizza il classe PackageBuilder, dovrebbe mostrare che cosa è necessario fare.

Altri suggerimenti

Un esempio molto semplice:

  1. creare una cartella contenente i file che si desidera nel pacchetto.
  2. scrivere del codice in questo modo:

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

Un migliorato esempio basata sul codice di David. Modifiche:

  • Tutti i file in una cartella, tranne * .nuspec vengono aggiunti al pacchetto.
  • Un nome file del pacchetto fila definizione.

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