Windows mobile 如何将程序集加载到Windows Mobile(.NET CF)上的不同AppDomain?

Windows mobile 如何将程序集加载到Windows Mobile(.NET CF)上的不同AppDomain?,windows-mobile,appdomain,Windows Mobile,Appdomain,如何将程序集加载到Windows Mobile(.NET CF)上的不同AppDomain中,以便随后卸载AppDomain?请尝试以下操作: class ServiceApplicationProxy : MarshalByRefObject { public void Configure() { Assembly serviceAssembly = Assembly.Load(new AssemblyName() { C

如何将程序集加载到Windows Mobile(.NET CF)上的不同AppDomain中,以便随后卸载AppDomain?

请尝试以下操作:

class ServiceApplicationProxy : MarshalByRefObject
{
    public void Configure()
    {
        Assembly serviceAssembly = Assembly.Load(new AssemblyName()
        {
            CodeBase = @"c:\fullpath\assembly.dll")
        });
        // do something
    }
}

class Class1
{
    public void Start()
    {
        Type activator = typeof(ServiceApplicationProxy);
        AppDomain domain = AppDomain.CreateDomain(
            "friendlyName", null, new AppDomainSetup());
        ServiceApplicationProxy proxy =
            domain.CreateInstanceAndUnwrap(
                Assembly.GetAssembly(activator).FullName,
                activator.ToString()) as ServiceApplicationProxy;

        Console.WriteLine("Press ENTER to exit");
        Console.ReadLine();
        AppDomain.Unload(domain);
    }
}
编辑:来自以下位置的文档:

.NET Compact Framework平台注意:.NET Compact Framework不支持将程序集加载到与域无关的代码区域以供多个应用程序域使用

AppDomain.Load在CF.NET中不可用,但您可以尝试执行程序集。请记住,该程序集需要有一个Main方法


你好,鲁本斯,我感谢你努力回答我的问题。但是,CreateInstanceAndUnwrap方法在.NET Compact Framework上不可用。很抱歉,当我看到CF上可用的
AppDomain
时,我假设所有类型方法也可用。您解决了吗?我面临着完全相同的问题。具体来说,我需要加载同一程序集的不同版本。@fra您只是在寻找一种加载程序集两个不同版本的方法吗?然后看看eg中描述的鲜为人知的“extern alias”特性——它非常适合这个用途。
AppDomain newDomain = AppDomain.CreateDomain("newDomain");      
newDomain.ExecuteAssembly("Application.exe");