如何比较两个AssemblyName实例以确定它们是否代表相同的程序集? 我能想到的一种方法是比较两个实例的'ToString()'结果,但我更喜欢'Equals'语法,因为我需要准备一个'unique'ConstallName实例的列表(List)并希望使用'Contains(AssemblyName item)'方法。
答案 0 :(得分:6)
只要您使用强名称程序集,比较ToString method的输出就可以了,因为它会输出程序集的全名,which is supposed to be consistent and seems to be culture-invariant。
如果程序集没有强名称,那么可以轻松地创建另一个具有相同名称和版本号/文化的程序集,它将具有与您相同的程序集名称。
有一点需要注意,因为程序集名称相同并不意味着程序集具有相同的物理标识; location 不是程序集名称的一部分。
答案 1 :(得分:2)
我会比较AssemblyName.FullName
属性,因为它代表程序集的实际版本特定标识。
答案 2 :(得分:1)
经过研究,我们发现了这种方法: ReferenceMatchesDefinition (System.Reflection)
var expectedAssemblyName = new AssemblyName(name);
var actualAssemblyName = AssemblyName.GetAssemblyName(path);
if (AssemblyName.ReferenceMatchesDefinition(expectedAssemblyName, actualAssemblyName))
{
// Some assemblies
}