2010-08-11 3 views
5

Как сравнить два экземпляра AssemblyName, чтобы выяснить, представляют ли они одну и ту же сборку? Метод «Равно» не переоценивается.Как сравнить два экземпляра AssemblyName?

Один из способов, которым я могу представить, - сравнить результаты «ToString()» обоих экземпляров, но я бы предпочел синтаксис «Равно», так как мне нужно подготовить список (список) уникальных экземпляров AssemblyName и как использовать метод «Содержит (AssemblyName item)».

ответ

6

Если вы используете сильно названные сборки, сравнение вывода ToString method будет прекрасным, так как оно выводит полное имя сборки, which is supposed to be consistent and seems to be culture-invariant.

Если сборки не имеют сильного имени, тогда можно легко создать еще одну сборку с тем же именем и номером версии/культурой, и у нее будет такое же имя сборки, что и у вас.

Следует отметить, что, поскольку имена сборки одинаковы, это не означает, что сборки имеют одинаковую физическую идентичность; местонахождение не часть названия сборки.

+2

Это может оказаться недостаточным, если сборки не имеют сильного имени. Я уверен, что без сильного наименования, возможно, что две сборки имеют одно и то же имя, но на самом деле полностью отличаются друг от друга. –

+0

@Matt: В моем случае я могу смело предположить, что я имею дело с сильно названными сборками. – alwayslearning

2

Я бы сравнил свойство AssemblyName.FullName, так как он представляет собой фактическую конкретную версию сборки.

+3

'AssemblyName.ToString' переопределяется, чтобы возвращать то же самое, что и' AssemblyName.FullName' –