Port latest features from NuGet.Core 2.11
This commit is contained in:
parent
6e1c39d764
commit
f3f6a2bf52
4 changed files with 75 additions and 3 deletions
|
@ -0,0 +1,17 @@
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace NuGet
|
||||||
|
{
|
||||||
|
public class ManifestContentFiles
|
||||||
|
{
|
||||||
|
public string Include { get; set; }
|
||||||
|
|
||||||
|
public string Exclude { get; set; }
|
||||||
|
|
||||||
|
public string BuildAction { get; set; }
|
||||||
|
|
||||||
|
public string CopyToOutput { get; set; }
|
||||||
|
|
||||||
|
public string Flatten { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -82,5 +82,7 @@ namespace NuGet
|
||||||
public ICollection<PackageReferenceSet> PackageAssemblyReferences { get; set; } = new List<PackageReferenceSet>();
|
public ICollection<PackageReferenceSet> PackageAssemblyReferences { get; set; } = new List<PackageReferenceSet>();
|
||||||
|
|
||||||
public IEnumerable<FrameworkAssemblyReference> FrameworkAssemblies { get; set; } = new List<FrameworkAssemblyReference>();
|
public IEnumerable<FrameworkAssemblyReference> FrameworkAssemblies { get; set; } = new List<FrameworkAssemblyReference>();
|
||||||
|
|
||||||
|
public ICollection<ManifestContentFiles> ContentFiles { get; set; } = new List<ManifestContentFiles>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ namespace NuGet
|
||||||
DependencySets = new List<PackageDependencySet>();
|
DependencySets = new List<PackageDependencySet>();
|
||||||
FrameworkAssemblies = new List<FrameworkAssemblyReference>();
|
FrameworkAssemblies = new List<FrameworkAssemblyReference>();
|
||||||
PackageAssemblyReferences = new List<PackageReferenceSet>();
|
PackageAssemblyReferences = new List<PackageReferenceSet>();
|
||||||
|
ContentFiles = new List<ManifestContentFiles>();
|
||||||
Authors = new List<string>();
|
Authors = new List<string>();
|
||||||
Owners = new List<string>();
|
Owners = new List<string>();
|
||||||
Tags = new List<string>();
|
Tags = new List<string>();
|
||||||
|
@ -152,6 +153,12 @@ namespace NuGet
|
||||||
private set;
|
private set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ManifestContentFiles> ContentFiles
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
}
|
||||||
|
|
||||||
public Version MinClientVersion
|
public Version MinClientVersion
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
|
@ -292,6 +299,7 @@ namespace NuGet
|
||||||
AppendIfNotNull(DependencySets, manifestMetadata.DependencySets);
|
AppendIfNotNull(DependencySets, manifestMetadata.DependencySets);
|
||||||
AppendIfNotNull(FrameworkAssemblies, manifestMetadata.FrameworkAssemblies);
|
AppendIfNotNull(FrameworkAssemblies, manifestMetadata.FrameworkAssemblies);
|
||||||
AppendIfNotNull(PackageAssemblyReferences, manifestMetadata.PackageAssemblyReferences);
|
AppendIfNotNull(PackageAssemblyReferences, manifestMetadata.PackageAssemblyReferences);
|
||||||
|
AppendIfNotNull(ContentFiles, manifestMetadata.ContentFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PopulateFiles(string basePath, IEnumerable<ManifestFile> files)
|
public void PopulateFiles(string basePath, IEnumerable<ManifestFile> files)
|
||||||
|
|
|
@ -70,6 +70,7 @@ namespace NuGet
|
||||||
TargetFramework));
|
TargetFramework));
|
||||||
|
|
||||||
elem.Add(GetXElementFromFrameworkAssemblies(ns, metadata.FrameworkAssemblies));
|
elem.Add(GetXElementFromFrameworkAssemblies(ns, metadata.FrameworkAssemblies));
|
||||||
|
elem.Add(GetXElementFromManifestContentFiles(ns, metadata.ContentFiles));
|
||||||
|
|
||||||
return elem;
|
return elem;
|
||||||
}
|
}
|
||||||
|
@ -127,6 +128,8 @@ namespace NuGet
|
||||||
|
|
||||||
metadata.FrameworkAssemblies = GetFrameworkAssembliesFromXElement(ns, metadataElement);
|
metadata.FrameworkAssemblies = GetFrameworkAssembliesFromXElement(ns, metadataElement);
|
||||||
|
|
||||||
|
metadata.ContentFiles = GetManifestContentFilesFromXElement(ns, metadataElement);
|
||||||
|
|
||||||
Manifest manifest = new Manifest(metadata);
|
Manifest manifest = new Manifest(metadata);
|
||||||
|
|
||||||
var files = GetManifestFilesFromXElement(ns, element);
|
var files = GetManifestFilesFromXElement(ns, element);
|
||||||
|
@ -246,13 +249,17 @@ namespace NuGet
|
||||||
{
|
{
|
||||||
return new XElement(ns + "dependency",
|
return new XElement(ns + "dependency",
|
||||||
new XAttribute("id", dependency.Id),
|
new XAttribute("id", dependency.Id),
|
||||||
dependency.VersionRange != null ? new XAttribute("version", dependency.VersionRange.ToString()) : null);
|
dependency.VersionRange != null ? new XAttribute("version", dependency.VersionRange.ToString()) : null,
|
||||||
|
dependency.Include != null && dependency.Include.Any() ? new XAttribute("include", string.Join(",", dependency.Include)) : null,
|
||||||
|
dependency.Exclude != null && dependency.Exclude.Any() ? new XAttribute("exclude", string.Join(",", dependency.Exclude)) : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PackageDependency GetPackageDependencyFromXElement(XElement element)
|
private static PackageDependency GetPackageDependencyFromXElement(XElement element)
|
||||||
{
|
{
|
||||||
return new PackageDependency(element.Attribute("id").Value,
|
return new PackageDependency(element.Attribute("id").Value,
|
||||||
ConvertIfNotNull(element.Attribute("version")?.Value, s => VersionRange.Parse(s)));
|
ConvertIfNotNull(element.Attribute("version")?.Value, s => VersionRange.Parse(s)),
|
||||||
|
ConvertIfNotNull(element.Attribute("include")?.Value, s => s.Split(',')),
|
||||||
|
ConvertIfNotNull(element.Attribute("exclude")?.Value, s => s.Split(',')));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static XElement GetXElementFromFrameworkAssemblies(XNamespace ns, IEnumerable<FrameworkAssemblyReference> references)
|
private static XElement GetXElementFromFrameworkAssemblies(XNamespace ns, IEnumerable<FrameworkAssemblyReference> references)
|
||||||
|
@ -316,7 +323,45 @@ namespace NuGet
|
||||||
return filesElement.Elements(ns + File).Select(f =>
|
return filesElement.Elements(ns + File).Select(f =>
|
||||||
new ManifestFile(f.Attribute("src").Value,
|
new ManifestFile(f.Attribute("src").Value,
|
||||||
f.Attribute("target").Value,
|
f.Attribute("target").Value,
|
||||||
f.Attribute("exclude").Value));
|
f.Attribute("exclude")?.Value));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static XElement GetXElementFromManifestContentFiles(XNamespace ns, IEnumerable<ManifestContentFiles> contentFiles)
|
||||||
|
{
|
||||||
|
if (contentFiles == null || !contentFiles.Any())
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new XElement(ns + "contentFiles",
|
||||||
|
contentFiles.Select(file =>
|
||||||
|
new XElement(ns + File,
|
||||||
|
new XAttribute("include", file.Include),
|
||||||
|
new XAttribute("exclude", file.Exclude),
|
||||||
|
new XAttribute("buildAction", file.BuildAction),
|
||||||
|
new XAttribute("copyToOutput", file.CopyToOutput),
|
||||||
|
new XAttribute("flatten", file.Flatten)
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ICollection<ManifestContentFiles> GetManifestContentFilesFromXElement(XNamespace ns, XElement parent)
|
||||||
|
{
|
||||||
|
var contentFilesElement = parent.Element(ns + "contentFiles");
|
||||||
|
|
||||||
|
if (contentFilesElement == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return contentFilesElement.Elements(ns + File).Select(cf =>
|
||||||
|
new ManifestContentFiles()
|
||||||
|
{
|
||||||
|
Include = cf.Attribute("include")?.Value,
|
||||||
|
Exclude = cf.Attribute("exclude")?.Value,
|
||||||
|
BuildAction = cf.Attribute("buildAction")?.Value,
|
||||||
|
CopyToOutput = cf.Attribute("copyToOutput")?.Value,
|
||||||
|
Flatten = cf.Attribute("flatten")?.Value,
|
||||||
|
}).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AddElementIfNotNull<T>(XElement parent, XNamespace ns, string name, T value)
|
private static void AddElementIfNotNull<T>(XElement parent, XNamespace ns, string name, T value)
|
||||||
|
|
Loading…
Reference in a new issue