66 lines
1.8 KiB
C#
66 lines
1.8 KiB
C#
using System.IO.Compression;
|
|
using System.Text;
|
|
using System.Xml.Linq;
|
|
|
|
// Handle arguments
|
|
if (Args.Count != 1)
|
|
{
|
|
Console.WriteLine("You need to provide the path to a nuget file as a parameter");
|
|
return;
|
|
}
|
|
|
|
var nugetPath = Args[0];
|
|
|
|
// Check if file exists
|
|
if (!File.Exists(nugetPath))
|
|
{
|
|
Console.WriteLine("The provided file does not exist");
|
|
return;
|
|
}
|
|
|
|
// Open file to modify
|
|
Console.WriteLine($"Modding nuget package: {nugetPath}");
|
|
var zipFile = ZipFile.Open(nugetPath, ZipArchiveMode.Update, Encoding.UTF8);
|
|
|
|
// First we want to remove the framework files
|
|
Console.WriteLine("Removing framework files");
|
|
|
|
var frameworkEntries = zipFile.Entries
|
|
.Where(x => x.FullName.Contains("staticwebassets/_framework"))
|
|
.ToArray();
|
|
|
|
foreach (var frameworkEntry in frameworkEntries)
|
|
frameworkEntry.Delete();
|
|
|
|
// Then we want to modify the build targets for static web assets
|
|
var oldBuildTarget = zipFile.Entries
|
|
.First(x => x.FullName == "build/Microsoft.AspNetCore.StaticWebAssets.props");
|
|
|
|
// Load old content
|
|
var oldContentStream = oldBuildTarget.Open();
|
|
|
|
// Parse xml and remove framework references
|
|
Console.WriteLine("Removing framework web asset references");
|
|
|
|
var contentXml = XDocument.Load(oldContentStream);
|
|
oldContentStream.Close();
|
|
oldContentStream.Dispose();
|
|
oldBuildTarget.Delete();
|
|
|
|
var assetsToRemove = contentXml
|
|
.Descendants("StaticWebAsset")
|
|
.Where(asset =>
|
|
asset.Element("RelativePath")?.Value.Contains("_framework") == true)
|
|
.ToArray();
|
|
|
|
foreach (var asset in assetsToRemove)
|
|
asset.Remove();
|
|
|
|
var newBuildTarget = zipFile.CreateEntry("build/Microsoft.AspNetCore.StaticWebAssets.props");
|
|
var newContentStream = newBuildTarget.Open();
|
|
contentXml.Save(newContentStream);
|
|
|
|
await newContentStream.FlushAsync();
|
|
newContentStream.Close();
|
|
|
|
zipFile.Dispose(); |