首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Assembly.Load 3 dlls

Assembly.Load 3 dlls
EN

Stack Overflow用户
提问于 2015-01-29 07:37:29
回答 1查看 75关注 0票数 1

我有3个动态链接库加载到资源。它们作为嵌入式资源进行切换。我有这样的代码,只加载一个dll到汇编。如何加载所有的dll?

代码语言:javascript
运行
复制
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);
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2015-01-29 07:44:11

你正在调用索引3(奇怪的是,它不会失败,因为你有3个dll,它们应该放在2。也许是因为你除了dll之外还有一个资源?无论如何,你可以只做一个简单的循环。

代码语言:javascript
运行
复制
    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);
        }

这样就可以了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28204497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档