NuGet.PackageBuilder.Save C# (CSharp) Method

Save() public method

public Save ( Stream stream ) : void
stream Stream
return void
        public void Save(Stream stream)
        {
            // Make sure we're saving a valid package id
            PackageIdValidator.ValidatePackageId(Id);

            // Throw if the package doesn't contain any dependencies nor content
            if (!Files.Any() && !DependencySets.Any() && !FrameworkReferences.Any())
            {
                throw new InvalidOperationException(NuGetResources.CannotCreateEmptyPackage);
            }

            ValidateDependencySets(Version, DependencySets);
            ValidateReferenceAssemblies(Files, PackageAssemblyReferences);

            using (Package package = Package.Open(stream, FileMode.Create))
            {
                // Validate and write the manifest
                WriteManifest(package, DetermineMinimumSchemaVersion(Files));

                // Write the files to the package
                WriteFiles(package);

                // Copy the metadata properties back to the package
                package.PackageProperties.Creator = String.Join(",", Authors);
                package.PackageProperties.Description = Description;
                package.PackageProperties.Identifier = Id;
                package.PackageProperties.Version = Version.ToString();
                package.PackageProperties.Language = Language;
                package.PackageProperties.Keywords = ((IPackageMetadata) this).Tags;
                package.PackageProperties.Title = Title;
                package.PackageProperties.Subject = "NuGet Package Explorer";
            }
        }

Usage Example

Example #1
0
        private static void BuildPackages()
        {
            var           directory  = new DirectoryInfo(BuildDirectory);
            XmlSerializer serializer = new XmlSerializer(typeof(game));
            var           fs         = File.Open(directory.GetFiles().First().FullName, FileMode.Open);
            var           game       = (game)serializer.Deserialize(fs);

            fs.Close();
            var builder = new NuGet.PackageBuilder()
            {
                Id          = game.id,
                Description = game.description,
                ProjectUrl  = new Uri(game.gameurl),
                Version     = new SemanticVersion(game.version),
                Title       = game.name,
                IconUrl     = new Uri(game.iconurl),
            };

            foreach (var author in game.authors.Split(','))
            {
                builder.Authors.Add(author);
            }
            foreach (var tag in game.tags.Split(' '))
            {
                builder.Tags.Add(tag);
            }
            // files and maybe release notes
            var allFiles = directory
                           .GetFiles("*.*", SearchOption.AllDirectories)
                           .Where(x => x.Extension.ToLower() != ".nupkg" && x.Extension.ToLower() != ".o8g");

            foreach (var file in allFiles)
            {
                var path    = file.FullName;
                var relPath = path.Replace(directory.FullName, "\\def");
                var pf      = new PhysicalPackageFile()
                {
                    SourcePath = path, TargetPath = relPath
                };

                builder.Files.Add(pf);
            }
            var feedPath   = Path.Combine(directory.FullName, game.name + '-' + game.version + ".nupkg");
            var olPath     = Path.Combine(directory.FullName, game.name + '-' + game.version + ".o8g");
            var filestream = File.Open(feedPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None);

            builder.Save(filestream);
            filestream.Flush(true);
            filestream.Close();
            filestream = File.Open(olPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None);
            builder.Save(filestream);
            filestream.Flush(true);
            filestream.Close();
        }
All Usage Examples Of NuGet.PackageBuilder::Save