support for staticwebassets folder in Nuget packages

This commit is contained in:
sbwalker
2025-08-20 07:09:33 -04:00
parent 2f2baf12fb
commit 5b45e3e417

View File

@ -71,22 +71,30 @@ namespace Oqtane.Infrastructure
{ {
try try
{ {
// iterate through files // open nupkg as zip archive
using (ZipArchive archive = ZipFile.OpenRead(packagename)) using (ZipArchive archive = ZipFile.OpenRead(packagename))
{ {
string id = "";
string frameworkversion = ""; string frameworkversion = "";
// locate nuspec // locate nuspec
foreach (ZipArchiveEntry entry in archive.Entries) foreach (ZipArchiveEntry entry in archive.Entries)
{ {
if (entry.FullName.ToLower().EndsWith(".nuspec")) if (entry.FullName.ToLower().EndsWith(".nuspec"))
{ {
// open nuspec // open nuspec
XmlTextReader reader = new XmlTextReader(entry.Open()); var reader = new XmlTextReader(entry.Open());
reader.Namespaces = false; // remove namespace reader.Namespaces = false; // remove namespace
XmlDocument doc = new XmlDocument(); var doc = new XmlDocument();
doc.Load(reader); doc.Load(reader);
// get id
var node = doc.SelectSingleNode("/package/metadata/id");
if (node != null)
{
id = node.InnerText;
}
// get framework dependency // get framework dependency
XmlNode node = doc.SelectSingleNode("/package/metadata/dependencies/dependency[@id='Oqtane.Framework']"); node = doc.SelectSingleNode("/package/metadata/dependencies/dependency[@id='Oqtane.Framework']");
if (node != null) if (node != null)
{ {
frameworkversion = node.Attributes["version"].Value; frameworkversion = node.Attributes["version"].Value;
@ -109,7 +117,7 @@ namespace Oqtane.Infrastructure
string filename = ""; string filename = "";
// evaluate entry root folder // evaluate entry root folder
switch (entry.FullName.Split('/')[0]) switch (entry.FullName.Split('/')[0].ToLower())
{ {
case "lib": // lib/net*/... case "lib": // lib/net*/...
filename = ExtractFile(entry, binPath, 2); filename = ExtractFile(entry, binPath, 2);
@ -117,6 +125,9 @@ namespace Oqtane.Infrastructure
case "wwwroot": // wwwroot/... case "wwwroot": // wwwroot/...
filename = ExtractFile(entry, webRootPath, 1); filename = ExtractFile(entry, webRootPath, 1);
break; break;
case "staticwebassets": // staticwebassets/...
filename = ExtractFile(entry, Path.Combine(webRootPath, Path.Combine("_content", id)), 1);
break;
case "runtimes": // runtimes/name/... case "runtimes": // runtimes/name/...
filename = ExtractFile(entry, binPath, 0); filename = ExtractFile(entry, binPath, 0);
break; break;