C# WPF: 创建动态程序集并添加嵌入资源
要将资源添加到动态程序集中,您可以使用 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/pwrZ 著作权归作者所有。请勿转载和采集!