73

I am getting the following WatiN error:

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembl y 'Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=db7cfd3acb5 ad44e' or one of its dependencies. The located assembly's manifest definition do es not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=db

I copied the shDocvw.dll from System32 to the bin directory but still it is giving me the same problems.

Raktim Biswas
  • 4,011
  • 5
  • 27
  • 32
azamsharp
  • 19,710
  • 36
  • 144
  • 222
  • 4
    I installed MvcContrib.Mvc3.WatiN-ci using NuGet and I received the same error. This is the first time I decided to install someting though NuGet...I thought these problems were soemthing NuGet was supposed to resolve? – Darragh Mar 15 '11 at 00:30

3 Answers3

123

If you've installed and referenced WatiN using NuGet in VS2010, you should already have the correct references, so they don't need to be removed and re-added. But you will still need to change the "Embed Interop Types" setting to False on the Interop.SHDocVw reference.

Nick Jones
  • 4,395
  • 6
  • 33
  • 44
49

UPDATE: This answer was written before Nuget was released and applies only if you are NOT using Nuget to manage your dependencies. If you are using Nuget see the answer by @Nick Jones

I just had this issue today. You need to download the latest version of WatiN (I'm using 2.0.10.928) and reference the signed Interop.SHDocVw.dll that is provided by WatiN.

Try the follwoing:

  1. Remove all other References to Interop.SHDocVw.dll
  2. Right Click your solution and select 'Clean Solution'
  3. Reference the Interop.SHDocVw.dll that is provided by WatiN
  4. Build your solution.

Hope this helps.

UPDATE: Nick Jones is correct. This should not be an issue if you are using NuGet....but I was also getting this message when using MvcContrib.Mvc3.TestHelper-ci. At first glance it seems like the '-ci' packages is the way to go but I decided to use the MvcContrib.WatiN package for two reasons.

1) I don't get the "Could not load file or assembly" error message

2) The MvcContrib.Mvc3.TestHelper-ci is using an old version of WatiN.Core.dll (1.3.0.4000) where as the MvcContrib.WatiN package is using a newer version (2.0.0.99)

Community
  • 1
  • 1
MoMo
  • 8,149
  • 3
  • 35
  • 31
  • 41
    Additionally, when I added the refernece, I had to change the option for Embed Interop Types to false, and set the Copy Local option to true. – Darragh Mar 15 '11 at 00:53
  • 9
    In NUnit, we also had to add the [RequiresSTA] attribute to our testfixture. – Amir Apr 20 '11 at 15:27
  • @MoMo Please not that Darragh comment should be added to your answer. Change Embed Interop Types to false – Pomster Apr 06 '16 at 13:57
32

Check out the Properties of the Reference "Interop.SHDocVw.dll". Change the "Embed Interop Types" to False.

The problem is that it is not copying the dll file in your bin folder. But after this setting, it will do it properly.

I had the same error, and now its working fine.

adeel41
  • 3,123
  • 1
  • 29
  • 25