我在服务端程序中,要用到反射,
例如:有一个Server.dll,
FileInfo file = new FileInfo("Server.dll");
Assembly ass = Assembly.LoadFrom(file.FullName);
MyTypea = ass.GetType(className);
……
现在我要升级,要用新版本的Server.dll替换原来的,提示,原来的文件在正在被使用,
不能被覆盖
必须要停掉服务才能替换,那样很不方便,也不能容忍。后来我想到了另外一个方法
private static string FileName = "Server.dll";
……
我用方法SetFileFileName("Server0.dll");
把 FileName 的值改了,
FileInfo file = new FileInfo(FileName);
Assembly ass = Assembly.LoadFrom(file.FullName);
MyTypea = ass.GetType(className);
这样就可以升级了,不停服务升级的问题就解决了。
现在新问题又出来,Server.dll 删除不掉,提示说正在被使用??
我已经不用那个Server.dll文件了呀,现在使用的是Server0.dll了,
这是怎么回事??
这样我每升一次级,就会留下一个文件,这样不好吧,
有什么方法可以删除那个不用的文件吗??
例如:有一个Server.dll,
FileInfo file = new FileInfo("Server.dll");
Assembly ass = Assembly.LoadFrom(file.FullName);
MyTypea = ass.GetType(className);
……
现在我要升级,要用新版本的Server.dll替换原来的,提示,原来的文件在正在被使用,
不能被覆盖
必须要停掉服务才能替换,那样很不方便,也不能容忍。后来我想到了另外一个方法
private static string FileName = "Server.dll";
……
我用方法SetFileFileName("Server0.dll");
把 FileName 的值改了,
FileInfo file = new FileInfo(FileName);
Assembly ass = Assembly.LoadFrom(file.FullName);
MyTypea = ass.GetType(className);
这样就可以升级了,不停服务升级的问题就解决了。
现在新问题又出来,Server.dll 删除不掉,提示说正在被使用??
我已经不用那个Server.dll文件了呀,现在使用的是Server0.dll了,
这是怎么回事??
这样我每升一次级,就会留下一个文件,这样不好吧,
有什么方法可以删除那个不用的文件吗??
老兄,你是怎们删除临时文件的?
我现在的方法跟你差不多,就是没办法删除过期文件
如果不需要了,则卸载该AppDomain.
我用
http://www.cnblogs.com/wayfarer/archive/2005/03/31/47896.html
中的方法加载不了呀?
不过跨域,子可以传递可以序列化的类 web 里的很多类用不了。Assembly.Load(byte[])
第一个参数是你要加载的dll 的 byte 数组
这个方法可以加载后覆盖原始文件
不过 编程的时候好像没法调试这个好像可以调试,不过没试验过(第2个参赛可能是调试用的 .pdb 文件的 byte[])
[C#]
public static Assembly Load(
byte[] rawAssembly,
byte[] rawSymbolStore
);
http://www.cnblogs.com/wayfarer/archive/2005/03/31/47896.html
中的方法加载不了呀?
但是如果加载她自己的那个类,就行,
加载我的,就提示反序列化信息不足
郁闷