2015-06-25 117 views
-1

在運行時的Web應用程序中,我加載了一個外部程序集(* .dll文件)並運行其代碼的一部分,然後我想卸載並刪除該文件!如何強制刪除C#中的拒絕訪問文件

這是我的加載代碼:

var assembly = Assembly.Load(AssemblyName.GetAssemblyName(@"..\..\anexternallibrary.dll")); 

我怎樣才能卸載它和釋放文件?刪除文件也無法完成拋出文件訪問被拒絕的異常。

如何在不殺死相關進程的情況下強制刪除它?

回答

0

將部件裝入AppDomain後無法卸載,而必須卸載整個AppDomain

您可以創建新的AppDomain,但如果兩者之間沒有編組,則無法直接對話。

在文件方面,雖然,你可以使用Assembly.Load(byte[]),例如:

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); 

你會再隨意刪除源文件。然而,卸載問題仍然適用。