有帮助吗?

解决方案

我只是用一个类似的问题所困扰。关键是要使用 AppDomain.AssemblyResolve 事件。这里是我的代码如下所示:

    public void LoadStuff(string assemblyFile)
    {
        AppDomain.CurrentDomain.AssemblyResolve += 
            new ResolveEventHandler(CurrentDomain_AssemblyResolve);
        var assembly = Assembly.LoadFrom(assemblyFile);

        // Now load a bunch of types from the assembly...
    }

    Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        var name = new AssemblyName(args.Name);
        if (name.Name == "FooLibrary")
        {
            return typeof(FooClass).Assembly;
        }
        return null;
    }

此完全忽略的版本号和替换已装载的库名为“FooLibrary”任何库参考。如果你想更严格的您可以使用AssemblyName类的其他属性。 FooClass可以在FooLibrary组件的任何类。

其他提示

这样做的一个方法是创建启动会启动原有的应用程式在一个单独的应用程序域时,自举程序。当您设置新的域名,你将能够建立配置文件程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top