AppDomain.Load() fails with FileNotFoundException

前端 未结 2 1347
难免孤独
难免孤独 2021-02-03 13:01

I\'m trying to load my plugin dll into separate AppDomain, but Load() method fails with FileNotFoundException. Moreover, it seems like setting PrivateBinPath property of AppDoma

2条回答
  •  情深已故
    2021-02-03 13:37

    Thanks a lot to DedPicto and James Thurley ; I was able to implement a complete solution, I posted in this post.

    I had the same problem as Emil Badh : if you try to return from "Loader" class an interface that represents a concrete class that is unknown in current AppDomain, you get a "Serialization Exception".

    It is because the concrete type tries to be deserialized. The solution: I was able to return from "Loader" class a concrete type of a "custom proxy" and it works. See referenced post for details :

    // Our CUSTOM PROXY: the concrete type which will be known from main App
    [Serializable]
    public class ServerBaseProxy : MarshalByRefObject, IServerBase
    {
        private IServerBase _hostedServer;
    
        /// 
        /// cstor with no parameters for deserialization
        /// 
        public ServerBaseProxy ()
        {
    
        }
    
        /// 
        /// Internal constructor to use when you write "new ServerBaseProxy"
        /// 
        /// 
        public ServerBaseProxy(IServerBase hostedServer)
        {
            _hostedServer = hostedServer;
        }      
    
        public string Execute(Query q)
        {
            return(_hostedServer.Execute(q));
        }
    
    }
    

    This proxy could be returned and use as if it was the real concrete type !

提交回复
热议问题