因此,這裏的情況:大會文件重命名和Assembly.LoadFile
我有一個名爲Lib1.dll組件。出於某種原因(與問題無關),我必須將程序集文件名重命名爲Lib1New.dll,現在嘗試使用Assembly.LoadFile加載重命名的程序集時,我注意到CLR也嘗試加載Lib1.dll。
如果在搜索路徑中找到Lib1.dll,它會將其加載到地址空間中。無論是否找到Lib1.dll,該應用程序都可以正常工作。 (問題是如果發現Lib1.dll文件被鎖定,不能被其他進程刪除)。
我不明白爲什麼的LoadFile搜索和負載Lib1.dll。 LoadFile應該在指定位置加載程序集文件的內容,爲什麼它搜索文件。
MSDN文檔的LoadFile:
使用的LoadFile方法來加載並檢查具有相同身份組件,但位於不同的路徑。與LoadFrom方法一樣,LoadFile不會將文件加載到LoadFrom上下文中,也不會使用加載路徑解析依賴項。 LoadFile在這個有限的場景中很有用,因爲LoadFrom不能用於加載具有相同身份但路徑不同的程序集;它只會加載第一個這樣的程序集。
感謝BlueMonkMN,這是有道理的。如果庫正在動態加載,那麼它可能會加載原始庫,但是我附帶的過程監視器日誌是使用以下Lib1 使用System生成的; namespace Lib1 { public class Class1 {public void SayHello(){ Console.WriteLine(「Class1 :: SayHello」); } } } 您可以運行進程監視器並檢查控制檯應用程序是否嘗試加載這兩個DLL。 – 2011-04-15 19:06:56