Как правильно назвать сборку, чтобы у нее был токен открытого ключа - PullRequest
4 голосов
/ 19 марта 2012

Я пытаюсь создать мастер шаблона проекта. Для этого мне нужна сборка со строгим именем и токен открытого ключа.

Я пошел сюда: http://msdn.microsoft.com/en-us/library/ms247123.aspx и следовал инструкциям.

Я получаю файл .pfx в моей сборке. Но когда я очищаю и собираю dll, на нем нет токена открытого ключа.

(я проверил, запустив sn -t EventWizard.dll), и в результате получил:

Не удалось преобразовать ключ в токен. Открытый ключ для сборки '(null)' недействителен.

Так что я не думаю, что получаю токен открытого ключа. Как я могу получить один?

Обновление: Вот моя вкладка для подписи:

Signing Screenshot

Ответы [ 4 ]

23 голосов
/ 05 февраля 2013

Я тоже с этим сталкивался.

Решение очень простое - аргументы чувствительны к регистру.

sn -T <yourassembly.dll>
7 голосов
/ 01 августа 2016

У меня тоже были проблемы с этим.

Решение очень простое - аргументы чувствительны к регистру.

//Does not work
sn -t yourassembly.dll

//Works
sn -T yourassembly.dll
7 голосов
/ 21 марта 2012

Так что это было строго названо в конце концов. Но инструмент sn.exe нужно было использовать по-другому, чтобы увидеть искомое значение (PublicKeyToken).

Если я запустил это:

sn -e EventWizard.dll temp.txt
sn -t temp.txt

Тогда это работало просто отлично.

1 голос
/ 22 сентября 2014

Нашли решение в InternalsVisibleTo с сборками сильного типа

Перейдите в: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Инструменты (или где когда-либо sn.exe)

sn -p MyKey.snk MyKey.PublicKeyOnly.snk

Копирует открытый ключ в новый файл

sn -tp MyKey.PublicKeyOnly.snk

это будет выводить что-то вроде: Открытый ключ 0024000004800000940000000602000000240000525341310004000001000100cfb8bc23b86a08 e70d021dd53d3b0293e716e71015870bdcc58a0231a4228618851a83e06077f5a44f42beb2baf3 56ad2d344521a96b0081ed0f25f9227523e3625eda524efe1cf2e1e5e41f3693a76ec52347684b 8129a4bb2d5fc49681adf33da0eecc4f81f011af4539d12abe1b4e760b5ce32d766db1012d4402 8381f0b4

токен открытого ключа: 2ff2b71993eeff95

Скопируйте значение открытого ключа и обновите InternalsVisibleTo:

[сборка: InternalsVisibleTo ("MyProject.Domain.Tests, PublicKey = 0024000004800000940000000602000000240000525341310004000001000100cfb8bc23b86a08 e70d021dd53d3b0293e716e71015870bdcc58a0231a4228618851a83e06077f5a44f42beb2baf3 56ad2d344521a96b0081ed0f25f9227523e3625eda524efe1cf2e1e5e41f3693a76ec52347684b 8129a4bb2d5fc49681adf33da0eecc4f81f011af4539d12abe1b4e760b5ce32d766db1012d4402 8381f0b4" )]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...