Подтвердить что ты не робот

Обновите ссылку dll в проекте С# без перекомпиляции проекта

Мне нужно взять встроенную версию приложения С# и изменить одну из ссылочных dll. Каков наилучший способ сделать это, у меня есть определенная версия, отключенная в ссылочной DLL, но как только я тестирую замену dll на более новую версию, я получаю сообщение "Не удалось загрузить файл или сборку XXXXX, Version = XXXXX. есть способ остановить загрузчик от заботы о версии DLL, чтобы DLL просто попыталась загрузить?

4b9b3361

Ответ 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]