Ошибка WatiN не удалось загрузить сборку

Я получаю следующую ошибку WatiN:

Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборка 'Interop.SHDocVw, Версия = 1.1.0.0, Культура = нейтральная, PublicKeyToken = db7cfd3acb5 ad44e 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040) Имя файла: 'Interop.SHDocVw, Version = 1.1.0.0, Culture = neutral, PublicKeyToken = db

Я скопировал shdocvw.dll из System32 в каталог bin, но все же он дает мне те же проблемы.

Ответ 1

ОБНОВЛЕНИЕ: этот ответ был написан до того, как Nuget был выпущен и применяется только в том случае, если вы НЕ используете Nuget для управления вашими зависимостями. Если вы используете Nuget, см. ответ от @Nick Jones

У меня была эта проблема сегодня. Вам необходимо загрузить последнюю версию WatiN (я использую 2.0.10.928) и ссылаться на подписанный файл Interop.SHDocVw.dll, который предоставляется WatiN.

Попробуйте следующее:

  • Удалить все другие ссылки на Interop.SHDocVw.dll
  • Щелкните правой кнопкой мыши свое решение и выберите "Очистить решение".
  • Ссылка на файл Interop.SHDocVw.dll, предоставляемый WatiN
  • Создайте свое решение.

Надеюсь, что это поможет.

ОБНОВЛЕНИЕ: Ник Джонс прав. Это не должно быть проблемой, если вы используете NuGet.... но я также получал это сообщение при использовании MvcContrib.Mvc3.TestHelper-ci. На первый взгляд это кажется, что пакеты -ci - это путь, но я решил использовать пакет MvcContrib.WatiN по двум причинам.

1) Я не получаю сообщение об ошибке "Не могу загрузить файл или сборку"

2) MvcContrib.Mvc3.TestHelper-ci является с использованием старой версии файла WatiN.Core.dll(1.3.0.4000), где поскольку пакет MvcContrib.WatiN использует более новую версию (2.0.0.99)

Ответ 2

Если вы установили и ссылались на WatiN с помощью NuGet в VS2010, у вас уже должны быть правильные ссылки, поэтому их не нужно удалять и повторно добавлять. Но вам все равно нужно изменить настройку "Вставить типы взаимодействий" на False на ссылку Interop.SHDocVw.

Ответ 3

Проверьте свойства ссылки "Interop.SHDocVw.dll". Измените "Вставить типы взаимодействия" на "Неверно".

Проблема заключается в том, что он не копирует файл dll в папку bin. Но после этого параметра он будет делать это правильно.

У меня была такая же ошибка, и теперь она работает нормально.