放到appdomain一定可以用的,你去网上找一下,我以前开发过
加载了就先卸载后,再编译就行。
最好把assembly放到appdomain里面去,因为assembly没有卸载功能,只有程序停止后才能释放。appdomain提供Unload方法,使用完dll后通过卸载appdomain来释放dll。
兄台怎么解决这个问题的,可否告之一下。
现在一加载就删除不掉,也替换不了。
我的做法有点纠结,动态编译dll,路径不是直接设置在bin里面,而是临时的文件夹,比如TaskBin,然后把bin里面的dll文件删除掉,再移动TaskBin里面的dll文件到bin文件夹,接着把TaskBin里面,动态生成dll所产生的pdb文件删除,最后再去加载bin文件夹里面的dll文件。
/// <summary>
/// 刷新任务编译文件DLL
/// </summary>
/// <param name="path"></param>
private void RefreshTaskFile(string path)
{
File.Delete(path.Replace("TaskBin", "bin"));
File.Copy(path, path.Replace("TaskBin", "bin"), true);
File.Delete(path.Replace("dll", "pdb"));
}