我有3个动态链接库加载到资源。它们作为嵌入式资源进行切换。我有这样的代码,只加载一个dll到汇编。如何加载所有的dll?
public partial class Main : Form
{
public Main()
{
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolve;
InitializeComponent();
}
public static Assembly AssemblyResolve(object sender, ResolveEventArgs args)
{
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(assembly.GetManifestResourceNames()[3]))
{
if (stream == null)
return null;
byte[] rawAssembly = new byte[stream.Length];
stream.Read(rawAssembly, 0, (int)stream.Length);
return Assembly.Load(rawAssembly);
}
}
发布于 2015-01-29 07:44:11
你正在调用索引3(奇怪的是,它不会失败,因为你有3个dll,它们应该放在2。也许是因为你除了dll之外还有一个资源?无论如何,你可以只做一个简单的循环。
for (int i = 1; i <= 3; i++) // Your dll's seem to be stored from index 1
using (Stream stream = assembly.GetManifestResourceStream(assembly.GetManifestResourceNames()[i]))
{
if (stream == null)
return null;
byte[] rawAssembly = new byte[stream.Length];
stream.Read(rawAssembly, 0, (int)stream.Length);
return Assembly.Load(rawAssembly);
}
这样就可以了。
https://stackoverflow.com/questions/28204497
复制相似问题