当前位置:  开发笔记 > 编程语言 > 正文

将程序集加载到单独的AppDomain中,获取InvalidCastException

如何解决《将程序集加载到单独的AppDomain中,获取InvalidCastException》经验,为你挑选了0个好方法。

我正在尝试在单独的应用程序域中加载程序集,但遇到了一个非常奇怪的问题.这是一些代码:

    public static void LoadAssembly(string assemblyPath)
    {

        string pathToDll = Assembly.GetCallingAssembly().CodeBase;
        AppDomainSetup domainSetup = new AppDomainSetup
        {
            PrivateBinPath = pathToDll
        };

        AppDomain newDomain = AppDomain.CreateDomain("AssemblyLoader",null,domainSetup);


        AssemblyLoader loader = (AssemblyLoader)newDomain.CreateInstanceFromAndUnwrap(
            pathToDll,
            typeof(AssemblyLoader).FullName);

    }

AssemblyLoader是与此一个程序集在同一程序集中的另一个类,它继承自MarshalByRef,但是由于某些奇怪的原因,每次我尝试运行它时都会得到一个强制转换异常.我甚至硬编码DLL的路径,而不是使用GetCallingAssembly().CodeBase但我一直得到这个异常.

我知道很难回答这样的问题而没有真正看到它并获得更多信息,但也许有人遇到了类似的情况,并且会知道常见的"陷阱"和我应该注意的事项.

编辑:我不想直接加载它的原因是因为这只是代码的一部分.最终目标是这个类将有一个方法来加载程序集,获取它们的GUID以及关于它们的一些其他信息,并将它们存储在我正在处理的项目的数据库中.因此,如果我在单独的应用程序域中加载此程序集,我也可以加载其他应用程序域,然后卸载应用程序域.如果我只需要那些数据,那么在app的持续时间内加载所有这些程序集都没有意义.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有