2010-05-22 58 views
1

有沒有辦法從磁盤加載程序集並在其中執行代碼而不會將文件鎖定在磁盤上?我從來不明白爲什麼有必要鎖定文件,因爲代碼將被加載到RAM中並進行JIT編譯?加載並執行程序集中的代碼而不鎖定文件?

+0

這幾乎就是一個標準的OS功能來鎖定一個過程 – Pierreten 2010-05-22 00:24:59

+1

@Pierreten使用基於文件的資源:在Unix中,你可以解除並更換共享庫,而他們都在使用。由於現有進程具有打開的文件句柄,因此在每個使用原始.so文件的進程終止之前,底層inode不會被收回。 – 2010-05-22 00:30:24

回答

2

這是可能的,你可以使用Assembly.Load(byte[])加載程序集也是如此。該程序集沒有「加載上下文」,您可以重複加載它。然而,管理這並不容易,你一定會發現。

3

你在找什麼叫做陰影複製。您必須創建新的AppDomain並提供AppDomainSetup實例,並將屬性ShadowCopyFiles設置爲字符串true

此應用程序域將在加載它們之前將程序集複製到臨時位置。有關更多詳細信息,請參閱MSDN

相關問題