繁体   English   中英

使用AppDomain加载程序集

[英]Using AppDomain to load assembly

回答我的问题我已经在stackoverflow上,但是,我只是找不到合适的/无法使用它。

我想做的是,将.dll加载到Windows窗体中,使用反射来检索方法/类名。 我已经使用Assembly.LoadFrom使其工作了,但是它确实在执行我想要的操作,因为它锁定了.dll文件。

我已经阅读了一下,发现AppDomain可以解决问题,但是我AppDomain这个问题。

下面是我尝试过的代码,但是在CreateInstanceFromAndUnwrap ,我不知道它要查找的typeName

var executableFilePath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

AppDomain domain = AppDomain.CreateDomain(
               DllPath,
                null,
                new AppDomainSetup
                {
                    ApplicationBase = Path.GetPathRoot(executableFilePath),
                    PrivateBinPathProbe = string.Empty,

                    PrivateBinPath = string.Join(";", DllPath, executableFilePath),
                    ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,
                });



      var temp = domain.CreateInstanceFromAndUnwrap(DllPath, typeof(????).FullName, false,
            BindingFlags.Default, null, null, null, null);

我将在运行时加载的.dll将不会被引用到Windows窗体应用程序中。

尝试看一下该线程: 如何以所有引用递归的方式将程序集加载到AppDomain?

方法CreateInstanceFromAndUnwrap从typeof(????)。FullName返回透明代理。 因此,您应该:

  1. 在导入的dll中创建一些从MarshalByRefObject继承的类
  2. 使用typeof(%yourNewMarshalByRefClassNameFrom1%)。FullName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM