Модульное приложение на C#
Видимо, вы ищете что-то вроде этого
А я вот помнится делал такого типа танцы с бубном при модульном подключении dll на 2 фреймворке. public static bool isHaveSpread
        {
            get
            {
                if (!First_isHaveSpread) // в первый раз спрашиваю ?
                {
                    First_isHaveSpread = true;
                    if (!System.IO.File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + NameDll))
                    {
                        Result_isHaveSpread = false;
                    }
                    else
                    {
                        Result_isHaveSpread = true;
                    }
                    
                }
                return Result_isHaveSpread;
            } 
        }
                
        static object _spread = null;
        private static object spread
        {
            get{
                if (isHaveSpread && !OneProxod)
                    try
                    {
                        OneProxod = true;
                        if (_spread != null) Close();
                        _spread = new spread.LibSpread.Spread(Address,Port, User, System.Reflection.Assembly.GetExecutingAssembly().FullName);                        
                    }catch(Exception e){
                        System.Diagnostics.Debug.WriteLine("UserSpread.spread: " + e.Message);
                        //MVB.ImitarorMVB.IMITATOR_MVB = false;
                    }
                    //if(_spread!=null) 
                          
                return _spread;
            }       
        }

               
        public static void Send<T>(T ob)
        {
            if (spread != null) 
                ((spread.LibSpread.Spread)_spread).Send(ob);
        }