using System.Collections;
using System.Reflection;
using System.Resources;
class Program
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Geef de naam van de assembly als argument op.");
return;
}
try
{
ExtractAssemblyResources(args[0]);
Console.WriteLine("Alle .png resources zijn succesvol opgeslagen.");
}
catch (Exception ex)
{
Console.WriteLine($"Er is een fout opgetreden: {ex.Message}");
}
}
private static void ExtractAssemblyResources(string assemblyName)
{
var assembly = Assembly.LoadFrom(assemblyName);
if (assembly == null) return;
var resources = assembly.GetManifestResourceNames();
Console.WriteLine($"Resource count: {resources.Count()}");
var outputDir = Path.Combine(Path.GetDirectoryName(assemblyName), "ExtractedImages");
Directory.CreateDirectory(outputDir);
foreach (var resourceName in resources)
{
Console.WriteLine($"Resource: {resourceName}");
try
{
if (resourceName.EndsWith(".resources"))
{
ExtractNestedResource(assembly, resourceName, outputDir);
}
else if (resourceName.EndsWith(".png"))
{
ExtractResource(assembly, resourceName, outputDir);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error extracting resource '{resourceName}': {ex}");
}
}
}
static void ExtractResource(Assembly assembly, string resourceName, string outputDir)
{
string outputFilePath = Path.Combine(outputDir, resourceName.Replace("/", "_"));
using var resourceStream = assembly.GetManifestResourceStream(resourceName);
using var outputStream = new FileStream(outputFilePath, FileMode.Create);
resourceStream.CopyTo(outputStream);
Console.WriteLine($"Resource '{resourceName}' opgeslagen als '{outputFilePath}'.");
}
static void ExtractNestedResource(Assembly assembly, string resourceName, string outputDir)
{
using var resourceStream = assembly.GetManifestResourceStream(resourceName);
using var resourceReader = new ResourceReader(resourceStream);
foreach (DictionaryEntry resource in resourceReader)
{
string childName = $"{resource.Key}";
string outputFilePath = Path.Combine(outputDir, childName.Replace("/", "_"));
Console.WriteLine($"Nested resource: {resourceName}/{resource.Key}");
if (!childName.EndsWith(".png")) continue;
try
{
using var outputStream = new FileStream(outputFilePath, FileMode.Create);
if (resource.Value is Stream childResourceStream)
{
childResourceStream.CopyTo(outputStream);
}
else if (resource.Value is byte[] buffer)
{
outputStream.Write(buffer, 0, buffer.Length);
}
Console.WriteLine($"Geneste resource '{resource.Key}' uit '{resourceName}' opgeslagen als '{outputFilePath}'.");
}
catch (Exception ex)
{
Console.WriteLine($"Error extracting nested resource '{resource.Key}' from '{resourceName}': {ex}");
}
}
}
}813800cookie-checkC# ExtractAssemblyResources