Мне нужно взять встроенную версию приложения С# и изменить одну из ссылочных dll. Каков наилучший способ сделать это, у меня есть определенная версия, отключенная в ссылочной DLL, но как только я тестирую замену dll на более новую версию, я получаю сообщение "Не удалось загрузить файл или сборку XXXXX, Version = XXXXX. есть способ остановить загрузчик от заботы о версии DLL, чтобы DLL просто попыталась загрузить?
Обновите ссылку dll в проекте С# без перекомпиляции проекта
Ответ 1
Да, вы можете это сделать - см. статью MSDN Перенаправление версий сборки.
Вы должны прочитать весь документ, но он по существу включает в себя либо издатель сборки, создающий "файл политики издателя", либо потребитель, добавляющий bindingRedirect
в файл app.config
, например этот (скопированный непосредственно из статьи):
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Несколько примечаний:
-
Если вы явно не указали вашей культуры (как многие этого не делают), это будет быть "нейтральным", а не "en-us".
-
Если вы еще этого не знаете, вы можете получить токен открытого ключа сборки используя сильную утилиту имен, например это:
sn -t [AssemblyPath]