0
我寫了一些這樣的示例代碼,所有的輸出是相同的,這對我來說很奇怪,.NET如何知道DLL是相同的?
我想這是有道理的,如果assembly1是相同的assemly2,因爲程序集信息是相同的(如名,程序集版本,GUID等)
然而,我改變了裝配信息,並重新編譯SampleCodedFormula.dll(然後將其重命名爲改變-assemply-信息和重編譯後即SampleCodedFormula.dll),出人意料的是, assembly3的輸出仍然與assembly1相同。
程序集1,2,3由相同的代碼庫編譯。
誰能告訴我爲什麼這樣的行爲?它對你有意義嗎?
var domain = AppDomain.CurrentDomain;
var assembly1 = domain.Load(AssemblyName.GetAssemblyName("c:\\SampleCodedFormula.dll"));
Console.WriteLine(assembly1.CodeBase);
Console.WriteLine(assembly1.GetExportedTypes()[0]);
var assembly2 = domain.Load(AssemblyName.GetAssemblyName("c:\\Copied-From-SampleCodedFormula.dll"));
Console.WriteLine(assembly2.CodeBase);
Console.WriteLine(assembly2.GetExportedTypes()[0]);
var assembly3 = domain.Load(AssemblyName.GetAssemblyName("c:\\Changed-assemply-info-and-recompile-SampleCodedFormula.dll"));
Console.WriteLine(assembly3.CodeBase);
Console.WriteLine(assembly3.GetExportedTypes()[0]);