3
我只是想知道如果我在Web應用程序中加載兩次相同的程序集字節會發生什麼。Assembly.Load(byte [])如何工作?
例如我有此代碼
byte[] assem = System.IO.File.ReadAllBytes(appRoot + "/Plugins/Plugin.dll");
var loadedAssem = Assembly.Load(assem);
var plugin = loadedAssem.CreateInstance("Plugin.ThePlugin") as IPlugin;
我跑這個代碼以及在所述第一請求我相信它會加載組件到RAM(或HTTP運行時應用程序域?),然後我可以創建的實例無論在那裏。
如果我再次運行此代碼,請對第二個請求說第一個請求會發生什麼情況?
公羊會存在嗎?如果是的話,它如何區分兩個議會呢?還是覆蓋以前的聲明類?
這是爲了我的理解,就像我在PHP中做的那樣,它不僅僅是一個「require_once」的情況。
我看到,當你說他們是不同的,如果我要加載兩個相同的程序集的副本,並創建一個像Widget類的實例..哪個程序集將實例化類? –
無論你叫什麼'CreateInstance' ... –
是的......我真的只是問這個嗎?已經很晚了,我應該睡覺了。好吧,如果我有這2個副本加載,我只需要使用其中一個,並有另一個卸載,我需要將它們加載到一個單獨的AppDomain和卸載該域? –