Это полностью сработало для меня. ПРИМЕЧАНИЕ. Вам нужно НЕТ пространства имен в теге configuration
. И у вас ДОЛЖНО быть пространство имен на вашем теге assemblyBinding
.
<assemblyBinding> Element for <runtime>
<!-- important: no namespace -->
<configuration>
<runtime>
<!-- important, must have this namespace -->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Strongly.Named.Assembly" publicKeyToken="xxx" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Сделайте и то и другое, иначе оно не будет прочитано. Если он выдает ошибку, что он не может загрузить ничего, кроме 2.0.0.0 в этом примере, то он неправильно выбирает элементы конфигурации.
Это также работает только для строго именованных сборок. Чтобы выяснить, строго ли названо что-либо, запустите следующую команду из окна команд VC
открыть (меню Пуск> все программы> Visual Studio> Инструменты Visual Studio> Командная строка Visual Studio)
Затем запустите:
sn -vf "path-to-assembly.dll"
Если он вернет, что он действителен, то он будет строго назван.
Источник:
http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/