【发布时间】:2015-03-26 10:07:00
【问题描述】:
我已经在 stackoverflow 上回答我的问题,但是我找不到合适的/无法让它工作。
我想要做的是,将 .dll 加载到我的 Windows 窗体,使用反射来检索方法/类名称。我已经使用Assembly.LoadFrom 让它工作了,但是它正在做我想要的,因为这会锁定 .dll 文件。
我已经阅读并发现 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 窗体应用程序中。
【问题讨论】:
-
您的 Forms-App 是否在同一个 App-Domain 中?新创建的和加载的内容将不会自动用于初始应用程序域
-
如何检查?
标签: c# .net-assembly appdomain