首页 > 反射动态调用DLL文件中的方法

反射动态调用DLL文件中的方法

项目需求,需要从一堆DLL文件中反射出相关的一些方法并执行,现在遇到一个问题。
DLL文件中的方法里可能还运用到了其他第三方DLL文件,例如业务实体Entity.DLL,这种情况下反射获取到方法,执行方法时会报错
未能加载文件或程序集“XXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

不知道诸位有没有遇到过类似问题,还望帮忙给个解决方案,谢谢


注意两个问题,一个是第三方DLL要在 Path 路径里面,一般情况下就是在你的执行文件目录下就行了。如果不在 Path 里面,可以用代码加路径

public static void AddPathToDomainSetup(string path)
{
    AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
        = AddPath(AppDomain.CurrentDomain.SetupInformation.PrivateBinPath,
        path);
}

private static string AddPath(string pathList, string path)
{
    if (string.IsNullOrEmpty(pathList))
    {
        pathList = path;
    }
    else
    {
        string[] pathes = pathList.Split(';');
        foreach (string p in pathes)
        {
            if (StringComparer.OrdinalIgnoreCase.Compare(p, path) == 0)
            {
                return pathList;
            }
        }
        pathList += Path.PathSeparator + path;
    }
    return pathList;
}

另一个,就是要注意DLL的Arch,是 x86,还是 x64,还是 Any CPU,x86 和 x64 不能互调。而且关键要看启动的那个进程是 x86 启动的还是 x64 启动的(如果是 Any CPU 就是由系统决定的)。

【热门文章】
【热门文章】