2011-07-24 10 views
19

Me gustaría crear una aplicación que haga uso del NuGet Package NuGet.Core. Tiene una clase llamada PackageBuilder que lo hace posible. ¿Hay alguna muestra/tutorial/documentación disponible?¿Cómo crear un paquete NuGet usando NuGet.Core?

+0

Al parecer la única documentación es [una entrada en el blog] (http://blog.nuget.org/20130520/Play-with-packages.html). Eso no es adecuado para las personas que intentan usar la biblioteca. –

+0

Solicitud cortés de documentación https://github.com/NuGet/Home/issues/2425 –

Respuesta

2

No conozco ningún tutorial o documentación sobre cómo crear un paquete NuGet usando NuGet.Core. En cambio, echaría un vistazo al código fuente de NuGet.exe. Tiene un comando que construye un paquete desde un archivo .nuspec. El PackCommand class, que usa la clase PackageBuilder, debe mostrarle lo que debe hacer.

+0

No encuentro PackCommand en Nuget.Core. ¿Puedes ayudarme? – Rookian

+0

PackCommand está en el espacio de nombres NuGet.Commands en el ensamblado NuGet.exe. –

32

Un ejemplo muy simple:

  1. crear una carpeta que contiene los archivos que desea en el paquete.
  2. escribir algo de código como este:

    
    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

¿Por qué esta no es la respuesta aceptada? La respuesta actual parece más un comentario. – glopes

7

Un ejemplo mejorado basado en el código de David. Cambios:

  • Todos los archivos en una carpeta excepto * .nuspec se agregan al paquete.
  • Una fila que define el nombre del archivo del paquete.

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