以编程方式创建NuGet包

时间:2014-10-31 19:37:29

标签: nuget nuget-package nuget-spec

我正在尝试使用Nuget.core API以编程方式创建一个基本的NuGet包。

首先,我填充NuSpec清单文件的元数据和文件字段:

Manifest nuspec = new Manifest(); //creating a nuspec

ManifestMetadata metaDataLocal = new ManifestMetadata()
{
    Authors = "mauvo",
    Version = "1.0.0.0",
    Id = "myPackageIdentifier",
    Description = "A description",
};

nuspec.Metadata = metaDataLocal; //populating nuspec's metadata

ManifestFile mf = new ManifestFile();
mf.Source = "bin\\Debug\\DX11VideoRenderer.dll";
mf.Target = "lib";

List<ManifestFile> listManifestFile = new List<ManifestFile>();

listManifestFile.Add(mf);
nuspec.Files = listManifestFile; //populating nuspec's Files field

然后我使用包构建器类来创建包并将其保存到我的项目的debug文件夹中:

PackageBuilder builder = new PackageBuilder() 
{
    Id = "1",
    Description = "Some test package"
};

builder.Populate(nuspec.Metadata);

foreach (ManifestFile value in nuspec.Files)
{
    builder.PopulateFiles(value.Target, nuspec.Files);
    builder.Files.Add(new PhysicalPackageFile()
    {
        SourcePath = value.Target,
        TargetPath = @"lib\" 
    });
}

using (FileStream stream = File.Open("bin\\Debug", FileMode.OpenOrCreate))
{
    builder.Save(stream);
}

我已经硬编码了所有源路径,目标路径,包信息和元数据。但由于某种原因,没有创建包。代码运行没有任何错误。

1 个答案:

答案 0 :(得分:1)

我猜它可能正在保存,但文件的名称是Debug而不是x.nupkg

using (FileStream stream = File.Open("bin\\Debug", FileMode.OpenOrCreate))
{                                    ^^^^^^^^^^^^
    builder.Save(stream);
}