使用Windows脚本宿主

我正在使用Windows脚本主机用于某种安装程序应用程序,我正在使用它在开始菜单中创建快捷方式。 当我切换到x64环境时出现此问题(win7 ultimate x64 + vs2010)

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

我添加了’using IWshRuntimeLibrary;’ 到我的.cs文件,但是当我尝试创建时

WshShell sh = new WshShellClass(); 

它引发了一个exception:

无法加载文件或程序集“Interop.IWshRuntimeLibrary,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。 尝试加载格式不正确的程序。

我假设我需要64位版本的wshom.ocx来实现这一点,但我不知道应该尝试什么。

或者我只是转储Windows Script的东西,但我需要另一种方法来从.net应用程序创建开始菜单快捷方式。

似乎.NET需要所有程序集都是相同的32位或64位,并且不会让你混合和匹配。 因此,如果您的应用程序在32位工作,您应该尝试设置编译器选项(在项目属性中)以显式生成“x86”(即32位)应用程序(应该在32位和64位上运行)位)。 这可能比跟踪64位版本的脚本主机更容易。

请注意,默认编译器选项似乎是“Any”,它将在64位操作系统上以64位运行.NET程序集,在32位操作系统上运行32位。