2010-02-18 22 views
6

Estoy usando el script de Windows para algún tipo de aplicación de instalación y estoy creando accesos directos en el menú de inicio con él. Este problema surgió cuando cambié al entorno x64 (win7 ultimate x64 + vs2010)utilizando Windows Script Host

Agregué una referencia al Windows Script Host Object Model (desde c: \ windows \ syswow64 \ wshom.ocx), generó Interop.IWshRuntimeLibrary dll.

Agregué 'using IWshRuntimeLibrary;' a mis archivos .cs, pero cuando intenté crear

WshShell sh = new WshShellClass(); 

lanza una excepción:

No se pudo cargar el archivo o ensamblado 'Interop.IWshRuntimeLibrary, Version = 1.0.0.0, Culture = neutral , PublicKeyToken = null 'o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

Supongo que necesitaría la versión de 64 bits de ese wshom.ocx para que esto funcione, pero no sé qué debería probar.

O simplemente voy a volcar cosas de Windows Script, pero necesito otra forma de crear accesos directos del menú de inicio desde la aplicación .net.

Respuesta

6

Parece que .NET necesita todos los ensamblados para ser del mismo 32 bits o 64 bits, y no le permitirá mezclar y combinar. Entonces, si su aplicación estaba funcionando en 32 bits, debería intentar configurar las opciones del compilador (en las propiedades del proyecto) para generar explícitamente una aplicación "x86" (es decir, de 32 bits) (que debería ejecutarse tanto en 32 bits como en 64). -poco). Esto puede ser más fácil que rastrear una versión de 64 bits del servidor de secuencias de comandos.

Tenga en cuenta que la opción del compilador predeterminado parece ser "Cualquiera", que ejecutará el ensamblado .NET como de 64 bits en un sistema operativo de 64 bits y 32 bits en sistemas operativos de 32 bits.

+1

+1 Andy buen trabajo. Me encuentro con este mismo problema al actualizar una solución de VS 2008 a VS 2010 cuando se ejecuta en x64. Aunque las versiones VS 2008 y VS 2010 se compilan en 'AnyCPU', solo la versión VS 2008 se ejecutó correctamente. Cambiar la versión VS 2010 a 'x86' sí lo solucionó, gracias a Dios. El misterio sigue siendo la razón por la cual la versión VS 2008 se ejecuta correctamente en mi máquina x64 cuando se dirige a 'AnyCPU', pero estoy contento de que esté funcionando ahora. Gracias Andy! –

+0

ni idea de por qué sucede esto. Obteniendo el mismo problema. Necesito "AnyCPU" para trabajar. –

Cuestiones relacionadas