假如我在D:/BinTemp/目录下放置了一个test.dll
而网站http://localhost(主目录不在D:/BinTemp下)中,通过Assembly.loadFile(@"D:/BinTemp/test.dll")来调用这个DLL,
但是在调用完成后,到D:/BinTemp/下却不能删除该DLL了,只能回收应用程序池后才能删除。
这个问题该怎么解决呢?请教各位达人们
把DLL放到自己网站的BIN下面.
你说的意思是只要删除那个程序就行吗?用强行删除工具把它给DEL了.
有两个办法。
1. 使用下面的代码:
Assembly.Load(File.ReadAllBytes(filePath));
就是把整个文件读出来,成一个byte[],然后加载这个byte[]。之后关闭文件。
缺点是这个dll所用到的其它的dll不会被自动加载。
2. 使用独立的AppDomain加载这个DLL,执行完函数调用之后,关闭这个AppDomain。代码比较多。可以在MSDN上找到例子。http://msdn.microsoft.com/en-us/library/system.appdomain.aspx
用独立的 AppDomain 加载动态库,不用时卸载 AppDomain,这样就可以删除了。
http://www.cnblogs.com/eaglet/archive/2008/10/17/1313384.html