项目下bin下有个my.dll,我先用Assembly.LoadFile()进来,取得dll的版本,和当前的比较.
如果不相等,就update,把新的my.dll覆盖旧的my.dll,用的File.Copy(src,des,true).
但系统提示旧的my.dll正在被另一个process使用.
所以我想是不是Assembly.LoadFile后把这个dll占住了,那怎么释放它呢?
如果不相等,就update,把新的my.dll覆盖旧的my.dll,用的File.Copy(src,des,true).
但系统提示旧的my.dll正在被另一个process使用.
所以我想是不是Assembly.LoadFile后把这个dll占住了,那怎么释放它呢?
解决方案 »
- 基础知识,就怕你不会……千万别不会!
- 请问如何在客户端得到CheckBox选中的节点(TreeView)?
- 请问web project 和 web site 到底有什么区别?他们的编译步骤,运行原理?
- 关于TableAdapter的updata()方法问题
- winform mdi程序最大化问题
- 关于windows窗体的拉伸问题
- 正则表达式问题,急
- 怎么样读取有命名空间的xml文档的节点
- 用ASP.net在IIS中创建虚拟目录(急用,请帮我看哈什么地方有错!)
- FCKEDITR从WORD粘贴图片自动上传到服务器 ,急,求高手解决!
- 请教关于平台调用中的参数传递问题
- 有关System.Diagnostics.Process.Start的一个怪问题
急啊,解决马上结贴
a=null;
试试
info.ApplicationBase = "file:///" + System.Environment.CurrentDirectory;
AppDomain dom = AppDomain.CreateDomain("RemoteDomain", null, info);
// Assembly coredll =Assembly.LoadFile(coredllPath); Assembly coredll = Assembly.LoadFile(coredllPath);
AssemblyName name = coredll.GetName();
dllVersion = name.Version.ToString();
//Object obj=asm.CreateInstance("HelloWorld");
AppDomain.Unload(dom);
// coredll = null;
//dllVersion = "222";
用了Unload还是不行,一样的错误,
coredll = null也是一样.
如果我注释掉所有的代码,只有dllVersion = "222";就没问题,说明load进来没释放.
所以就有可能报程序集在使用的错误.
AppDomain.Unload(dom);
GC.Collect();
但怎么释放还是没解决.
但释放没释放还是不是太懂.
在项目引用中添加“my.dll",然后把这个引用的CopyLocal属性改为True。重新编译就好了,之前你写的那些都不需要了