2010-02-18 12 views
6

Sto usando Windows script host per qualche tipo di applicazione di installazione e sto creando scorciatoie nel menu di avvio con esso. Questo problema si verificava quando passavo all'ambiente x64 (win7 ultimate x64 + vs2010)utilizzando Windows Script Host

Ho aggiunto un riferimento a Windows Script Host Object Model (da c: \ windows \ syswow64 \ wshom.ocx), ha generato Interop.IWshRuntimeLibrary dll.

Ho aggiunto "utilizzando IWshRuntimeLibrary;" ai miei file Cs, ma quando ho cercato di creare

WshShell sh = new WshShellClass(); 

viene generata un'eccezione:

Impossibile caricare il file o l'assembly 'Interop.IWshRuntimeLibrary, Version = 1.0.0.0, Culture = neutral , PublicKeyToken = null 'o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato.

Suppongo che avrei bisogno della versione a 64 bit di quel wshom.ocx perché funzioni, ma non so cosa dovrei provare.

Oppure eseguirò il dump di Windows Script, ma ho bisogno di un altro modo per creare scorciatoie dal menu Start dall'applicazione .net.

risposta

6

Sembra che .NET abbia bisogno che tutti gli assiemi siano gli stessi a 32 o 64 bit e che non ti consentano di combinare. Quindi se la tua app funzionava a 32-bit, dovresti provare a impostare le opzioni del compilatore (nelle proprietà del progetto) per produrre in modo esplicito un'applicazione "x86" (cioè a 32 bit) (che dovrebbe essere eseguita su 32-bit e 64 -po). Questo potrebbe essere più semplice del rintracciare una versione a 64 bit dell'host di scripting.

Si noti che l'opzione predefinita del compilatore sembra essere "Qualsiasi", che eseguirà l'assembly .NET come 64-bit quando su un sistema operativo a 64 bit e 32 bit su sistemi operativi a 32 bit.

+1

+1 Andy bel lavoro. Ho riscontrato lo stesso problema durante l'aggiornamento di una soluzione da VS 2008 a VS 2010 durante l'esecuzione su x64. Anche se le versioni VS 2008 e VS 2010 sono entrambe compilate con 'AnyCPU', solo la versione VS 2008 funzionava correttamente. Passare la versione di VS 2010 a 'x86' ha risolto il problema, grazie al cielo. Il mistero rimane il motivo per cui la versione di VS 2008 gira correttamente sulla mia macchina x64 quando il targeting 'AnyCPU', ma sono contento che funzioni ora. Grazie Andy! –

+0

non ho idea del perché questo sta accadendo. Ottenere lo stesso problema. Ho bisogno di "AnyCPU" per funzionare. –

Problemi correlati