簡體   English   中英

如何比較兩個 AssemblyName 實例?

[英]How do I compare two AssemblyName instances?

如何比較兩個 AssemblyName 實例以確定它們是否代表相同的程序集? 'Equals' 方法未被覆蓋。

我能想到的一種方法是比較兩個實例的“ToString()”結果,但我更喜歡“Equals”語法,因為我需要准備一個“唯一”AssemblyName 實例的列表(List),並希望使用'Contains(AssemblyName item)' 方法。

只要您使用強命名程序集,比較ToString 方法的輸出就可以了,因為它輸出程序集的全名, 它應該是一致的並且似乎是文化不變的

如果程序集不是強命名的,則可以輕松創建另一個具有相同名稱和版本號/文化的程序集,並且它與您的程序集名稱相同。

不過要注意一件事,因為程序集名稱相同並不意味着程序集具有相同的物理身份; location不是程序集名稱的一部分。

我會比較AssemblyName.FullName屬性,因為它表示程序集的實際版本特定標識。

經過一番研究,我們找到了這個方法: ReferenceMatchesDefinition (System.Reflection)

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assemblyname.referencematchesdefinition?view=netframework-4.8

var expectedAssemblyName = new AssemblyName(name);
var actualAssemblyName = AssemblyName.GetAssemblyName(path);

if (AssemblyName.ReferenceMatchesDefinition(expectedAssemblyName, actualAssemblyName))
{
    // Some assemblies
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM