代码之家  ›  专栏  ›  技术社区  ›  Anish

子AppDomain(.net)中的后期绑定

  •  0
  • Anish  · 技术社区  · 15 年前

    我正在尝试在.NET中开发插件架构。该应用程序将是.NET应用程序。将有保存插件的目录。每个目录代表一个插件。每个插件目录也将包含所有依赖项DLL。插件需要存储在单独的AppDomain中,因为插件可能使用相同的程序集,但版本不同。

    当它在init()中迭代foreach循环时,我得到一个 System.IO.FileNotFoundException:无法加载文件或程序集“[程序集名称]、版本=1.0.0.0、区域性=中性、PublicKeyToken=空”或其依赖项之一。系统找不到指定的文件。 对于不在主项目中的程序集,在_apdomain.load()中。

    代码:

        readonly private AppDomain _appDomain;
        internal ItemModuleAppDomain()
        {
            AppDomainSetup info = AppDomain.CurrentDomain.SetupInformation;
            _appDomain = AppDomain.CreateDomain("ChildDomain");
        }
    
        public void Init(string dllDir)
        {
            string[] dlls = Directory.GetFiles(dllDir, "*.dll", SearchOption.TopDirectoryOnly);
            foreach(string dll in dlls)
            {
                _appDomain.Load(AssemblyName.GetAssemblyName(dll));
            }
    

    你知道为什么吗?我尝试了几种方法,例如将程序集作为要加载的字节数组读取。

    1 回复  |  直到 14 年前
    推荐文章