Для предотвращения этой ошибки, Вы могли также:
Вы найдете инструкции относительно подписания сторонних блоков в .NET-fu: Подписание Неподписанного блока (Незамедлительно Подписывающийся) .
основной принцип для подписания thirp-стороны к [1 127]
, Демонтируют блок с помощью ildasm.exe
и сохраняют промежуточный язык (IL):
ildasm /all /out=thirdPartyLib.il thirdPartyLib.dll
Восстанавливают и подписывают блок:
ilasm /dll /key=myKey.snk thirdPartyLib.il
вышеупомянутые шаги хорошо работают, если Ваш сторонний блок ( A.dll) ссылки другая библиотека ( B.dll), который также должен быть подписан. Можно демонтировать, восстановить и подписаться и A.dll и B.dll с помощью команд выше, но во времени выполнения, загружаясь [1 112] перестанет работать B.dll, потому что A.dll был первоначально создан со ссылкой на неподписанный версия [1 115] B.dll.
фиксация к этой проблеме должна исправить файл IL, сгенерированный на шаге 1 выше. Необходимо будет добавить маркер открытых ключей B.dll к ссылке. Вы получаете этот маркер путем вызова
sn -Tp B.dll
, который даст Вам следующий вывод:
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.33440
Copyright (c) Microsoft Corporation. All rights reserved.
Public key (hash algorithm: sha1):
002400000480000094000000060200000024000052534131000400000100010093d86f6656eed3
b62780466e6ba30fd15d69a3918e4bbd75d3e9ca8baa5641955c86251ce1e5a83857c7f49288eb
4a0093b20aa9c7faae5184770108d9515905ddd82222514921fa81fff2ea565ae0e98cf66d3758
cb8b22c8efd729821518a76427b7ca1c979caa2d78404da3d44592badc194d05bfdd29b9b8120c
78effe92
Public key token is a8a7ed7203d87bc9
последняя строка содержит маркер открытых ключей. Тогда необходимо искать IL [1 116] A.dll для ссылки на [1 117] B.dll и добавить маркер следующим образом:
.assembly extern /*23000003*/ MyAssemblyName
{
.publickeytoken = (A8 A7 ED 72 03 D8 7B C9 )
.ver 10:0:0:0
}
Сначала удостоверьтесь, что все пакеты самородка в той же версии через все проекты в Вашем решении. например, Вы не хотите один проект сослаться на NLog 4.0.0.0 и другой проект сослаться на NLog 4.1.0.0. Затем попытайтесь переустановить пакеты самородка с
, Пакет Обновления - переустанавливает
, у меня было 3 сторонних блока, на которые сослался мой блок A, и только 2 были включены в Ссылки моим блоком B, который также сослался на A.
отсутствующая ссылка к стороннему блоку была добавлена командой пакета обновления, и ошибка ушла.