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

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

你解决了吗?我也遇到了完全相同的问题。具体来说,我需要加载同一程序集的不同版本。 - fra
@fra 你是不是想要加载两个不同版本的程序集?那就来看看一个鲜为人知的功能"extern alias"吧,可以在这个链接上找到详细描述:http://msdn.microsoft.com/en-us/library/ms173212(v=vs.80).aspx - 这个功能非常适合你的需求。 - Richard Flamsholt
2个回答

1

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

(Note: The Chinese characters used are in Simplified Chinese.)
AppDomain newDomain = AppDomain.CreateDomain("newDomain");      
newDomain.ExecuteAssembly("Application.exe");

0
尝试像这样做:

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);
    }
}

编辑:来自http://msdn.microsoft.com/en-us/library/system.appdomain(VS.71).aspx的文档:

.NET Compact Framework 平台注意事项:.NET Compact Framework 不支持将程序集加载到域中立代码区域,以供多个应用程序域使用。


嗨,Rubens,感谢您回答我的问题。但是,在.NET Compact Framework上不可用CreateInstanceAndUnwrap方法。 - drumsta
抱歉,当我看到CF上有AppDomain时,我以为所有类型方法也都可用。 - Rubens Farias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接