2015-05-22 2 views
0

Может ли несколько DLL иметь одинаковое публичное (сильное имя)? Я нашел 61 версию mscorlib.dll на своем компьютере. Когда я запустил инструмент sn -T, я обнаружил, что некоторые из них имеют одинаковые публикации !? C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v3.5 \ Profile \ Client \ mscorlib.dll и C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll похоже, имеет тот же самый publickey (b77a5c561934e089). Как все эти ключи генерируются? Является ли контрольная сумма y CRC файла?Может ли несколько сборок иметь одинаковое публичное?

+0

«Сильное имя» - это не то же самое, что и открытый ключ. Вы используете пару ключей для создания подписи и, таким образом, придаете сборке «сильное имя». –

ответ

1

Да, они могут. Но открытый ключ не является сильным именем, это «только» публичная часть ключа шифрования, используемого для подписи сборки (или сборок). Как только вы это сделаете, сборка имеет сильное имя.

+1

Не только это открытый ключ, но и только часть шифрования, открытый ключ, указанный в инструкции имени сборщика, является частью только открытого открытого ключа, используемого для подписи сборки (если вы используете ['InternalsVisibleTo'] (https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute%28v=vs.110%29.aspx) вы должны использовать полный открытый ключ, а не сокращенную версию) –

+0

Правильно, всегда есть была небольшая путаница между «PublicKeyToken» (короткая версия, о которой идет речь) и «PulicKey», полная версия. – MatteoSp

Смежные вопросы