Я написал несколько примеров кода, как это, все выходы те же, что странно для меня,Как .NET знает, что DLL - то же самое?
Я думаю, это имеет смысл, если assembly1 такой же, как и assemly2, поскольку информация о сборке такая же (например, имя, монтажная версия, идентификатор GUID и т. д.)
Однако я изменил сборку и перекомпилировал SampleCodedFormula.dll (затем переименуйте его в Changed-assemply-info-and-recompile-SampleCodedFormula.dll), что удивительно, сборка 3 выход все тот же как сборка1.
сборка 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]);