C # DLL привязка к другой версии - PullRequest
2 голосов
/ 20 апреля 2010

Я только что перезапустил проект, в котором я использую NHibernate.В прошлый раз, когда я использовал его, проект работал нормально, но теперь выдает следующую ошибку.

System.IO.FileLoadException: не удалось загрузить файл или сборку 'Iesi.Collections, Version = 1.0.0.3, Culture= нейтральный, PublicKeyToken = aa95f207798dfdb4 'или одна из его зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040) в NHibernate.Cfg.Configuration.Reset () в NHibernate.Cfg.Configuration..ctor (SettingsFactory settingsFactory) в NHibernate.Cfg.Configuration..ctor () в Luther.Dao.Repositories.Session.NHibernateHelper..cctor () в NHibernateHelper.cs: строка 18

Я заметил, что текущая ссылка на iesi.dll находится на 1.0.1.0.Каков наилучший способ запустить это снова и снова?Попробуйте найти подходящую версию dll или переберите файл манифеста?

1 Ответ

4 голосов
/ 20 апреля 2010

Обновили ли вы одну из сборок в своем проекте с момента последнего запуска этого приложения для вас? Похоже, что NHibernate был построен против версии 1.0.0.3, и у вас в настоящее время 1.0.1.0.

Вы должны иметь возможность использовать элемент BindingRedirect в вашем App.config (или, при необходимости, web.config), чтобы указать .Net Framework для удовлетворения зависимости с другой версией. Что-то вроде

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Iesi.Collections" 
                          publicKeyToken="aa95f207798dfdb4"
                          culture="neutral" />
          <bindingRedirect oldVersion="1.0.0.3"
                           newVersion="1.0.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
...