web-dev-qa-db-fra.com

L'erreur WatiN n'a pas pu charger l'assemblage

J'obtiens l'erreur WatiN suivante:

Exception non gérée: System.IO.FileLoadException: impossible de charger le fichier ou l'assembly y 'Interop.SHDocVw, version = 1.1.0.0, Culture = neutre, PublicKeyToken = db7cfd3acb5 ad44e' ou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040) Nom de fichier: 'Interop.SHDocVw, Version = 1.1.0.0, Culture = neutral, PublicKeyToken = db

J'ai copié le shDocvw.dll de System32 dans le répertoire bin mais cela me pose toujours les mêmes problèmes.

73
azamsharp

MISE À JOUR: Cette réponse a été écrite avant la sortie de Nuget et ne s'applique que si vous n'utilisez PAS Nuget pour gérer vos dépendances. Si vous utilisez Nuget, voyez la réponse par @Nick Jones

Je viens d'avoir ce problème aujourd'hui. Vous devez télécharger la dernière version de WatiN (j'utilise 2.0.10.928) et référencer le fichier Interop.SHDocVw.dll signé fourni par WatiN.

Essayez ce qui suit:

  1. Supprimer toutes les autres références à Interop.SHDocVw.dll
  2. Faites un clic droit sur votre solution et sélectionnez "Clean Solution"
  3. Référencez le fichier Interop.SHDocVw.dll fourni par WatiN
  4. Créez votre solution.

J'espère que cela t'aides.

METTRE À JOUR: Nick Jones a raison. Ce devrait ne sera pas un problème si vous utilisez NuGet .... mais je recevais également ce message lors de l'utilisation de MvcContrib.Mvc3.TestHelper-ci. À première vue, cela il semble que les packages '-ci' soient la solution mais j'ai décidé d'utiliser le package MvcContrib.WatiN pour deux raisons.

1) Je ne reçois pas le message d'erreur "Impossible de charger le fichier ou l'assemblage"

2) Le MvcContrib.Mvc3.TestHelper-ci est en utilisant une ancienne version de WatiN.Core.dll (1.3.0.4000) alors que le package MvcContrib.WatiN utilise une version plus récente (2.0.0.99)

49
MoMo

Si vous avez installé et référencé WatiN à l'aide de NuGet dans VS2010, vous devriez déjà avoir les bonnes références, donc elles n'ont pas besoin d'être supprimées et rajoutées. Mais vous devrez toujours changer le paramètre "Embed Interop Types" sur False sur la référence Interop.SHDocVw.

122
Nick Jones

Consultez les propriétés de la référence "Interop.SHDocVw.dll". Remplacez les "Types d'interopérabilité incorporés" par False.

Le problème est qu'il ne copie pas le fichier dll dans votre dossier bin. Mais après ce réglage, il le fera correctement.

J'ai eu la même erreur, et maintenant ça marche bien.

31
adeel41