private void ReadManifest(Stream stream, string basePath)
{
// Deserialize the document and extract the metadata
Manifest manifest = Manifest.ReadFrom(stream);
IPackageMetadata metadata = manifest.Metadata;
Id = metadata.Id;
Version = metadata.Version;
Title = metadata.Title;
Authors.AddRange(metadata.Authors);
Owners.AddRange(metadata.Owners);
IconUrl = metadata.IconUrl;
LicenseUrl = metadata.LicenseUrl;
ProjectUrl = metadata.ProjectUrl;
RequireLicenseAcceptance = metadata.RequireLicenseAcceptance;
Description = metadata.Description;
Summary = metadata.Summary;
ReleaseNotes = metadata.ReleaseNotes;
Language = metadata.Language;
Copyright = metadata.Copyright;
Serviceable = metadata.Serviceable;
MinClientVersion = metadata.MinClientVersion;
DevelopmentDependency = metadata.DevelopmentDependency;
if (metadata.Tags != null)
{
Tags.AddRange(ParseTags(metadata.Tags));
}
DependencySets.AddRange(metadata.DependencySets);
FrameworkReferences.AddRange(metadata.FrameworkAssemblies);
if (metadata.PackageAssemblyReferences != null)
{
PackageAssemblyReferences.AddRange(metadata.PackageAssemblyReferences);
}
// If there's no base path then ignore the files node
if (basePath != null)
{
if (manifest.Files == null)
{
AddFiles(basePath, @"**\*.*", null);
}
else
{
foreach (ManifestFile file in manifest.Files)
{
AddFiles(basePath, file.Source, file.Target, file.Exclude);
}
}
}
}