2010-09-17 1 views
0

Я написал несколько примеров кода, как это, все выходы те же, что странно для меня,Как .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]); 

ответ

1

Просто проверка verstion сборки, как этот

// get the version object for this assembly 
     Version v = System.Reflection.Assembly.GetExecutingAssembly(). 
     GetName().Version; 

или

использования объекта FileVersionInfo. Вот пример с веб-сайта Microsoft, который получает информацию о версии от notepad.exe

public void GetFileVersion() { 
    // Get the file version for the notepad. 
    FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo("%systemroot%\\Notepad.exe"); 

    // Print the file name and version number. 
    textBox1.Text = "File: " + myFileVersionInfo.FileDescription + '\n' + 
     "Version number: " + myFileVersionInfo.FileVersion; 
} 
Смежные вопросы