Add-BindingRedirect не решает проблему с NuGet - PullRequest
3 голосов
/ 27 марта 2011

Итак, у меня возникла проблема, как будто я вижу другие плакаты после использования NuGet для установки FluentNhibernate:

ОШИБКА

Could not load file or assembly 'NHibernate, Version=3.0.0.2001, Culture=neutral,
PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference. (Exception from HRESULT: 
0x80131040)

Я видел это в stackOverflowответы и другие блоги ответ был:

Add-BindingRedirect

Однако, это не решило мою проблему, и все результаты выполнения этой команды:

PM> Add-BindingRedirect

Name                                     OldVersion                                                      NewVersion                                                     
----                                     ----------                                                      ----------                                                     
NHibernate                               0.0.0.0-3.0.0.4000                                              3.0.0.4000  

Когда я устанавливаю Fluent Nhibernateот NuGet говорит, что его зависимости - Nhibernate 3.0.0.2001, но он устанавливает Nhibernate 3.0.0.4000

Что я делаю не так?

ОБНОВЛЕНИЕ

Я вижу, что он добавляет следующий раздел в узел:

 <dependentAssembly>
    <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.4000" newVersion="3.0.0.4000" />
  </dependentAssembly>

Однако, я все еще получаю ту же ошибку.Который просто не выглядит правильно.Если Fluent хочет 3.0.0.2001 и NHibernate 3.0.0.4000 был установлен, это перенаправление привязки, мне кажется, не является правильным.

Чтобы быть как можно более конкретным.Я просто использовал NuGet для установки Fluent Nhibernate как в своем веб-проекте, так и в проекте библиотеки C # для тестов.Затем запустил тест с использованием NUnit, который продолжает выдавать мне эту ошибку.

Ответы [ 4 ]

1 голос
/ 28 марта 2011

Add-BindingRedirect - правильная команда для запуска, и вы получите ожидаемый результат. После того, как вы запустите его, вы должны увидеть некоторые записи перенаправления привязки в вашем файле web.config (или app.config). Вы можете это подтвердить?

Это позволит загружать сборку, даже если FluentNH запрашивает более старую сборку NHibernate.

Если это не сработает, пожалуйста, включите в свой вопрос более подробную информацию о том, что вы делаете. например Какова полная последовательность шагов, которая приводит к появлению сообщения об ошибке (начиная с создания проекта).

0 голосов
/ 31 марта 2016

У меня была та же проблема, мой веб-сервис работал, но BindingRedirect не работал для моих тестов.

Решением было скопировать конфигурацию, добавленную командой Add-BindingRedirect, из моего файла 'project'.configфайл в файл machine.config компьютера

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
        <bindingRedirect newVersion="3.3.1.4000" oldVersion="0.0.0.0-3.3.1.4000"  />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Как только я скопировал, мои тесты начали работать

0 голосов
/ 11 ноября 2014

звучит глупо, но проверьте свои исходные файлы и исходные коды пакетов и убедитесь, что там нет ссылок на старую версию - если есть удаление всей версии и повторно загрузите нужную версию через консоль диспетчера пакетов.

Редактировать: убедитесь, что вы проверили все файлы, так как ссылки и привязки работают очень запутанно, а ссылка на любой из ваших файлов может привести к перенаправлению привязки или к получению неверной версии.

0 голосов
/ 11 августа 2012

У меня была такая же проблема с другим пакетом, выполняющим MSpec тесты.

Для меня было решение вручную добавить файл app.config в каждый веб-проект с теми же перенаправлениями привязкикак в файле Web.config.

Команда Add-BindingRedirect правильно добавила записи в файлы Web.config, но, по-видимому, исполнитель теста оценивает только сгенерированный файл Bla.Bla.dll.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...