.net dll热插拔

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common;
using System.IO;
using System.Reflection;

namespace ConsoleApplication30
{
     public  class Program
    {
         static  void Main( string[] args)
        {
            
             string fileName = @" E:\test\ClassLibrary1.dll ";
             string className =  " ClassLibrary1.Class1 ";

            Program pm = ( new Program());

            JobBase z = pm.LoadFromAssembly(fileName, className,  " sdfd ");
            pm.Unload();
            Console.WriteLine( " 1 ");
            Console.Read();
            JobBase z1 = pm.LoadFromAssembly(fileName, className,  " sdfd1 ");
            pm.Unload();
            Console.WriteLine( " 2 ");
            Console.Read();
            JobBase z2 = pm.LoadFromAssembly(fileName, className,  " sdfd2 ");
            pm.Unload();
            Console.WriteLine( " 3 ");
             int mz2 =  0;
        }

        AppDomain domain =  null;
         public JobBase LoadFromAssembly( string fileName,  string className,  string key)
        {
            
             if (domain ==  null)
            {
                AppDomainSetup setup =  new AppDomainSetup
                {
                    ApplicationName =  " AssemblyCache ",
                    CachePath =
                        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
                    ShadowCopyFiles =  " true "
                };
                domain = AppDomain.CreateDomain( " AutoJobServiceAppDomain_Ver12 "null, setup);
                 // RunningDomainDict[key] = domain;
            }
             var obj = (JobBase)domain.CreateInstanceFromAndUnwrap(fileName, className);
             // InitDomainInfo();

             return obj;
        }
         public  void Unload()
        {
            AppDomain.Unload(domain);
        }


         public  void load( string fileName,  string className)
        {
            Assembly asm = Assembly.LoadFrom(fileName);
       
                 object o = asm.CreateInstance(className);
                JobBase rc = (JobBase)o;

              
        }
    }
}

转载于:https://www.cnblogs.com/Elong/archive/2012/08/13/2636917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值