如何比较两个AssemblyName实例以确定它们是否代表相同的程序集?"等于"方法未被覆盖.
我能想到的一种方法是比较两个实例的'ToString()'结果,但我更喜欢'Equals'语法,因为我需要准备一个'unique'AssemblyName实例的列表(List),并希望使用'包含(AssemblyName项)'方法.
只要您使用强名称程序集,比较ToString方法的输出就可以了,因为它输出程序集的全名,它应该是一致的,并且似乎是文化不变的.
如果程序集没有强名称,那么可以轻松地创建具有相同名称和版本号/文化的另一个程序集,它将具有与您相同的程序集名称.
有一点需要注意,因为程序集名称相同并不意味着程序集具有相同的物理标识; location 不是程序集名称的一部分.
静态方法AssemblyName.ReferenceMatchesDefinition()接受两个 AssemblyName 实例并根据它们的 Name 属性对它们进行比较:
using System.Reflection;
var expectedName = new AssemblyName(name);
var actualName = AssemblyName.GetAssemblyName(path);
if (AssemblyName.ReferenceMatchesDefinition(expectedName, actualName))
{
// The same assemblies
}
Run Code Online (Sandbox Code Playgroud)
但在某些情况下,根据 FullName 属性比较它们可能更可取。
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |