C# WPF 创建动态程序集后 怎么添加资源 EmbeddedResource怎么引用
要将资源添加到动态程序集中,您可以使用AssemblyBuilder对象的DefineEmbeddedResource方法。下面是一个示例代码,展示了如何创建一个动态程序集,并添加一个嵌入资源:
using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;
namespace DynamicAssemblyExample
{
class Program
{
static void Main(string[] args)
{
// 创建动态程序集
AssemblyName assemblyName = new AssemblyName("MyDynamicAssembly");
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule", "MyDynamicAssembly.dll");
// 添加嵌入资源
string resourceName = "MyResource.txt";
string resourceContent = "This is my embedded resource.";
byte[] resourceBytes = System.Text.Encoding.UTF8.GetBytes(resourceContent);
Stream resourceStream = new MemoryStream(resourceBytes);
moduleBuilder.DefineEmbeddedResource(resourceName, resourceStream);
// 保存程序集到磁盘
assemblyBuilder.Save("MyDynamicAssembly.dll");
}
}
}
要引用嵌入的资源,您可以使用Assembly对象的GetManifestResourceStream方法来获取资源的流。下面是一个示例代码,展示了如何从动态程序集中引用嵌入的资源:
using System;
using System.IO;
using System.Reflection;
namespace DynamicAssemblyExample
{
class Program
{
static void Main(string[] args)
{
// 加载动态程序集
Assembly assembly = Assembly.LoadFrom("MyDynamicAssembly.dll");
// 获取嵌入的资源流
string resourceName = "MyResource.txt";
Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
// 读取资源内容
using (StreamReader reader = new StreamReader(resourceStream))
{
string resourceContent = reader.ReadToEnd();
Console.WriteLine(resourceContent);
}
}
}
}
在上述代码中,我们使用Assembly对象的LoadFrom方法来加载动态程序集,并使用GetManifestResourceStream方法来获取嵌入的资源流。然后,我们可以使用StreamReader来读取资源的内容
原文地址: https://www.cveoy.top/t/topic/hNnu 著作权归作者所有。请勿转载和采集!