2011-07-24 40 views
19

Tôi muốn tạo một ứng dụng sử dụng NuGet Package NuGet.Core. Nó có một lớp được gọi là PackageBuilder mà làm cho nó có thể. Có bất kỳ mẫu/hướng dẫn/tài liệu nào có sẵn không?Cách tạo Gói NuGet bằng NuGet.Core?

+0

Có vẻ như tài liệu duy nhất là [một bài đăng blog] (http://blog.nuget.org/20130520/Play-with-packages.html). Đó là hầu như không đủ cho những người đang cố gắng sử dụng thư viện. –

+0

Yêu cầu lịch sự về tài liệu https://github.com/NuGet/Home/issues/2425 –

Trả lời

2

Tôi không biết bất kỳ hướng dẫn hoặc tài liệu nào về cách xây dựng gói NuGet bằng NuGet.Core. Thay vào đó, tôi sẽ xem xét mã nguồn cho NuGet.exe. Nó có một gói gói xây dựng một gói từ tệp .nuspec. PackCommand class, sử dụng lớp PackageBuilder, sẽ cho bạn thấy những gì bạn cần làm.

+0

Tôi không thể tìm thấy PackCommand trong Nuget.Core. Bạn có thể giúp tôi không? – Rookian

+0

PackCommand nằm trong không gian tên NuGet.Commands trong hội đồng NuGet.exe. –

32

Một ví dụ rất đơn giản:

  1. tạo ra một thư mục chứa các tập tin mà bạn muốn trong gói của bạn.
  2. Viết một số mã như thế này:

    
    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

Tại sao đây không phải là câu trả lời được chấp nhận? Câu trả lời hiện tại có vẻ giống như một bình luận. – glopes

7

Một ví dụ được cải tiến dựa trên mã của David. Thay đổi:

  • Tất cả các tệp trong thư mục ngoại trừ * .nuspec được thêm vào gói.
  • Hàng xác định tên tệp gói.

    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); 
    } 
    
Các vấn đề liên quan