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