WatiN-Fehler Baugruppe konnte nicht geladen werden

73

Ich erhalte den folgenden WatiN-Fehler:

Nicht behandelte Ausnahme: System.IO.FileLoadException: Datei oder Assembly 'Interop.SHDocVw, Version = 1.1.0.0, Kultur = neutral, PublicKeyToken = db7cfd3acb5 ad44e' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) Dateiname: 'Interop.SHDocVw, Version = 1.1.0.0, Kultur = neutral, PublicKeyToken = db

Ich habe die shDocvw.dll von System32 in das bin-Verzeichnis kopiert, aber es gibt mir immer noch die gleichen Probleme.

Azamsharp
quelle
4
Ich habe MvcContrib.Mvc3.WatiN-ci mit NuGet installiert und den gleichen Fehler erhalten. Dies ist das erste Mal, dass ich mich entschied, etwas über NuGet zu installieren ... Ich dachte, diese Probleme wären etwas, das NuGet lösen sollte?
Darragh

Antworten:

49

UPDATE: Diese Antwort wurde vor der Veröffentlichung von Nuget geschrieben und gilt nur, wenn Sie Nuget NICHT zum Verwalten Ihrer Abhängigkeiten verwenden. Wenn Sie Nuget verwenden, lesen Sie die Antwort von @Nick Jones

Ich hatte heute gerade dieses Problem. Sie müssen die neueste Version von WatiN herunterladen (ich verwende 2.0.10.928) und auf die signierte Interop.SHDocVw.dll verweisen, die von WatiN bereitgestellt wird.

Versuchen Sie Folgendes:

  1. Entfernen Sie alle anderen Verweise auf Interop.SHDocVw.dll
  2. Klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie "Lösung reinigen".
  3. Verweisen Sie auf die von WatiN bereitgestellte Interop.SHDocVw.dll
  4. Erstellen Sie Ihre Lösung.

Hoffe das hilft.

UPDATE: Nick Jones ist richtig. Dies sollte kein Problem sein, wenn Sie NuGet verwenden ... aber ich habe diese Meldung auch erhalten, wenn Sie MvcContrib.Mvc3.TestHelper-ci verwenden. Auf den ersten Blick scheinen die '-ci'-Pakete der richtige Weg zu sein, aber ich habe mich aus zwei Gründen für das MvcContrib.WatiN-Paket entschieden.

1) Ich erhalte nicht die Fehlermeldung "Datei oder Assembly konnte nicht geladen werden"

2) Das MvcContrib.Mvc3.TestHelper-ci verwendet eine alte Version von WatiN.Core.dll (1.3.0.4000), während das MvcContrib.WatiN-Paket eine neuere Version (2.0.0.99) verwendet.

MoMo
quelle
41
Außerdem musste ich beim Hinzufügen der Referenz die Option für Interop-Typen einbetten auf false ändern und die Option Lokal kopieren auf true setzen.
Darragh
9
In NUnit mussten wir auch das Attribut [RequiresSTA] zu unserem Testgerät hinzufügen.
Amir
@MoMo Bitte nicht, dass Darragh Kommentar zu Ihrer Antwort hinzugefügt werden sollte. Ändern Sie eingebettete Interop-Typen in false
Pomster
122

Wenn Sie WatiN mit NuGet in VS2010 installiert und referenziert haben, sollten Sie bereits über die richtigen Referenzen verfügen, damit diese nicht entfernt und erneut hinzugefügt werden müssen. Sie müssen jedoch die Einstellung "Interop-Typen einbetten" in der Interop.SHDocVw-Referenz auf "Falsch" ändern.

Nick Jones
quelle
3
Danke, das hat es für mich behoben. Ich musste auch [RequiresSTA] hinzufügen, wie in der anderen Antwort angegeben.
Schmied
+1 Das hat es auch für mich behoben. (Ich verwende das NuGet-Paket in VS2010).
JTech
Das hat bei mir funktioniert. Stellen Sie sicher, dass Sie nach dem Ändern der Einstellung neu erstellen.
Rsbarro
kämpfe dies seit 2 Tagen. das war's.
Brian
32

Überprüfen Sie die Eigenschaften der Referenz "Interop.SHDocVw.dll". Ändern Sie die "Interop-Typen einbetten" in "Falsch".

Das Problem ist, dass die DLL-Datei nicht in Ihren bin-Ordner kopiert wird. Aber nach dieser Einstellung wird es richtig gemacht.

Ich hatte den gleichen Fehler und jetzt funktioniert es gut.

adeel41
quelle