У меня есть неподписанное тестовое приложение MyApp, которое ссылается на неподписанную DLL MyDll. Я недавно подписал MyDll и хочу протестировать его на MyApp в полевых условиях, но приложение больше не запускается. Я делаю это, просто перезаписывая MyDll. Я не хочу перекомпилировать MyApp.
Средство просмотра журнала Fusion доказывает, что проблема связана с несовпадающим открытым ключом:
LOG: Assembly Name is: MyDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcd1234abcd1234
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
ERR: The assembly reference did not match the assembly definition found.
ERR: Run-from-source setup phase failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
В прошлом я имел дело с несоответствием версий, создавая файл конфигурации, например. MyApp.exe.config с такой записью:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<publisherPolicy apply="no" />
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyDll" publicKeyToken="abcd1234abcd1234" culture="null" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
В данном конкретном случае номер версии не изменился, но я оставил его для тестирования.
Это явно ничего не улучшает. Fuslogvw подтверждает, что мой файл конфигурации был загружен, когда я запускал MyApp. Есть ли еще один элемент конфигурации для добавления в мой файл конфигурации, который позволит моему неподписанному приложению использовать подписанную DLL?