2013-08-04 62 views
3

我有一個方法可以檢查程序集的版本,並且它是否過期會覆蓋它。要檢測的版本,我用下面的代碼:檢查程序集的版本而不加載它

version = Type.GetType(typeName).Assembly.GetName().Version; 

但是,如果我認爲這個版本是過時的,當我嘗試重寫它,我收到以下錯誤

的進程無法訪問文件...因爲它正在被另一個進程使用。

在我看來,反映程序集的行爲導致它加載到程序中,因此它不能被覆蓋。

我怎樣才能既

  1. 檢查版本,而無需加載組件
  2. 卸載的組件覆蓋它

回答

2

以下列方式加載程序集的副本。

var assembly = Assembly.Load(File.ReadAllBytes("YourAssembly.dll")); 

您現在可以覆蓋磁盤上的程序集。

+0

如何在讀取文件時使用(沒有'FileSharing')另一個進程? –

+0

@SriramSakthivel那是怎麼相關的? – sehe

+0

@sehe如果沒有錯,試試這個片段'FileStream fs = new FileStream(「YourAssembly.dll」,FileMode.Open); var assembly = Assembly.Load(File.ReadAllBytes(「YourAssembly.dll」));'這會拋出'IOException' –

相關問題