[英]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返回透明代理。 因此,您应该:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.