2010-02-18 59 views
6

我正在使用Windows腳本主機的某種安裝程序應用程序,我在它的開始菜單中創建快捷方式。當我切換到x64環境(win7終極x64 + vs2010)時出現了這個問題使用Windows腳本主機

我添加了對Windows腳本宿主對象模型的引用(來自c:\ windows \ syswow64 \ wshom.ocx),它生成了Interop.IWshRuntimeLibrary DLL。

我加'使用IWshRuntimeLibrary;'我的.cs文件,但是當我試圖創建

WshShell sh = new WshShellClass(); 

它拋出一個異常:

無法加載文件或程序集「Interop.IWshRuntimeLibrary,版本= 1.0.0.0,文化=中性,PublicKeyToken = null'或它的一個依賴關係。試圖加載格式不正確的程序。

我認爲我需要64位版本的wshom.ocx才能工作,但我不知道該怎麼辦。

或者我只是轉儲Windows腳本的東西,但我需要另一種方式來創建.net應用程序的開始菜單快捷方式。

回答

6

看來,.NET需要所有程序集都是相同的32位或64位,並且不會讓你混搭。因此,如果您的應用程序使用32位,則應該嘗試設置編譯器選項(在項目屬性中)以顯式生成「x86」(即32位)應用程序(應該在32位和64位上運行位)。這可能比追蹤64位版本的腳本主機更容易。

請注意,默認的編譯器選項似乎是「Any」,它將在64位操作系統上運行.NET程序集爲64位,在32位操作系統上運行32位。

+1

+1 Andy Andy nice work。在x64上運行時,當從VS 2008升級到VS 2010時,我遇到了同樣的問題。即使VS 2008和VS 2010版本都構建爲'AnyCPU',但只有VS 2008版本可以正常運行。切換VS 2010版本到'x86'確實修復它,謝天謝地。神祕的事實仍然證明,爲什麼VS 2008版本在我的x64機器上正確運行時瞄準'AnyCPU',但我很高興它現在正在運行。謝謝安迪! – 2010-05-08 14:27:07

+0

不知道爲什麼會發生這種情況。獲得同樣的問題。我需要「AnyCPU」才能工作。 – 2012-09-11 20:16:38

相關問題