C# 如何在c中强制删除拒绝访问的文件#
在运行时的web应用程序中,我加载一个外部程序集(*.dll文件)并运行它的部分代码,然后我想卸载并删除该文件 这是我的加载代码:C# 如何在c中强制删除拒绝访问的文件#,c#,asp.net,appdomain,C#,Asp.net,Appdomain,在运行时的web应用程序中,我加载一个外部程序集(*.dll文件)并运行它的部分代码,然后我想卸载并删除该文件 这是我的加载代码: var assembly = Assembly.Load(AssemblyName.GetAssemblyName(@"..\..\anexternallibrary.dll")); 如何卸载它并释放文件?删除文件也无法完成,引发文件访问被拒绝异常 如何在不终止相关进程的情况下强制删除它?一旦将程序集加载到AppDomain中,就无法卸载它,而必须卸载整个AppD
var assembly = Assembly.Load(AssemblyName.GetAssemblyName(@"..\..\anexternallibrary.dll"));
如何卸载它并释放文件?删除文件也无法完成,引发文件访问被拒绝异常
如何在不终止相关进程的情况下强制删除它?一旦将程序集加载到
AppDomain
中,就无法卸载它,而必须卸载整个AppDomain
您可以创建新的AppDomain
,但是如果不在两者之间进行编组,它们就不能直接相互通信
但就文件而言,您可以使用,例如:
byte[] assembly_bytes;
using (var file = new FileStream(
@"..\..\anexternallibrary.dll",
FileMode.Open,
FileAccess.Read,
FileShare.None))
{
assembly_bytes = new byte[file.Length];
file.Read(assembly_bytes,0,assembly_bytes.Length);
}
Assembly assembly = Assembly.Load(assembly_bytes);
然后,您可以自由删除源文件。然而,卸载问题仍然适用