2011-03-25 22 views
38

Acabo de recibir el siguiente error al ejecutar mis pruebas WatIn.WatiN System.IO.FileNotFoundException Interop.SHDocVw

System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado 'Interop.SHDocVw, Version = 1.1.0.0, Culture = neutral, PublicKeyToken = db7cfd3acb5ad44e' o uno de sus dependencias. El sistema no puede encontrar el archivo especificado.

He buscado en la web y he intentado las siguientes soluciones, ninguna de las cuales funciona.

¿Alguien puede ayudar?

+16

En Visual Studio 2010 Este error puede ocurrir si la referencia a Interop.SHDocVw tiene su 'set Insertar Interop Tipos True. Debe desactivar esa opción y asegurarse de que la opción 'Copiar local' esté configurada en True. Más detalles en http://stackoverflow.com/questions/3635716/visual-studio-copy-dll-refrences-to-output-folder/3636732#3636732 –

+2

Ir al explorador de soluciones, haga clic en el archivo DLL de interoperabilidad, en las propiedades de cambiar " Incrustar tipos de interoperabilidad "a FALSO. – scott

+1

Esto no funcionó, vea mi pregunta en; http://stackoverflow.com/questions/8728486/getting-started-watin – dannyrosalex

Respuesta

2

Siempre termino recompilando watin por lo que no está firmado, ya que no pude hacer ninguna de las soluciones sugeridas tampoco.

Puede obtener el código fuente aquí: http://watin.org/

Abrir la solución en la carpeta \ source \ src (hay VS2008 y versiones VS2010), abrir los dos proyectos y vaya propiedades -> Firma, desactive 'firmar el ensamblado ', y construye la solución.

Debería obtener dos archivos DLL en \ source \ src \ Core \ bin (WatiN.Core.dll e Interop.SHDocVw.dll) - simplemente cópielos en su proyecto y deberían funcionar bien.

+0

Hola, descargué el código, abrí el sln VS210, abrí las propiedades de cada proyecto (pruebas de núcleo y unidad) y obtuve el siguiente error al intentar crear alguna sugerencia. error de acceso amigo fue concedida a 'WatiN.Core.UnitTests, PublicKey = BLA', pero el conjunto de salida se llama 'WatiN.Core.UnitTests, versión = 2.0.50.1179, Culture = neutral, PublicKeyToken = null '. Intente agregar una referencia a 'WatiN.Core.UnitTests, PublicKey = BLA cambiando el nombre del conjunto de salida para que coincida. \t C: \ Users \ gilbertl \ Descargas \ WatiN-2.0.50.1179 (1) \ WatiN-2.0.50.1179-net-2.0 \ source \ src \ Core \ bin \ WatiN.Core.dll –

+0

Oh, sí, lo siento, se olvidó de ese. Seleccione 'Mostrar todos los archivos' para el proyecto Core, luego abra Propiedades -> AssemblyInfo.cs. Cambie la línea que dice '[assembly: InternalsVisibleTo ("WatiN.Core.UnitTests, [lo] ... '' a [assembly: InternalsVisibleTo (".") WatiN.Core.UnitTests] ', y vuelve a intentarlo –

+0

Por cierto, si logras que la solución de Jesús funcione, lo haría, esto es un poco molesto de hacer, y estoy seguro de que no es necesario. –

2

Necesita el archivo Interop.ShDocVw.dll que debería haber venido con Watin, puede que tenga que agregarlo a su solución de estudio visual o al mismo directorio que la dll Watin si aún no está allí. En el caso de que lo tenga, asegúrese de tener la versión correcta.

+0

Hola, gracias por la respuesta. He agregado el Interop.ShDocVw.dll que se descargó con Watin. Hice esto haciendo clic derecho en las referencias en VS y agregando el archivo descargado. –

+1

Además, al compilar, es posible que tenga que cambiar una opción para la solución que copia las DLL de referencia en las carpetas bin/debug o bin/release, esto es lo que me sucedió anteriormente pero no con Watin. –

4

Tuve este problema y lo solucioné agregando manualmente el Interop.ShDocVw.dll en el directorio de salida.

0

Si está utilizando Visual Studio TestTools, debe configurar DeploymentAttribute para resolver este problema.

Ejemplo:

[DeploymentItem(@"your_path\Interop.SHDocVw.dll")] 
public class WatinTestSuite { 

... 

} 
76

Has probado esto:

Ir al explorador de soluciones, haga clic en el archivo DLL de interoperabilidad, en las propiedades de cambio "Insertar tipos de interoperabilidad" FALSO.

Es mejor usar el complemento NuGet para .net studio y luego agregar una referencia a wattin a través de "Agregar referencia de paquete de biblioteca".

+2

¡Funcionó como un amuleto, gracias! – joeriks

+1

Anteriormente había descargado WatiN manualmente y todo estaba funcionando. Acabo de sacar algo de NuGet y todo dejó de funcionar. Usando su sugerencia miré cómo se usaba el dll de interoperabilidad y se había predeterminado a Insertar tipos de interoperabilidad en Falso. La instalación de NuGet está obviamente rota para WatiN, pero tu consejo lo resolvió todo. – Bronumski

+1

Acabo de comenzar a usar WatIn. Lo instalé con NuGet y encontré este problema. Tu solución funcionó perfectamente. Supongo que esto es solo un problema para los proyectos de prueba basados ​​en .Net 4. La opción de incrustar tipos de interoperabilidad en el ensamblaje principal es una característica de .Net 4, creo. ¡Gracias por la ayuda! – dariom

7

Estableciendo Interop.SHDocVw, Microsoft.mshtml dlls 'Embed Interop Types propiedad a False;

Por supuesto Visual Studio le daría advertencias sobre cómo enmendar.

+0

Hola Olanrewaju (¡bienvenido a StackOverflow!), Esta respuesta no es muy clara. ¿Podrías explicar un poco más? –

+0

Esto es lo que hice para resolver mi problema, vea allí también http://bhameyie.com/2011/10/09/watin-annoying-interop-issue/ –

+0

No funcionó para mí ... – Jack

0

En mi caso, probé todas las soluciones sugeridas y no funcionó.Terminé cerrando y volviendo a abrir Visual Studio 2015 con privilegios de administrador, y luego compilé la solución exitosamente.

Espero que ayude a alguien.

Cuestiones relacionadas