0

我已经有以下场景工作:

  • 程序集A.exe:调用 WinForms 应用程序。
  • 程序集B.dll:由 . 硬引用的类库A
  • 程序集C.dll:在运行时编译和引用B(类从类继承B)。

A.exe在运行时编译一些代码C.dll,加载程序集并调用((B.BaseClass) C.DerivedClass).BaseMethod();

C如果我作为 DLL编译到磁盘,它会B.dll在同一个文件夹中提取。但是,我根本不想写入C.dll磁盘。

什么方法最适合实现这一目标?

4

1 回答 1

1

我通常会做这样的事情(在您的应用程序早期的某个地方注册 AssemblyResolve,例如在 Program.cs 或 App.xaml.cs 中):

    //Since we'll be dynamically loading assemblies at runtime, we need to add an appropriate resolution path
    //Otherwise weird things like failing to instantiate TypeConverters will happen
    AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    var domain = (AppDomain)sender;

    foreach (var assembly in domain.GetAssemblies())
    {
        if (assembly.FullName == args.Name)
            return assembly;
    }

    return null;
}
于 2012-04-19T13:36:49.407 回答